class AWS::Core::RESTResponseParser

Given a hash of request options, a REST::RequestHandler can populate a Core::Http::Request object.

Public Class Methods

new(operation, options) click to toggle source

@api private

# File lib/aws/core/rest_response_parser.rb, line 22
def initialize operation, options
  @http = operation[:http]
  @parser =
    case options[:format]
    when :xml then XML::Parser.new(operation[:outputs])
    when :json then Core::JSONParser.new(operation[:outputs])
    else raise "unhandled format: #{options[:format].inspect}"
    end
end

Public Instance Methods

extract_data(response) click to toggle source

Given a response object, this method extract and returns a hash of response data. @param [Response] response @return [Hash]

# File lib/aws/core/rest_response_parser.rb, line 36
def extract_data response

  if payload = @http[:response_payload]
    data = { payload => response.http_response.body }
  else
    data = @parser.parse(response.http_response.body)
  end

  if header = response.http_response.headers['x-amzn-requestid']
    data[:request_id] = [header].flatten.first
  end

  # extract headers and insert into response
  (@http[:response_headers] || {}).each_pair do |name,header_name|
    if header = response.http_response.headers[header_name.downcase]
      data[name] = [header].flatten.first
    end
  end

  data

end
simulate() click to toggle source
# File lib/aws/core/rest_response_parser.rb, line 59
def simulate
  {}
end