class Aws::ErrorHandler
@api private
def build_error(context, code, message, data)
def build_error(context, code, message, data) errors_module = context.client.class.errors_module errors_module.error_class(code).new(context, message, data) end
def error(context)
def error(context) body = context.http_response.body_contents # This is not correct per protocol tests. Some headers will determine the error code. # If the body is empty, there is still potentially an error code from the header, but # we are making a generic http status error instead. In a new major version, we should # always try to extract header, and during extraction, check headers and body. if body.empty? code, message, data = http_status_error(context) else code, message, data = extract_error(body, context) end build_error(context, code, message, data) end
def http_status_error(context)
def http_status_error(context) [http_status_error_code(context), '', EmptyStructure.new] end
def http_status_error_code(context)
def http_status_error_code(context) status_code = context.http_response.status_code { 302 => 'MovedTemporarily', 304 => 'NotModified', 400 => 'BadRequest', 403 => 'Forbidden', 404 => 'NotFound', 412 => 'PreconditionFailed', 413 => 'RequestEntityTooLarge', }[status_code] || "Http#{status_code}Error" end