Class: Async::HTTP::Faraday::Adapter

Inherits:
Faraday::Adapter
  • Object
show all
Defined in:
lib/async/http/faraday/adapter.rb

Constant Summary collapse

CONNECTION_EXCEPTIONS =
[
  Errno::EADDRNOTAVAIL,
  Errno::ECONNABORTED,
  Errno::ECONNREFUSED,
  Errno::ECONNRESET,
  Errno::EHOSTUNREACH,
  Errno::EINVAL,
  Errno::ENETUNREACH,
  Errno::EPIPE,
  IOError,
  SocketError
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(*arguments, **options, &block) ⇒ Adapter

Returns a new instance of Adapter.



47
48
49
50
51
52
53
# File 'lib/async/http/faraday/adapter.rb', line 47

def initialize(*arguments, **options, &block)
  super
  
  @internet = Async::HTTP::Internet.new
  @persistent = options.fetch(:persistent, true)
  @timeout = options[:timeout]
end

Instance Method Details

#call(env) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/async/http/faraday/adapter.rb', line 59

def call(env)
  super
  
  Sync do
    with_timeout do
      response = @internet.call(env[:method].to_s.upcase, env[:url].to_s, env[:request_headers], env[:body] || [])
      
      save_response(env, response.status, response.read, response.headers)
    end
  end
  
  return @app.call(env)
rescue Errno::ETIMEDOUT, Async::TimeoutError => e
  raise ::Faraday::TimeoutError, e
rescue OpenSSL::SSL::SSLError => e
  raise ::Faraday::SSLError, e
rescue *CONNECTION_EXCEPTIONS => e
  raise ::Faraday::ConnectionFailed, e
end

#closeObject



55
56
57
# File 'lib/async/http/faraday/adapter.rb', line 55

def close
  @internet.close
end