Class: HTTPI::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/httpi/response.rb

Overview

HTTPI::Response

Represents an HTTP response and contains various response details.

Constant Summary collapse

SuccessfulResponseCodes =

Range of HTTP response codes considered to be successful.

200..299
RedirectResponseCodes =

HTTP response codes considered to be a redirect.

[301, 302, 303, 307, 308]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(code, headers, body) ⇒ Response

Initializer expects an HTTP response code, headers and body.


21
22
23
24
25
# File 'lib/httpi/response.rb', line 21

def initialize(code, headers, body)
  self.code = code.to_i
  self.headers = Rack::Utils::HeaderHash.new(headers)
  self.raw_body = body
end

Instance Attribute Details

#attachmentsObject

Returns any DIME attachments.


46
47
48
49
50
# File 'lib/httpi/response.rb', line 46

def attachments
  @body ||= nil
  decode_body unless @body
  @attachments ||= []
end

#bodyObject

Returns the HTTP response body.


53
54
55
56
57
# File 'lib/httpi/response.rb', line 53

def body
  @body ||= nil
  decode_body unless @body
  @body
end

#codeObject

Returns the value of attribute code


27
28
29
# File 'lib/httpi/response.rb', line 27

def code
  @code
end

#headersObject

Returns the value of attribute headers


27
28
29
# File 'lib/httpi/response.rb', line 27

def headers
  @headers
end

#raw_bodyObject

Returns the value of attribute raw_body


27
28
29
# File 'lib/httpi/response.rb', line 27

def raw_body
  @raw_body
end

Instance Method Details

#cookiesObject

Returns a list of cookies from the response.


41
42
43
# File 'lib/httpi/response.rb', line 41

def cookies
  @cookies ||= Cookie.list_from_headers(headers)
end

#error?Boolean

Returns whether the HTTP response is considered successful.

Returns:

  • (Boolean)

31
32
33
# File 'lib/httpi/response.rb', line 31

def error?
  !SuccessfulResponseCodes.include? code.to_i
end

#multipart?Boolean

Returns whether the HTTP response is a multipart response.

Returns:

  • (Boolean)

36
37
38
# File 'lib/httpi/response.rb', line 36

def multipart?
  !!(headers["Content-Type"] =~ /^multipart/i)
end