class Hurley::Response
Constants
- STATUS_FORCE_GET
- STATUS_REDIRECTION
- STATUS_TYPES
Attributes
body[RW]
header[R]
request[R]
status_code[RW]
via[W]
Public Class Methods
new(request, status_code = nil, header = nil) { |self| ... }
click to toggle 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
automatically_redirect?(previous_requests = nil)
click to toggle 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
client_error?()
click to toggle source
# File lib/hurley/client.rb, line 288 def client_error? status_code > 399 && status_code < 500 end
complete!()
click to toggle 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
inspect()
click to toggle 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
location()
click to toggle 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
ms()
click to toggle source
# File lib/hurley/client.rb, line 317 def ms @timing ||= ((@ended_at - @started_at) * 1000).to_i end
receive_body(chunk)
click to toggle 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
redirection?()
click to toggle source
# File lib/hurley/client.rb, line 280 def redirection? STATUS_REDIRECTION.include?(status_code) end
server_error?()
click to toggle source
# File lib/hurley/client.rb, line 292 def server_error? status_code > 499 && status_code < 600 end
status_type()
click to toggle source
# File lib/hurley/client.rb, line 276 def status_type @status_type ||= STATUS_TYPES.detect { |t| send("#{t}?") } || :other end
success?()
click to toggle source
# File lib/hurley/client.rb, line 284 def success? status_code > 199 && status_code < 300 end
via()
click to toggle source
# File lib/hurley/client.rb, line 264 def via @via ||= [] end