Sha256: 29122dab087e5ea4d390458b5353025fa490d095f796b57e4918c2f4dcd5a9a1
Contents?: true
Size: 1.63 KB
Versions: 3
Compression:
Stored size: 1.63 KB
Contents
module Faraday module Adapter module Typhoeus extend Faraday::Connection::Options begin require 'typhoeus' def in_parallel? !!@parallel_manager end def in_parallel(options = {}) setup_parallel_manager(options) yield run_parallel_requests end def setup_parallel_manager(options = {}) @parallel_manager ||= ::Typhoeus::Hydra.new(options) end def run_parallel_requests @parallel_manager.run @parallel_manager = nil end def _get(uri, request_headers) response_class.new do |resp| is_async = in_parallel? setup_parallel_manager req = ::Typhoeus::Request.new(uri.to_s, :headers => request_headers, :method => :get) req.on_complete do |response| resp.process!(response.body) resp.headers = parse_response_headers(response.headers) end @parallel_manager.queue(req) if !is_async then run_parallel_requests end end rescue Errno::ECONNREFUSED raise Faraday::Error::ConnectionFailed, "connection refused" end def parse_response_headers(header_string) Hash[*header_string.split(/\r\n/). tap { |a| a.shift }. # drop the HTTP status line map! { |h| h.split(/:\s+/,2) }. # split key and value map! { |(k, v)| [k.downcase, v] }.flatten!] end rescue LoadError => e self.load_error = e end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
faraday-0.1.0 | lib/faraday/adapter/typhoeus.rb |
faraday-0.0.2 | lib/faraday/adapter/typhoeus.rb |
faraday-0.0.1 | lib/faraday/adapter/typhoeus.rb |