Sha256: b6247b09f43772b6c5b4ef3a9e5e3d0f41e0a728f1bbfcd7e880709ca32ae3ef
Contents?: true
Size: 1.85 KB
Versions: 3
Compression:
Stored size: 1.85 KB
Contents
module Aitch class Response extend Forwardable def_delegators :@http_response, :content_type attr_accessor :redirected_from, :url def initialize(options, http_response) @options = options @http_response = http_response end ERRORS.each do |status_code, exception| method_name = Utils.underscore(exception.name.split("::").last).gsub("_error", "") define_method "#{method_name}?" do code == status_code end end def code @http_response.code.to_i end def body @body ||= Body.new(@http_response).to_s end def success? code >= 200 && code <= 399 end alias_method :ok?, :success? def redirect? code >= 300 && code <= 399 end def error? code >= 400 && code <= 599 end def error error? && ERRORS.fetch(code) end def json? content_type =~ /json/ end def xml? content_type =~ /xml/ end def html? content_type =~ /html/ end def data if json? @options[:json_parser].load(body) elsif xml? @options[:xml_parser].load(body) elsif html? @options[:html_parser].load(body) else body end end alias_method :xml, :data alias_method :html, :data alias_method :json, :data def headers @headers ||= {}.tap do |headers| @http_response.each_header do |name, value| headers[name.gsub(/^x-/, "")] = value end end end def method_missing(name, *args, &block) return headers[name.to_s] if headers.key?(name.to_s) super end def respond_to_missing?(name, include_private = false) headers.key?(name.to_s) end def inspect "#<#{self.class} #{code} #{@http_response.msg} (#{content_type})>" end alias_method :to_s, :inspect end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
aitch-0.4.1 | lib/aitch/response.rb |
aitch-0.4.0 | lib/aitch/response.rb |
aitch-0.3.0 | lib/aitch/response.rb |