Sha256: 73c9ed40498898f76a399c9a435152541f724c644bfac46ca4a396bc944e0387

Contents?: true

Size: 854 Bytes

Versions: 12

Compression:

Stored size: 854 Bytes

Contents

module Aws
  # @api private
  class ResponseHandler

    def initialize(parser)
      @parser = parser
    end

    attr_accessor :handler

    def call(context)
      @handler.call(context).on(200..299) do |response|
        rules = context.operation.output
        response.error = nil
        response.data = case
          when rules.raw_payload? then empty_struct(rules)
          when rules.payload then parse_payload(rules, context)
          else parse(rules, context)
        end
      end
    end

    def empty_struct(rules)
      Structure.new(rules.members.keys)
    end

    def parse_payload(rules, context)
      data = empty_struct(rules)
      data[rules.payload] = parse(rules.payload_member, context)
      data
    end

    def parse(rules, context)
      @parser.parse(rules, context.http_response.body_contents)
    end

  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
aws-sdk-core-2.0.0.rc14 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc13 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc12 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc11 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc10 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc9 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc8 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc7 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc6 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc5 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc4 lib/aws/response_handler.rb
aws-sdk-core-2.0.0.rc3 lib/aws/response_handler.rb