class Hurley::Response
Constants
- STATUS_FORCE_GET
- STATUS_REDIRECTION
- STATUS_TYPES
Attributes
Public Class Methods
Source
# File lib/hurley/client.rb, line 243 def initialize(request, status_code = nil, header = nil) @request = request @status_code = status_code @header = header || Header.new @body = nil @receiver = nil @timing = nil @started_at = Time.now.to_f if block_given? yield self complete! end end
Public Instance Methods
Source
# File lib/hurley/client.rb, line 296 def automatically_redirect?(previous_requests = nil) return false unless redirection? limit = request.options.redirection_limit.to_i limit > 0 && Array(previous_requests).size < limit end
Source
# File lib/hurley/client.rb, line 288 def client_error? status_code > 399 && status_code < 500 end
Source
# File lib/hurley/client.rb, line 257 def complete! @ended_at = Time.now.to_f if @receiver.respond_to?(:join) @body = @receiver.join end end
Source
# File lib/hurley/client.rb, line 321 def inspect "#<%s %s %s == %d%s %dms>" % [ self.class.name, @request.verb.to_s.upcase, @request.url.to_s, @status_code.to_i, @body ? " (#{@body.bytesize} bytes)" : nil, ms, ] end
Source
# File lib/hurley/client.rb, line 268 def location @location ||= begin return unless loc = @header[:location] verb = STATUS_FORCE_GET.include?(status_code) ? :get : request.verb Request.new(verb, request.url.join(Url.parse(loc)), request.header, request.body, request.options, request.ssl_options) end end
Source
# File lib/hurley/client.rb, line 317 def ms @timing ||= ((@ended_at - @started_at) * 1000).to_i end
Source
# File lib/hurley/client.rb, line 302 def receive_body(chunk) return if chunk.nil? if @receiver.nil? statuses, receiver = request.send(:body_receiver) @receiver = if statuses && !statuses.include?(@status_code) BodyReceiver.new else receiver end end @receiver.call(self, chunk) end
Source
# File lib/hurley/client.rb, line 280 def redirection? STATUS_REDIRECTION.include?(status_code) end
Source
# File lib/hurley/client.rb, line 292 def server_error? status_code > 499 && status_code < 600 end
Source
# File lib/hurley/client.rb, line 276 def status_type @status_type ||= STATUS_TYPES.detect { |t| send("#{t}?") } || :other end
Source
# File lib/hurley/client.rb, line 284 def success? status_code > 199 && status_code < 300 end