class Aws::S3::Plugins::Http200Errors::Handler
Public Instance Methods
call(context)
click to toggle source
# File lib/aws-sdk-s3/plugins/http_200_errors.rb, line 16 def call(context) @handler.call(context).on(200) do |response| if error = check_for_error(context) context.http_response.status_code = 500 response.data = nil response.error = error end end end
check_for_error(context)
click to toggle source
# File lib/aws-sdk-s3/plugins/http_200_errors.rb, line 26 def check_for_error(context) xml = context.http_response.body_contents if xml.match(/<Error>/) error_code = xml.match(/<Code>(.+?)<\/Code>/)[1] error_message = xml.match(/<Message>(.+?)<\/Message>/)[1] S3::Errors.error_class(error_code).new(context, error_message) elsif !xml.match(/<\w/) # Must have the start of an XML Tag # Other incomplete xml bodies will result in XML ParsingError Seahorse::Client::NetworkingError.new( S3::Errors .error_class('InternalError') .new(context, 'Empty or incomplete response body') ) end end