class AWS::Core::Response

Response

Each service request returns a response object. Responses provide access to response data and request/response metadata.

Response Data

Each response has a hash of data that represents the data returned by the service. You can get at this data by calling {data} (you can also use the {#[]} method as a shortcut)

# make a request to describe one instance
ec2 = AWS::EC2.new
response = ec2.client.describe_instances(:instance_ids => ['i-12345678'])

# find the instance in the response data (2 ways to get the data)
instance = response[:reservation_set].first[:instance_set].first
instance = response.data[:reservation_set].first[:instance_set].first

instance[:status] #=> 'running'

Response Metadata

In addition to the response data, there is additional information available with the response, including:

Given the example and response object from above:

response.request_type #=> :describe_instances
response.request_options #=> { :instance_ids => ['i-12345678'] }
response.http_request #=> #<AWS::Core::Http::Request>
response.http_response #=> #<AWS::Core::Http::Response>

Attributes

cached[RW]

@return [Boolean] true if the response was generated from a

another cached response.
cached?[RW]

@return [Boolean] true if the response was generated from a

another cached response.
data[RW]

@return [Hash] Returns the response data as a hash.

duration[RW]

@return [Float] The total number of seconds taken to make the

request and return the response.
error[RW]

@return [AWS::Error,nil] Returns nil unless the request failed.

Normally this will be nil unless you are using the Asynchronous 
interface.
http_request[RW]

@return [Core::Http::Request]

http_response[RW]

@return [Core::Http::Response]

request_options[RW]

@return [Hash] Returns the hash of options passed to the client

request method that generated this response.
request_type[RW]

@return [Symbol] The name of the client request method that

returned this response.
retry_count[RW]

@return [Integer] Returns the number of times the request

was retried.

Public Class Methods

new(http_request = nil, http_response = nil, &block) click to toggle source

@param [Http::Request] #http_request @param [Http::Response] #http_response

# File lib/aws/core/response.rb, line 97
def initialize http_request = nil, http_response = nil, &block
  @http_request = http_request
  @http_response = http_response
  @request_builder = block
  @data = {}
  @retry_count = 0
  @duration = 0
  rebuild_request if @request_builder && !http_request
end

Public Instance Methods

[](key) click to toggle source

Provides access to the response data. This is a short-cut for calling +response.data+.

@param [Symbol,String] key @return [Hash,nil]

# File lib/aws/core/response.rb, line 112
def [] key
  data[key]
end
cache_key() click to toggle source

@return [String] @private

# File lib/aws/core/response.rb, line 146
def cache_key
  [
    http_request.access_key_id,
    http_request.host,
    request_type,
    serialized_options
  ].join(":")
end
inspect() click to toggle source

@return [String] @private

# File lib/aws/core/response.rb, line 140
def inspect
  data.inspect
end
rebuild_request() click to toggle source

Rebuilds the HTTP request using the block passed to the initializer. This is primarily used by the client when a request must be retried (throttling, server errors, socket errors, etc). @private

# File lib/aws/core/response.rb, line 159
def rebuild_request
  @http_request = @request_builder.call
end
successful?() click to toggle source

@return [Boolean] Returns true if there is no response error.

# File lib/aws/core/response.rb, line 117
def successful?
  error.nil?
end
throttled?() click to toggle source

@return [Boolean] Returns true if the http request was throttled

by AWS.
# File lib/aws/core/response.rb, line 123
def throttled?
  if !successful? and http_response.body
    error = XML::Parser.new.parse(http_response.body)
    error = error[:error] if error[:error]
    error[:code] == "Throttling"
  else
    false
  end
end
timeout?() click to toggle source

@return [Boolean] Returns true if the http request timed out.

# File lib/aws/core/response.rb, line 134
def timeout?
  http_response.timeout?
end

Protected Instance Methods

method_missing(*args, &block) click to toggle source

@note The prefered method to get as response data is to use {#[]}.

This provides a backwards-compat layer to the old response objects where each response value had a method extended onto this object. Now all response data is accessible as a hash.

@see #[] @see data

# File lib/aws/core/response.rb, line 174
def method_missing *args, &block
  Core::Data.new(data).send(*args, &block)
end
serialize_options_array(array) click to toggle source
# File lib/aws/core/response.rb, line 196
def serialize_options_array array
  "[" + array.map{|v| serialize_options_value(v) }.join(" ") + "]"
end
serialize_options_hash(hash) click to toggle source
# File lib/aws/core/response.rb, line 182
def serialize_options_hash(hash)
  "(" + hash.keys.sort_by(&:to_s).map do |key|
    "#{key}=#{serialize_options_value(hash[key])}"
  end.join(" ") + ")"
end
serialize_options_value(value) click to toggle source
# File lib/aws/core/response.rb, line 188
def serialize_options_value(value)
  case value
  when Hash  then serialize_options_hash(value)
  when Array then serialize_options_array(value)
  else value.inspect
  end
end
serialized_options() click to toggle source
# File lib/aws/core/response.rb, line 178
def serialized_options
  serialize_options_hash(request_options)
end