Sha256: 91614acfa9208e9041e6db30fd64e8de9398f1c623877e5b78983f0cec65c439

Contents?: true

Size: 1.32 KB

Versions: 93

Compression:

Stored size: 1.32 KB

Contents

module Aws
  module S3
    module Plugins

      # A handful of Amazon S3 operations will respond with a 200 status
      # code but will send an error in the response body. This plugin
      # injects a handler that will parse 200 response bodies for potential
      # errors, allowing them to be retried.
      # @api private
      class Http200Errors < Seahorse::Client::Plugin

        class Handler < Seahorse::Client::Handler

          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

          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)
            end
          end

        end

        handler(Handler,
          step: :sign,
          operations: [
            :complete_multipart_upload,
            :copy_object,
            :upload_part_copy,
          ]
        )

      end
    end
  end
end

Version data entries

93 entries across 93 versions & 1 rubygems

Version Path
aws-sdk-s3-1.63.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.62.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.61.2 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.61.1 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.61.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.60.2 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.60.1 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.60.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.59.1 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.59.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.58.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.57.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.56.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.55.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.54.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.53.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.52.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.51.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.50.0 lib/aws-sdk-s3/plugins/http_200_errors.rb
aws-sdk-s3-1.49.0 lib/aws-sdk-s3/plugins/http_200_errors.rb