Sha256: b383363dcec91857391e1489124e9c79ebf58d53158de71368633f6cde68aecf

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

require 'aws/core/util'
require 'aws/core/request'
require 'aws/core/connection'

module AWS
  module CallTypes

    ##
    # Implement call handling to work with the ?Action param, signing the message
    # according to whatever Signing module is included along side this module
    ##
    module ActionParam
      ##
      # For any undefined methods, try to convert them into valid AWS
      # actions and return the results
      ##
      def method_missing(name, *args)
        request = AWS::Request.new :post, self.uri, "/"
        request.params["Action"] = AWS::Util.camelcase(name.to_s)

        if args.any? && args.first.is_a?(Hash)
          insert_params_from request, args.first
        end

        send_request request
      end

      protected

      def send_request(request)
        connection = AWS::Connection.new
        connection.call finish_and_sign_request(request)
      end

      def insert_params_from(request, args = {})
        args.each do |key, value|
          request.params[key] = value
        end
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
simple_aws-0.0.1d lib/aws/call_types/action_param.rb
simple_aws-0.0.1c lib/aws/call_types/action_param.rb
simple_aws-0.0.1b lib/aws/call_types/action_param.rb