module AWS::Core::Client::QueryXML
def self.extended base
- 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
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
- Private: -
Returns:
-
(Hash
- Returns a hash option)
def option_parsers @option_parsers ||= {} end
def xml_parsers
- Private: -
Returns:
-
(Hash
- Returns a hash of xml)
def xml_parsers @xml_parsers ||= {} end