Class: AWS::Core::Http::Request
- Inherits:
-
Object
- Object
- AWS::Core::Http::Request
- Defined in:
- lib/aws/core/http/request.rb
Overview
Base class for all service reqeusts. This class describes a basic HTTP request, but will not make one. It is consumed by a HTTP handler class that sends the actual request and parses the actual response.
Instance Attribute Summary collapse
-
#headers ⇒ CaseInsensitiveHash
Request headers.
-
#host ⇒ String
Hostname of the request.
-
#http_method ⇒ String
Returns the HTTP request method (e.g. 'GET', 'PUT', 'POST', 'HEAD' or 'DELETE').
-
#port ⇒ Integer
Returns the port the request will be made over.
-
#read_timeout ⇒ Integer
(also: #default_read_timeout)
The number of seconds the service has to respond before a timeout error is raised on the request.
-
#region ⇒ String
The region name this request is for.
-
#service_ruby_name ⇒ String
The name of the service for Signature v4 signing.
-
#uri ⇒ String
Returns the request URI (path + querystring).
-
#use_ssl ⇒ Boolean
(also: #use_ssl?)
Returns
true
if this request should be made with SSL enabled.
Instance Method Summary collapse
-
#body ⇒ String?
Returns the request body.
- #body=(body) ⇒ Object
- #body_stream ⇒ IO?
-
#body_stream=(stream) ⇒ Object
Sets the request body as an IO object that will be streamed.
- #endpoint ⇒ Object
-
#initialize ⇒ Request
constructor
Returns a new empty http request object.
-
#path ⇒ String
Returns the HTTP request path.
-
#querystring ⇒ String
Returns the HTTP request querystring.
Constructor Details
#initialize ⇒ Request
Returns a new empty http request object.
27 28 29 30 31 32 33 34 |
# File 'lib/aws/core/http/request.rb', line 27 def initialize @http_method = 'POST' @use_ssl = true @headers = CaseInsensitiveHash.new @uri = '/' @params = [] @read_timeout = 60 end |
Instance Attribute Details
#headers ⇒ CaseInsensitiveHash
Returns request headers.
48 49 50 |
# File 'lib/aws/core/http/request.rb', line 48 def headers @headers end |
#host ⇒ String
Returns hostname of the request.
37 38 39 |
# File 'lib/aws/core/http/request.rb', line 37 def host @host end |
#http_method ⇒ String
Returns the HTTP request method (e.g. 'GET', 'PUT', 'POST', 'HEAD' or 'DELETE'). Defaults to 'POST'.
45 46 47 |
# File 'lib/aws/core/http/request.rb', line 45 def http_method @http_method end |
#port ⇒ Integer
Returns the port the request will be made over. Defaults to 443 for SSL requests and 80 for non-SSL requests.
41 42 43 |
# File 'lib/aws/core/http/request.rb', line 41 def port @port end |
#read_timeout ⇒ Integer Also known as: default_read_timeout
Returns The number of seconds the service has to respond before a timeout error is raised on the request.
76 77 78 |
# File 'lib/aws/core/http/request.rb', line 76 def read_timeout @read_timeout end |
#region ⇒ String
Returns The region name this request is for. Only needs to be populated for requests against signature v4 endpoints.
55 56 57 |
# File 'lib/aws/core/http/request.rb', line 55 def region @region end |
#service_ruby_name ⇒ String
Returns The name of the service for Signature v4 signing. This does not always match the ruby name (e.g. simple_email_service and ses do not match).
72 73 74 |
# File 'lib/aws/core/http/request.rb', line 72 def service_ruby_name @service_ruby_name end |
#uri ⇒ String
Returns the request URI (path + querystring).
51 52 53 |
# File 'lib/aws/core/http/request.rb', line 51 def uri @uri end |
#use_ssl ⇒ Boolean Also known as: use_ssl?
Returns true
if this request should be made
with SSL enabled.
83 84 85 |
# File 'lib/aws/core/http/request.rb', line 83 def use_ssl @use_ssl end |
Instance Method Details
#body ⇒ String?
Calling #body on a request with a #body_stream will cause the entire stream to be read into memory.
Returns the request body.
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/aws/core/http/request.rb', line 157 def body if @body @body elsif @body_stream @body = @body_stream.read if @body_stream.respond_to?(:rewind) @body_stream.rewind else @body_stream = StringIO.new(@body) end @body else nil end end |
#body=(body) ⇒ Object
145 146 147 148 149 150 151 152 |
# File 'lib/aws/core/http/request.rb', line 145 def body= body @body = body if body headers['content-length'] = body.bytesize if body else headers.delete('content-length') end end |
#body_stream ⇒ IO?
181 182 183 184 185 186 187 188 189 |
# File 'lib/aws/core/http/request.rb', line 181 def body_stream if @body_stream @body_stream elsif @body StringIO.new(@body) else nil end end |
#body_stream=(stream) ⇒ Object
You must also set the #headers['content-length']
Sets the request body as an IO object that will be streamed.
176 177 178 |
# File 'lib/aws/core/http/request.rb', line 176 def body_stream= stream @body_stream = stream end |
#endpoint ⇒ Object
92 93 94 95 96 97 98 99 |
# File 'lib/aws/core/http/request.rb', line 92 def endpoint scheme = use_ssl ? 'https' : 'http' port = case scheme when 'https' then self.port == 443 ? '' : ":#{self.port}" when 'http' then self.port == 80 ? '' : ":#{self.port}" end "#{scheme}://#{host}#{port}" end |
#path ⇒ String
Returns the HTTP request path.
108 109 110 |
# File 'lib/aws/core/http/request.rb', line 108 def path uri.split(/\?/)[0] end |
#querystring ⇒ String
Returns the HTTP request querystring.
113 114 115 |
# File 'lib/aws/core/http/request.rb', line 113 def querystring uri.split(/\?/)[1] end |