class HTTPI::Response
Represents an HTTP response and contains various response details.
= HTTPI::Response
def attachments
def attachments decode_body unless @body @attachments ||= [] end
def body
def body decode_body unless @body @body end
def cookies
def cookies @cookies ||= Cookie.list_from_headers(headers) end
def decode_body
def decode_body return @body = "" if !raw_body || raw_body.empty? body = gzipped_response? ? decoded_gzip_body : raw_body @body = dime_response? ? decoded_dime_body(body) : body end
def decoded_dime_body(body = nil)
def decoded_dime_body(body = nil) dime = Dime.new(body || raw_body) self.attachments = dime.binary_records dime.xml_records.first.data end
def decoded_gzip_body
def decoded_gzip_body unless gzip = Zlib::GzipReader.new(StringIO.new(raw_body)) raise ArgumentError, "Unable to create Zlib::GzipReader" end gzip.read ensure gzip.close if gzip end
def dime_response?
def dime_response? headers["Content-Type"] == "application/dime" end
def error?
def error? !SuccessfulResponseCodes.include? code.to_i end
def gzipped_response?
def gzipped_response? headers["Content-Encoding"] == "gzip" end
def initialize(code, headers, body)
def initialize(code, headers, body) self.code = code.to_i self.headers = Rack::Utils::HeaderHash.new(headers) self.raw_body = body end
def multipart?
def multipart? !!(headers["Content-Type"] =~ /^multipart/i) end