class Aws::Json::ErrorHandler
def call(context)
-
(Seahorse::Client::Response)
-
Parameters:
-
context
(Seahorse::Client::RequestContext
) --
def call(context) @handler.call(context).on(300..599) do |response| response.error = error(context) response.data = nil end end
def error(context)
def error(context) error_code, error_message = extract_error(context) svc = context.client.class.name.split('::')[1] errors_module = Aws.const_get(svc).const_get(:Errors) errors_module.error_class(error_code).new(context, error_message) end
def extract_error(context)
def extract_error(context) json = MultiJson.load(context.http_response.body_contents) error_code = json['code'] || json['__type'] error_code ||= context.http_response.headers['x-amzn-errortype'] error_code = error_code.split('#').last if error_code == 'RequestEntityTooLarge' error_message = 'Request body must be less than 1 MB' else error_message = json['message'] || json['Message'] end [error_code, error_message] end