Sha256: d69392363ebc3364ef2dbe3f0dffcb1f46fcb3b531ec11f16286a8c56b1b0cf8
Contents?: true
Size: 1.13 KB
Versions: 3
Compression:
Stored size: 1.13 KB
Contents
require "zlib" require "stringio" module HTTPI # = HTTPI::Response # # Represents an HTTP response and contains various response details. class Response # Range of HTTP response codes considered to be successful. SuccessfulResponseCodes = 200..299 # Initializer expects an HTTP response +code+, +headers+ and +body+. def initialize(code, headers, body) self.code = code.to_i self.headers = headers self.raw_body = body end attr_accessor :code, :headers, :raw_body # Returns whether the HTTP response is considered successful. def error? !SuccessfulResponseCodes.include? code.to_i end # Returns the HTTP response body. def body @body ||= gzipped_response? ? decoded_body : raw_body end attr_writer :body private # Returns whether the response is gzipped. def gzipped_response? headers["Content-Encoding"] == "gzip" || raw_body[0..1] == "\x1f\x8b" end # Returns the gzip decoded response body. def decoded_body gzip = Zlib::GzipReader.new StringIO.new(raw_body) gzip.read ensure gzip.close end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
httpi-0.6.1 | lib/httpi/response.rb |
httpi-0.6.0 | lib/httpi/response.rb |
httpi-0.5.0 | lib/httpi/response.rb |