Sha256: 3dd542f47c49976d3c58a7e4a5dec2532d25a13898835f7c861178a112d7fc5b
Contents?: true
Size: 1.81 KB
Versions: 40
Compression:
Stored size: 1.81 KB
Contents
# frozen_string_literal: true require 'forwardable' module Faraday # Response represents an HTTP response from making an HTTP request. class Response extend Forwardable extend MiddlewareRegistry def initialize(env = nil) @env = Env.from(env) if env @on_complete_callbacks = [] end attr_reader :env def status finished? ? env.status : nil end def reason_phrase finished? ? env.reason_phrase : nil end def headers finished? ? env.response_headers : {} end def_delegator :headers, :[] def body finished? ? env.body : nil end def finished? !!env end def on_complete(&block) if finished? yield(env) else @on_complete_callbacks << block end self end def finish(env) raise 'response already finished' if finished? @env = env.is_a?(Env) ? env : Env.from(env) @on_complete_callbacks.each { |callback| callback.call(@env) } self end def success? finished? && env.success? end def to_hash { status: env.status, body: env.body, response_headers: env.response_headers, url: env.url } end # because @on_complete_callbacks cannot be marshalled def marshal_dump finished? ? to_hash : nil end def marshal_load(env) @env = Env.from(env) end # Expand the env with more properties, without overriding existing ones. # Useful for applying request params after restoring a marshalled Response. def apply_request(request_env) raise "response didn't finish yet" unless finished? @env = Env.from(request_env).update(@env) self end end end require 'faraday/response/json' require 'faraday/response/logger' require 'faraday/response/raise_error'
Version data entries
40 entries across 40 versions & 5 rubygems