Class: AWS::Core::Response
- Inherits:
-
Object
- Object
- AWS::Core::Response
- Includes:
- AsyncHandle
- Defined in:
- lib/aws/core/response.rb
Overview
Response
Each Service has a Client class. There is one method per service operation defined on the client. These methods all return a Response object.
In addition to the response data, these responses provide metadata about the HTTP request made and the HTTP response received.
Response Data
You can access the response data for a client request using the #data method or the #[] method. Response data is a hash and #[] is a shortcut for accessing this hash.
# 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:
- #request_type - the name of the client request method
- #request_options - the hash of options passed to the client method
- #http_request - The HTTP request made
- #http_response - the HTTP response received
Given the example and response object from above:
response.request_type #=> :describe_instances
response. #=> { :instance_ids => ['i-12345678'] }
response.http_request #=> #<AWS::Core::Http::Request>
response.http_response #=> #<AWS::Core::Http::Response>
Instance Attribute Summary (collapse)
-
- (Boolean) cached
(also: #cached?)
True if the response was generated from a another cached response.
-
- (Hash) data
Returns the response data as a hash.
-
- (Float) duration
The total number of seconds taken to make the request and return the response.
-
- (AWS::Error?) error
Returns nil unless the request failed.
- - (Core::Http::Request) http_request
- - (Core::Http::Response) http_response
-
- (Hash) request_options
Returns the hash of options passed to the client request method that generated this response.
-
- (Symbol) request_type
The name of the client request method that returned this response.
-
- (Integer) retry_count
Returns the number of times the request was retried.
Instance Method Summary (collapse)
-
- (Hash?) [](key)
Provides access to the response data.
-
- (Response) initialize(http_request = nil, http_response = nil, &block)
constructor
A new instance of Response.
-
- (Boolean) network_error?
Returns
trueif the http request failed due to a networking issue. -
- (Boolean) safe_to_retry?
Returns
falseif it is not safe to retry a request. -
- (Boolean) successful?
Returns true if there is no response error.
Methods included from AsyncHandle
#on_complete, #on_failure, #on_success, #signal_failure, #signal_success
Constructor Details
- (Response) initialize(http_request = nil, http_response = nil, &block)
A new instance of Response
104 105 106 107 108 109 110 111 112 |
# File 'lib/aws/core/response.rb', line 104 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 build_request if @request_builder && !http_request end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
- (Object) method_missing(*args, &block) (protected)
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.
183 184 185 |
# File 'lib/aws/core/response.rb', line 183 def method_missing *args, &block Core::Data.new(data).send(*args, &block) end |
Instance Attribute Details
- (Boolean) cached Also known as: cached?
True if the response was generated from a another cached response.
85 86 87 |
# File 'lib/aws/core/response.rb', line 85 def cached @cached end |
- (Hash) data
Returns the response data as a hash.
64 65 66 |
# File 'lib/aws/core/response.rb', line 64 def data @data end |
- (Float) duration
The total number of seconds taken to make the request and return the response.
100 101 102 |
# File 'lib/aws/core/response.rb', line 100 def duration @duration end |
- (AWS::Error?) error
Returns nil unless the request failed. Normally this will be nil unless you are using the Asynchronous interface.
92 93 94 |
# File 'lib/aws/core/response.rb', line 92 def error @error end |
- (Core::Http::Request) http_request
78 79 80 |
# File 'lib/aws/core/response.rb', line 78 def http_request @http_request end |
- (Core::Http::Response) http_response
81 82 83 |
# File 'lib/aws/core/response.rb', line 81 def http_response @http_response end |
- (Hash) request_options
Returns the hash of options passed to the client request method that generated this response.
75 76 77 |
# File 'lib/aws/core/response.rb', line 75 def @request_options end |
- (Symbol) request_type
The name of the client request method that returned this response.
71 72 73 |
# File 'lib/aws/core/response.rb', line 71 def request_type @request_type end |
- (Integer) retry_count
Returns the number of times the request was retried.
96 97 98 |
# File 'lib/aws/core/response.rb', line 96 def retry_count @retry_count end |
Instance Method Details
- (Hash?) [](key)
Provides access to the response data. This is a short-cut
for calling response.data[key].
119 120 121 |
# File 'lib/aws/core/response.rb', line 119 def [] key data[key] end |
- (Boolean) network_error?
Returns true if the http request failed due to
a networking issue.
130 131 132 |
# File 'lib/aws/core/response.rb', line 130 def network_error? http_response.network_error? end |
- (Boolean) safe_to_retry?
Returns false if it is not safe to retry a
request. This happens when the http request body is an IO
object that can not be rewound and re-streamed.
163 164 165 166 |
# File 'lib/aws/core/response.rb', line 163 def safe_to_retry? @http_request.body_stream.nil? or @http_request.body_stream.respond_to?(:rewind) end |
- (Boolean) successful?
Returns true if there is no response error.
124 125 126 |
# File 'lib/aws/core/response.rb', line 124 def successful? error.nil? end |