+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
module CommonApiTemplate
def self.included(base)
- base.extend(ClassMethods)
base.acts_as_api
+ base.class_eval do
+ alias_method :as_api_response_orig, :as_api_response
+ include InstanceMethods
+ end
+ base.extend(ClassMethods)
base.api_accessible :common do |t|
t.add :href
t.add :kind
t.add :modified_by_client_uuid
t.add :modified_by_user_uuid
t.add :modified_at
- t.add :updated_at
+ end
+ end
+
+ module InstanceMethods
+ # choose template based on opts[:for_user]
+ def as_api_response(template=nil, opts={})
+ if template.nil?
+ user = opts[:for_user] || current_user
+ if user.andand.is_admin and self.respond_to? :api_accessible_superuser
+ template = :superuser
+ else
+ template = :user
+ end
+ end
+ self.as_api_response_orig(template, opts)
end
end