class AWS::Core::Options::XMLSerializer

validated before returning XML.
a hash of request options into XML. The request options are
Given a hash of serialization rules, an XMLSerializer can convert

def hash_members_xml hash, rules, builder

def hash_members_xml hash, rules, builder
  xml_ordered_members(rules).each do |member_name|
    if hash.key?(member_name)
      value = hash[member_name]
      to_xml(builder, member_name, rules[member_name], value)
    end
  end
end

def initialize namespace, operation_name, operation

Parameters:
  • operation (Hash) --
  • operation_name (String) --
  • namespace (String) --
def initialize namespace, operation_name, operation
  @namespace = namespace
  @operation_name = operation_name
  @rules = operation[:inputs]
  @http = operation[:http]
  @validator = Validator.new(rules)
end

def serialize request_options

Returns:
  • (String) - Returns an string of the request parameters

Parameters:
  • request_options (Hash) -- A hash of already validated

Overloads:
  • serialize!(request_options)
def serialize request_options
  if http && http[:request_payload]
    payload = http[:request_payload]
    root_node_name = rules[payload][:name]
    params = request_options[payload]
    rules = self.rules[payload][:members]
  else
    root_node_name = "#{operation_name}Request"
    params = request_options
    rules = self.rules
  end
  xml = Nokogiri::XML::Builder.new
  xml.send(root_node_name, :xmlns => namespace) do |xml|
    hash_members_xml(params, rules, xml)
  end
  xml.doc.root.to_xml
end

def to_xml builder, opt_name, rules, value

def to_xml builder, opt_name, rules, value
  xml_name = rules[:name]
  xml_name ||= opt_name.is_a?(String) ?
    opt_name : Inflection.class_name(opt_name.to_s)
  case value
  when Hash
    builder.send(xml_name) do |builder|
      hash_members_xml(value, rules[:members], builder)
    end
  when Array
    builder.send(xml_name) do
      value.each do |member_value|
        to_xml(builder, 'member', rules[:members], member_value)
      end
    end
  else builder.send(xml_name, value)
  end
end

def xml_ordered_members members

def xml_ordered_members members
  members.inject([]) do |list,(member_name, member)|
    list << [member[:position] || 0, member_name]
  end.sort_by(&:first).map(&:last)
end