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.



160
161
162
163
# File 'lib/httpx/adapters/faraday.rb', line 160

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

Instance Method Details

#enqueue(request) ⇒ Object



165
166
167
168
169
# File 'lib/httpx/adapters/faraday.rb', line 165

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

#runObject



171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/httpx/adapters/faraday.rb', line 171

def run
  env = @handlers.last.env

  session = @session.with(options_from_env(env))
  session = session.plugin(:proxy).with(proxy: { uri: env.request.proxy }) if env.request.proxy
  session = session.plugin(OnDataPlugin) if env.request.stream_response?

  requests = @handlers.map { |handler| session.build_request(*build_request(handler.env)) }

  if env.request.stream_response?
    requests.each do |request|
      request.response_on_data = env.request.on_data
    end
  end

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