async-http-faraday 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.