Sha256: b6bc5a3aac5b6f2b9cc3270b521773ac2c147eda9f8d3a9b7842800bf49409d0

Contents?: true

Size: 901 Bytes

Versions: 3

Compression:

Stored size: 901 Bytes

Contents

module Aws
  module Json
    class ErrorHandler < Xml::ErrorHandler

      # @param [Seahorse::Client::RequestContext] context
      # @return [Seahorse::Client::Response]
      def call(context)
        @handler.call(context).on(300..599) do |response|
          response.error = error(context)
          response.data = nil
        end
      end

      private

      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

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
aws-sdk-core-2.0.33 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.0.32 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.0.31 lib/aws-sdk-core/json/error_handler.rb