class Aws::Json::ErrorHandler
Public Instance Methods
call(context)
click to toggle source
@param [Seahorse::Client::RequestContext] context @return [Seahorse::Client::Response]
# File lib/aws-sdk-core/json/error_handler.rb, line 7 def call(context) @handler.call(context).on(300..599) do |response| response.error = error(context) response.data = nil end end
Private Instance Methods
error_code(json, context)
click to toggle source
# File lib/aws-sdk-core/json/error_handler.rb, line 25 def error_code(json, context) code = json['__type'] code ||= json['code'] code ||= context.http_response.headers['x-amzn-errortype'] if code code.split('#').last else http_status_error_code(context) end end
error_message(code, json)
click to toggle source
# File lib/aws-sdk-core/json/error_handler.rb, line 36 def error_message(code, json) if code == 'RequestEntityTooLarge' 'Request body must be less than 1 MB' else json['message'] || json['Message'] || '' end end
extract_error(body, context)
click to toggle source
# File lib/aws-sdk-core/json/error_handler.rb, line 16 def extract_error(body, context) json = Json.load(body) code = error_code(json, context) message = error_message(code, json) [code, message] rescue Json::ParseError [http_status_error_code(context), ''] end