class HTTP::Response

Attributes

body[R]

@return [Body]

proxy_headers[R]

@return [Hash]

status[R]

@return [Status]

uri[R]

@return [URI, nil]

Public Class Methods

new(opts) click to toggle source

Inits a new instance

@option opts [Integer] :status Status code @option opts [String] :version HTTP version @option opts [Hash] :headers @option opts [Hash] :proxy_headers @option opts [HTTP::Connection] :connection @option opts [String] :encoding Encoding to use when reading body @option opts [String] :body @option opts [String] :uri

# File lib/http/response.rb, line 40
def initialize(opts)
  @version       = opts.fetch(:version)
  @uri           = HTTP::URI.parse(opts.fetch(:uri)) if opts.include? :uri
  @status        = HTTP::Response::Status.new(opts.fetch(:status))
  @headers       = HTTP::Headers.coerce(opts[:headers] || {})
  @proxy_headers = HTTP::Headers.coerce(opts[:proxy_headers] || {})

  if opts.include?(:connection)
    connection = opts.fetch(:connection)
    encoding   = opts[:encoding] || charset || Encoding::BINARY

    @body = Response::Body.new(connection, encoding)
  else
    @body = opts.fetch(:body)
  end
end

Public Instance Methods

content_type() click to toggle source

Parsed Content-Type header

@return [HTTP::ContentType]

# File lib/http/response.rb, line 92
def content_type
  @content_type ||= ContentType.parse headers[Headers::CONTENT_TYPE]
end
cookies() click to toggle source
# File lib/http/response.rb, line 106
def cookies
  @cookies ||= headers.each_with_object CookieJar.new do |(k, v), jar|
    jar.parse(v, uri) if k == Headers::SET_COOKIE
  end
end
flush() click to toggle source

Flushes body and returns self-reference

@return [Response]

# File lib/http/response.rb, line 84
def flush
  body.to_s
  self
end
inspect() click to toggle source

Inspect a response

# File lib/http/response.rb, line 123
def inspect
  "#<#{self.class}/#{@version} #{code} #{reason} #{headers.to_h.inspect}>"
end
parse(as = nil) click to toggle source

Parse response body with corresponding MIME type adapter.

@param [#to_s] as Parse as given MIME type

instead of the one determined from headers

@raise [Error] if adapter not found @return [Object]

# File lib/http/response.rb, line 118
def parse(as = nil)
  MimeType[as || mime_type].decode to_s
end
to_a() click to toggle source

Returns an Array ala Rack: `[status, headers, body]`

@return [Array(Fixnum, Hash, String)]

# File lib/http/response.rb, line 77
def to_a
  [status.to_i, headers.to_h, body.to_s]
end