Sha256: 7122c520a9cddd5604dd0b6cf7cb0a306cbaca337eae136f4b0cb0f42dd51946

Contents?: true

Size: 1.03 KB

Versions: 6

Compression:

Stored size: 1.03 KB

Contents

module Aws
  # @api private
  class RequestHandler

    def initialize(serializer)
      @serializer = serializer
    end

    attr_accessor :handler

    def call(context)
      setup_request(context)
      serialize_params(context) if serialize_params?(context)
      @handler.call(context)
    end

    def setup_request(context)
      @serializer.setup_request(context)
    end

    def serialize_params(context)
      input = context.operation.input
      rules = input.payload_member
      if input.payload
        params = context.params[input.payload] || {}
      else
        params = {}
        rules.members.keys.each do |param_name|
          param_name = param_name.to_sym
          if context.params.include?(param_name)
            params[param_name] = context.params[param_name]
          end
        end
      end
      @serializer.serialize_params(context, rules, params)
    end

    def serialize_params?(context)
      rules = context.operation.input
      !(rules.raw_payload? || rules.payload_member.empty?)
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
aws-sdk-core-2.0.0.rc10 lib/aws/request_handler.rb
aws-sdk-core-2.0.0.rc9 lib/aws/request_handler.rb
aws-sdk-core-2.0.0.rc8 lib/aws/request_handler.rb
aws-sdk-core-2.0.0.rc7 lib/aws/request_handler.rb
aws-sdk-core-2.0.0.rc6 lib/aws/request_handler.rb
aws-sdk-core-2.0.0.rc5 lib/aws/request_handler.rb