Class: Faraday::Adapter::HTTPX::ParallelManager

Inherits:
Object
  • Object
show all
Includes:
RequestMixin
Defined in:
lib/httpx/adapters/faraday.rb

Defined Under Namespace

Classes: ResponseHandler

Instance Method Summary collapse

Constructor Details

#initializeParallelManager

Returns a new instance of ParallelManager.



97
98
99
100
# File 'lib/httpx/adapters/faraday.rb', line 97

def initialize
  @session = Session.new
  @handlers = []
end

Instance Method Details

#enqueue(request) ⇒ Object



102
103
104
105
106
# File 'lib/httpx/adapters/faraday.rb', line 102

def enqueue(request)
  handler = ResponseHandler.new(request)
  @handlers << handler
  handler
end

#runObject



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/httpx/adapters/faraday.rb', line 108

def run
  requests = @handlers.map { |handler| build_request(handler.env) }
  env = @handlers.last.env

  timeout_options = {
    connect_timeout: env.request.open_timeout,
    operation_timeout: env.request.timeout,
  }.reject { |_, v| v.nil? }

  options = {
    ssl: env.ssl,
    timeout: timeout_options,
  }

  proxy_options = { uri: env.request.proxy }

  session = @session.with(options)
  session = session.plugin(:proxy).with_proxy(proxy_options) if env.request.proxy

  responses = session.request(requests)
  responses.each_with_index do |response, index|
    handler = @handlers[index]
    handler.on_response.call(response)
    handler.on_complete.call(handler.env)
  end
end