module AWS::Core::Client::QueryXML

def self.extended base

Other tags:
    Private: -
def self.extended base
  base.send(:include, ErrorParser)
  base.send(:define_parsers)
end

def define_client_method method_name, operation_name

def define_client_method method_name, operation_name
  add_client_request_method(method_name) do
    configure_request do |request, options|
      now = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
      request.headers['Content-Type'] = 
        'application/x-www-form-urlencoded; charset=utf-8'
      request.http_method = 'POST'
      request.add_param 'Timestamp', now
      request.add_param 'Version', self.class::API_VERSION
      request.add_param 'Action', operation_name
      parser = self.class.option_parsers[method_name]
      parser.request_params(options).each do |param|
        request.add_param(param)
      end
    end
    process_response do |response|
      parser = self.class.xml_parsers[method_name]
      response.data = parser.parse(response.http_response.body)
    end
    simulate_response do |response|
      parser = self.class.xml_parsers[method_name]
      response.data = parser.simulate
    end
  end
end

def define_parsers

and defines one request method per operation.
configuration (yaml configuration file found in lib/api_config/)
Enumerates through the operations specified in the API
def define_parsers
  api_config[:operations].each do |op|
    method_name = op[:method]
    option_parsers[method_name] = OptionGrammar.customize(op[:inputs])
    xml_parsers[method_name] = XML::Parser.new(op[:outputs])
  end
end

def option_parsers

Other tags:
    Private: -

Returns:
  • (Hash) - Returns a hash option
def option_parsers
  @option_parsers ||= {}
end

def xml_parsers

Other tags:
    Private: -

Returns:
  • (Hash) - Returns a hash of xml
def xml_parsers
  @xml_parsers ||= {}
end