Sha256: 590cb427aece73fda47513cd530119409da3d712c977b2ca8120984b2fac0ec4

Contents?: true

Size: 1.12 KB

Versions: 1094

Compression:

Stored size: 1.12 KB

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(body, context)
        json = Json.load(body)
        code = error_code(json, context)
        message = error_message(code, json)
        [code, message]
      rescue Json::ParseError
        [http_status_error_code(context), '']
      end

      def error_code(json, context)
        code = json['__type']
        code ||= json['code']
        code ||= context.http_response.headers['x-amzn-errortype']
        if code
          code.split('#').last
        else
          http_status_error_code(context)
        end
      end

      def error_message(code, json)
        if code == 'RequestEntityTooLarge'
          'Request body must be less than 1 MB'
        else
          json['message'] || json['Message'] || ''
        end
      end

    end
  end
end

Version data entries

1,094 entries across 1,094 versions & 2 rubygems

Version Path
aws-sdk-core-2.11.632 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.631 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.630 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.629 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.628 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.627 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.626 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.625 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.624 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.623 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.622 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.621 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.620 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.619 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.618 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.617 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.616 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.615 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.614 lib/aws-sdk-core/json/error_handler.rb
aws-sdk-core-2.11.613 lib/aws-sdk-core/json/error_handler.rb