You are viewing documentation for version 1 of the AWS SDK for Ruby. Version 2 documentation can be found here.

Class: AWS::Core::Http::Request

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initializeRequest

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

#headersCaseInsensitiveHash

Returns request headers

Returns:

  • (CaseInsensitiveHash)

    request headers



48
49
50
# File 'lib/aws/core/http/request.rb', line 48

def headers
  @headers
end

#hostString

Returns hostname of the request

Returns:

  • (String)

    hostname of the request



37
38
39
# File 'lib/aws/core/http/request.rb', line 37

def host
  @host
end

#http_methodString

Returns the HTTP request method (e.g. 'GET', 'PUT', 'POST', 'HEAD' or 'DELETE'). Defaults to 'POST'.

Returns:

  • (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

#portInteger

Returns the port the request will be made over. Defaults to 443 for SSL requests and 80 for non-SSL requests.

Returns:

  • (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_timeoutInteger 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.

Returns:

  • (Integer)

    The number of seconds the service has to respond before a timeout error is raised on the request.



79
80
81
# File 'lib/aws/core/http/request.rb', line 79

def read_timeout
  @read_timeout
end

#regionString

Returns The region name this request is for. Only needs to be populated for requests against signature v4 endpoints.

Returns:

  • (String)

    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_nameString

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).

Returns:

  • (String)

    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).



75
76
77
# File 'lib/aws/core/http/request.rb', line 75

def service_ruby_name
  @service_ruby_name
end

#uriString

Returns the request URI (path + querystring).

Returns:

  • (String)

    Returns the request URI (path + querystring).



51
52
53
# File 'lib/aws/core/http/request.rb', line 51

def uri
  @uri
end

#use_sslBoolean Also known as: use_ssl?

Returns true if this request should be made with SSL enabled.

Returns:

  • (Boolean)

    Returns true if this request should be made with SSL enabled.



86
87
88
# File 'lib/aws/core/http/request.rb', line 86

def use_ssl
  @use_ssl
end

Instance Method Details

#bodyString?

Note:

Calling #body on a request with a #body_stream will cause the entire stream to be read into memory.

Returns the request body.

Returns:

  • (String, nil)

    Returns the request body.



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/aws/core/http/request.rb', line 168

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

Parameters:

  • body (String)


156
157
158
159
160
161
162
163
# File 'lib/aws/core/http/request.rb', line 156

def body= body
  @body = body
  if body
    headers['content-length'] = body.bytesize if body
  else
    headers.delete('content-length')
  end
end

#body_streamIO?

Returns:

  • (IO, nil)


192
193
194
195
196
197
198
199
200
# File 'lib/aws/core/http/request.rb', line 192

def body_stream
  if @body_stream
    @body_stream
  elsif @body
    StringIO.new(@body)
  else
    nil
  end
end

#body_stream=(stream) ⇒ Object

Note:

You must also set the #headers['content-length']

Sets the request body as an IO object that will be streamed.

Parameters:

  • stream (IO)

    An object that responds to #read and #eof.



187
188
189
# File 'lib/aws/core/http/request.rb', line 187

def body_stream= stream
  @body_stream = stream
end

#pathString

Returns the HTTP request path.

Returns:

  • (String)

    Returns the HTTP request path.



112
113
114
# File 'lib/aws/core/http/request.rb', line 112

def path
  uri.split(/\?/)[0]
end

#querystringString

Returns the HTTP request querystring.

Returns:

  • (String)

    Returns the HTTP request querystring.



117
118
119
# File 'lib/aws/core/http/request.rb', line 117

def querystring
  uri.split(/\?/)[1]
end