X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/92b60e19ad1f27ac11c4b6269d5acdfa6cc1cbc4..73e1bfac301b9285f734374abe84d8146897c585:/services/api/app/controllers/application_controller.rb diff --git a/services/api/app/controllers/application_controller.rb b/services/api/app/controllers/application_controller.rb index 0c7578a015..434b09572b 100644 --- a/services/api/app/controllers/application_controller.rb +++ b/services/api/app/controllers/application_controller.rb @@ -24,7 +24,7 @@ class ApplicationController < ActionController::Base def show if @object - render json: @object.as_api_response(:superuser) + render json: @object.as_api_response else render_not_found("object not found") end @@ -37,7 +37,9 @@ class ApplicationController < ActionController::Base end def update - attrs_to_update = resource_attrs.reject { |k,v| [:kind,:etag].index k } + attrs_to_update = resource_attrs.reject { |k,v| + [:kind, :etag, :href].index k + } if @object.update_attributes attrs_to_update show else @@ -67,7 +69,7 @@ class ApplicationController < ActionController::Base :with => :render_not_found rescue_from ActionController::UnknownController, :with => :render_not_found - rescue_from ActionController::UnknownAction, + rescue_from AbstractController::ActionNotFound, :with => :render_not_found rescue_from ArvadosModel::PermissionDeniedError, :with => :render_error @@ -81,7 +83,8 @@ class ApplicationController < ActionController::Base else errors = [e.inspect] end - render json: { errors: errors }, status: 422 + status = e.respond_to?(:http_status) ? e.http_status : 422 + render json: { errors: errors }, status: status end def render_not_found(e=ActionController::RoutingError.new("Path not found")) @@ -238,6 +241,7 @@ class ApplicationController < ActionController::Base end def thread_with_auth_info + Thread.current[:api_url_base] = root_url.sub(/\/$/,'') + '/arvados/v1' begin user = nil api_client = nil @@ -329,7 +333,7 @@ class ApplicationController < ActionController::Base :self_link => "", :next_page_token => "", :next_link => "", - :items => @objects.as_api_response(:superuser) + :items => @objects.as_api_response(nil) } render json: @object_list end @@ -351,4 +355,9 @@ class ApplicationController < ActionController::Base order: { type: 'string', required: false } } end + + def client_accepts_plain_text_stream + (request.headers['Accept'].split(' ') & + ['text/plain', '*/*']).count > 0 + end end