class HTTPX::Session

  1. lib/httpx/session.rb
Superclass: Object

Methods

Public Class

  1. new

Public Instance

  1. build_request
  2. close
  3. request
  4. wrap

Included modules

  1. Loggable
  2. Chainable

Constants

EMPTY_HASH = {}.freeze  

Public Class methods

new(options = EMPTY_HASH, &blk)
[show source]
   # File lib/httpx/session.rb
10 def initialize(options = EMPTY_HASH, &blk)
11   @options = self.class.default_options.merge(options)
12   @responses = {}
13   @persistent = @options.persistent
14   wrap(&blk) if blk
15 end

Public Instance methods

build_request(verb, uri, options = EMPTY_HASH)
[show source]
   # File lib/httpx/session.rb
42 def build_request(verb, uri, options = EMPTY_HASH)
43   rklass = @options.request_class
44   options = @options.merge(options) unless options.is_a?(Options)
45   request = rklass.new(verb, uri, options.merge(persistent: @persistent))
46   request.on(:response, &method(:on_response).curry(2)[request])
47   request.on(:promise, &method(:on_promise))
48   request
49 end
close(*args)
[show source]
   # File lib/httpx/session.rb
28 def close(*args)
29   pool.close(*args)
30 end
request(*args, **options)
[show source]
   # File lib/httpx/session.rb
32 def request(*args, **options)
33   raise ArgumentError, "must perform at least one request" if args.empty?
34 
35   requests = args.first.is_a?(Request) ? args : build_requests(*args, options)
36   responses = send_requests(*requests)
37   return responses.first if responses.size == 1
38 
39   responses
40 end
wrap()
[show source]
   # File lib/httpx/session.rb
17 def wrap
18   begin
19     prev_persistent = @persistent
20     @persistent = true
21     yield self
22   ensure
23     @persistent = prev_persistent
24     close unless @persistent
25   end
26 end