async-http-faraday 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7547186d920c58d1c3c27f9a16041cd82c670204505ec696dcc2104990e724f3
4
- data.tar.gz: 32e8fd12a7d66d55059e5daaa311a2735130b6704fc5b88e6313c5c4cc782ba1
3
+ metadata.gz: 18cebe143b4adb98ef8c4275b23c4a0424189939be8536ea556a6766a0f32601
4
+ data.tar.gz: f61244ea3ac54fd86f0866410c0c1073fe95640aaac40ae15b56998b56686169
5
5
  SHA512:
6
- metadata.gz: 7632d215b1a008a6462d9a9cdc56451f4894dfad2dcd649972b4bc55c4f92eb592e9253cd40ed207fbe21c752261d734b5e55c0113f81717a3a655f4233e0899
7
- data.tar.gz: d3fa8fcd72045b89affe384cc4284c738e861051430544cd59fc30051fc3bad7baab4fc92ab523d6857f7f18d09404b22a576ffe6f3ccd8eea9a2d841c83df90
6
+ metadata.gz: '0758825d6f3e0e8048d128d682e9087f7b8d3d002811cb08604d1019ce6c820dc70274ad99e9eca6fba4d58770dbb730ffae0fdfea2e8938bbf57d848fce98ea'
7
+ data.tar.gz: '09b864bd39e657078f6f9a8830881243ce35de8cb3c9f31b815c68c343afc3b5d2d3b7009373cd682b84661e8e74e97b35aa4a515fac9b7c6c8369d5b666c649'
@@ -1,5 +1,4 @@
1
1
  language: ruby
2
- sudo: false
3
2
  dist: trusty
4
3
  cache: bundler
5
4
 
@@ -9,6 +8,7 @@ matrix:
9
8
  - rvm: 2.4
10
9
  - rvm: 2.5
11
10
  - rvm: 2.6
11
+ - rvm: 2.7
12
12
  - rvm: jruby-head
13
13
  env: JRUBY_OPTS="--debug -X+O"
14
14
  - rvm: ruby-head
@@ -29,10 +29,25 @@ module Async
29
29
  PERSISTENT = ::Faraday::Connection.instance_methods.include?(:close)
30
30
 
31
31
  class Adapter < ::Faraday::Adapter
32
+ CONNECTION_EXCEPTIONS = [
33
+ Errno::EADDRNOTAVAIL,
34
+ Errno::ECONNABORTED,
35
+ Errno::ECONNREFUSED,
36
+ Errno::ECONNRESET,
37
+ Errno::EHOSTUNREACH,
38
+ Errno::EINVAL,
39
+ Errno::ENETUNREACH,
40
+ Errno::EPIPE,
41
+ IOError,
42
+ SocketError
43
+ ].freeze
44
+
32
45
  def initialize(*arguments, **options, &block)
33
46
  super
34
47
 
35
48
  @internet = Async::HTTP::Internet.new
49
+ @persistent = PERSISTENT && options.fetch(:persistent, true)
50
+ @timeout = options[:timeout]
36
51
  end
37
52
 
38
53
  def close
@@ -42,14 +57,34 @@ module Async
42
57
  def call(env)
43
58
  super
44
59
 
45
- response = @internet.call(env[:method], env[:url].to_s, env[:request_headers], env[:body])
60
+ with_timeout do
61
+ response = @internet.call(env[:method].to_s.upcase, env[:url].to_s, env[:request_headers], env[:body] || [])
46
62
 
47
- save_response(env, response.status, response.read, response.headers)
63
+ save_response(env, response.status, response.read, response.headers)
64
+ end
48
65
 
49
66
  return @app.call(env)
67
+ rescue Errno::ETIMEDOUT => e
68
+ raise ::Faraday::TimeoutError, e
69
+ rescue OpenSSL::SSL::SSLError => e
70
+ raise ::Faraday::SSLError, e
71
+ rescue *CONNECTION_EXCEPTIONS => e
72
+ raise ::Faraday::ConnectionFailed, e
50
73
  ensure
51
74
  # Don't retain persistent connections unless they will eventually be closed:
52
- @internet.close unless PERSISTENT
75
+ @internet.close unless @persistent
76
+ end
77
+
78
+ private
79
+
80
+ def with_timeout
81
+ if @timeout
82
+ Async::Task.current.with_timeout(@timeout, ::Faraday::TimeoutError) do
83
+ yield
84
+ end
85
+ else
86
+ yield
87
+ end
53
88
  end
54
89
  end
55
90
  end
@@ -21,7 +21,7 @@
21
21
  module Async
22
22
  module HTTP
23
23
  module Faraday
24
- VERSION = "0.6.0"
24
+ VERSION = "0.7.0"
25
25
  end
26
26
  end
27
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-http-faraday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-23 00:00:00.000000000 Z
11
+ date: 2020-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async-http
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  requirements: []
147
- rubygems_version: 3.0.4
147
+ rubygems_version: 3.0.6
148
148
  signing_key:
149
149
  specification_version: 4
150
150
  summary: Provides an adaptor between async-http and faraday.