Class: GH::FaradayAdapter::Manager
- Inherits:
-
Object
- Object
- GH::FaradayAdapter::Manager
- Defined in:
- lib/gh/faraday_adapter.rb
Instance Method Summary collapse
- #add_request(http, env, adapter) ⇒ Object
-
#initialize ⇒ Manager
constructor
A new instance of Manager.
- #run ⇒ Object
Constructor Details
#initialize ⇒ Manager
Returns a new instance of Manager.
12 13 14 15 |
# File 'lib/gh/faraday_adapter.rb', line 12 def initialize(*) @mutex = Mutex.new @requests = {} end |
Instance Method Details
#add_request(http, env, adapter) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/gh/faraday_adapter.rb', line 17 def add_request(http, env, adapter) url = env[:url] + '/' env[:adapter] = adapter @mutex.synchronize do @requests[url] ||= [] @requests[url] << env end end |
#run ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/gh/faraday_adapter.rb', line 27 def run requests = nil @mutex.synchronize { requests, @requests = @requests, {} } http = Net::HTTP::Persistent.new 'GH' requests.each do |url, envs| _requests = envs.map { |env| env[:adapter].create_request(env) } responses = http.pipeline(url, _requests) envs.zip(responses) do |env, http_response| env[:adapter].save_response(env, http_response.code.to_i, http_response.body) do |headers| http_response.each_header { |key, value| headers[key] = value } end env[:response].finish(env) end end end |