Merge branch '22198-remove-href-field'
[arvados.git] / services / api / lib / common_api_template.rb
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 module CommonApiTemplate
6   def self.included(base)
7     base.acts_as_api
8     base.class_eval do
9       alias_method :as_api_response_orig, :as_api_response
10       include InstanceMethods
11     end
12     base.extend(ClassMethods)
13     base.api_accessible :common do |t|
14       t.add :kind
15       t.add :etag
16       t.add :uuid
17       t.add :owner_uuid
18       t.add :created_at
19       t.add :modified_by_user_uuid
20       t.add :modified_at
21     end
22   end
23
24   module InstanceMethods
25     # choose template based on opts[:for_user]
26     def as_api_response(template=nil, opts={})
27       if template.nil?
28         user = opts[:for_user] || current_user
29         if user.andand.is_admin and self.respond_to? :api_accessible_superuser
30           template = :superuser
31         else
32           template = :user
33         end
34       end
35       self.as_api_response_orig(template, opts)
36     end
37   end
38
39   module ClassMethods
40   end
41 end