faraday-excon 1.0.0 → 2.1.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 +4 -4
- data/README.md +12 -7
- data/lib/faraday/adapter/excon.rb +25 -11
- data/lib/faraday/excon/version.rb +1 -1
- data/lib/faraday/excon.rb +2 -0
- metadata +8 -134
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48cc25dbe1f1b2758a18d7b632862a0b925c41dcf60b85017571af0b1ae9e5c8
|
4
|
+
data.tar.gz: 31f11d707f4d986908b2a0d92203843c563a40c49c0b363f02180747f8b85c4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd71d9c447b9fa17960250bba74842d173491be820aa1c2713fa28cc78a3558d11d5362549e2a7593132b353a1aca9d40dcc1864ac2bc41acdf0b798e6f86e39
|
7
|
+
data.tar.gz: 983de5b151300ac67cd7ed09df531353bea392e49c740087e4810444cbe6aa7799ef43c679b25c1db681ca8b7e8d381e6fd232c1af3f9cf15ae9588c07e70e99
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ Every adapter is defined into its own gem. This gem defines the adapter for Exco
|
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
|
-
Add
|
9
|
+
Add these lines to your application's Gemfile:
|
10
10
|
|
11
11
|
```ruby
|
12
12
|
gem 'faraday-excon'
|
@@ -16,21 +16,26 @@ And then execute:
|
|
16
16
|
|
17
17
|
$ bundle install
|
18
18
|
|
19
|
-
Or install
|
19
|
+
Or install them yourself as:
|
20
20
|
|
21
21
|
$ gem install faraday-excon
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
Configure your Faraday connection to use this adapter like this:
|
26
|
-
|
27
25
|
```ruby
|
28
|
-
|
29
|
-
|
26
|
+
conn = Faraday.new(...) do |f|
|
27
|
+
# no custom options available
|
28
|
+
f.adapter :excon
|
30
29
|
end
|
31
30
|
```
|
32
31
|
|
33
|
-
|
32
|
+
Passing connection options:
|
33
|
+
```ruby
|
34
|
+
conn = Faraday.new(...) do |f|
|
35
|
+
# Will keep the connection memoized within the adapter, and rely that flag to excon
|
36
|
+
f.adapter :excon, persistent: true
|
37
|
+
end
|
38
|
+
```
|
34
39
|
|
35
40
|
## Development
|
36
41
|
|
@@ -4,17 +4,27 @@ module Faraday
|
|
4
4
|
class Adapter
|
5
5
|
# Excon adapter.
|
6
6
|
class Excon < Faraday::Adapter
|
7
|
-
dependency 'excon'
|
8
|
-
|
9
7
|
def build_connection(env)
|
8
|
+
if @connection_options[:persistent]
|
9
|
+
return @connection if defined? @connection
|
10
|
+
end
|
10
11
|
opts = opts_from_env(env)
|
11
|
-
|
12
|
+
|
13
|
+
# remove path & query when creating connection
|
14
|
+
# because if it is persistent, it can re-use the conn
|
15
|
+
url = env[:url].dup
|
16
|
+
url.path = ''
|
17
|
+
url.query = nil
|
18
|
+
|
19
|
+
@connection = ::Excon.new(url.to_s, opts.merge(@connection_options))
|
12
20
|
end
|
13
21
|
|
14
22
|
def call(env)
|
15
23
|
super
|
16
24
|
|
17
25
|
req_opts = {
|
26
|
+
path: env[:url].path,
|
27
|
+
query: env[:url].query,
|
18
28
|
method: env[:method].to_s.upcase,
|
19
29
|
headers: env[:request_headers],
|
20
30
|
body: read_body(env)
|
@@ -28,11 +38,22 @@ module Faraday
|
|
28
38
|
end
|
29
39
|
end
|
30
40
|
|
31
|
-
resp =
|
41
|
+
resp = connect_and_request(env, req_opts)
|
32
42
|
save_response(env, resp.status.to_i, resp.body, resp.headers,
|
33
43
|
resp.reason_phrase)
|
34
44
|
|
35
45
|
@app.call(env)
|
46
|
+
end
|
47
|
+
|
48
|
+
# TODO: support streaming requests
|
49
|
+
def read_body(env)
|
50
|
+
env[:body].respond_to?(:read) ? env[:body].read : env[:body]
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def connect_and_request(env, req_opts)
|
56
|
+
connection(env) { |http| http.request(req_opts) }
|
36
57
|
rescue ::Excon::Errors::SocketError => e
|
37
58
|
raise Faraday::TimeoutError, e if e.message.match?(/\btimeout\b/)
|
38
59
|
|
@@ -43,13 +64,6 @@ module Faraday
|
|
43
64
|
raise Faraday::TimeoutError, e
|
44
65
|
end
|
45
66
|
|
46
|
-
# TODO: support streaming requests
|
47
|
-
def read_body(env)
|
48
|
-
env[:body].respond_to?(:read) ? env[:body].read : env[:body]
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
67
|
def opts_from_env(env)
|
54
68
|
opts = {}
|
55
69
|
amend_opts_with_ssl!(opts, env[:ssl]) if needs_ssl_settings?(env)
|
data/lib/faraday/excon.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faraday-excon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- "@iMacTia"
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: excon
|
@@ -25,145 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.27.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '2.0'
|
34
|
-
type: :
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: faraday
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '1.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '13.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '13.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rspec
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '3.0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '3.0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: simplecov
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 0.19.0
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 0.19.0
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: multipart-parser
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 0.1.1
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 0.1.1
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: webmock
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '3.4'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '3.4'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rubocop
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 0.91.1
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 0.91.1
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rubocop-packaging
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0.5'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - "~>"
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0.5'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: rubocop-performance
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - "~>"
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '1.0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - "~>"
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '1.0'
|
167
41
|
description: Faraday adapter for Excon
|
168
42
|
email:
|
169
43
|
- giuffrida.mattia@gmail.com
|
@@ -182,7 +56,7 @@ licenses:
|
|
182
56
|
metadata:
|
183
57
|
homepage_uri: https://github.com/lostisland/faraday-excon
|
184
58
|
source_code_uri: https://github.com/lostisland/faraday-excon
|
185
|
-
changelog_uri: https://github.com/lostisland/faraday-excon
|
59
|
+
changelog_uri: https://github.com/lostisland/faraday-excon/releases/tag/v2.1.0
|
186
60
|
post_install_message:
|
187
61
|
rdoc_options: []
|
188
62
|
require_paths:
|
@@ -191,14 +65,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
191
65
|
requirements:
|
192
66
|
- - ">="
|
193
67
|
- !ruby/object:Gem::Version
|
194
|
-
version: 2.
|
68
|
+
version: 2.6.0
|
195
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
70
|
requirements:
|
197
71
|
- - ">="
|
198
72
|
- !ruby/object:Gem::Version
|
199
73
|
version: '0'
|
200
74
|
requirements: []
|
201
|
-
rubygems_version: 3.1.
|
75
|
+
rubygems_version: 3.1.6
|
202
76
|
signing_key:
|
203
77
|
specification_version: 4
|
204
78
|
summary: Faraday adapter for Excon
|