Sha256: b719941e24271be0cc5758d761bba5faae4052e35df94df165e0401054d0bff1
Contents?: true
Size: 1.03 KB
Versions: 2
Compression:
Stored size: 1.03 KB
Contents
require "zlib" require "stringio" module HTTPI 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 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
httpi-0.2.0 | lib/httpi/response.rb |
httpi-0.1.0 | lib/httpi/response.rb |