class SharkOnLambda::Middleware::JsonapiRescuer
Public Instance Methods
call!(env)
click to toggle source
# File lib/shark_on_lambda/middleware/jsonapi_rescuer.rb, line 6 def call!(env) app.call(env) rescue Errors::Base => e rescue_shark_error(e) rescue StandardError => e rescue_standard_error(e) end
Private Instance Methods
error_object(status, message)
click to toggle source
# File lib/shark_on_lambda/middleware/jsonapi_rescuer.rb, line 16 def error_object(status, message) { status: status.to_s, title: Rack::Utils::HTTP_STATUS_CODES[status], detail: message } end
error_response(status, headers, message)
click to toggle source
# File lib/shark_on_lambda/middleware/jsonapi_rescuer.rb, line 24 def error_response(status, headers, message) body = { errors: [ error_object(status, message) ] }.to_json response_body = Rack::BodyProxy.new([body]) do message.close if message.respond_to?(:close) end [status, headers, response_body] end
rescue_shark_error(error)
click to toggle source
# File lib/shark_on_lambda/middleware/jsonapi_rescuer.rb, line 38 def rescue_shark_error(error) status = error.status || 500 error_response(status, {}, error.message) end
rescue_standard_error(error)
click to toggle source
# File lib/shark_on_lambda/middleware/jsonapi_rescuer.rb, line 43 def rescue_standard_error(error) SharkOnLambda.logger.error(error.message) SharkOnLambda.logger.error(error.backtrace.join("\n")) error_response(500, {}, error.message) end