class GH::FaradayAdapter::Manager
Public Class Methods
new(*)
click to toggle source
# File lib/gh/faraday_adapter.rb, line 12 def initialize(*) @mutex = Mutex.new @requests = {} end
Public Instance Methods
add_request(http, env, adapter)
click to toggle source
# 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()
click to toggle source
# 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