faraday-net_http 1.0.1 → 3.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 +8 -8
- data/lib/faraday/adapter/net_http.rb +49 -60
- data/lib/faraday/net_http/version.rb +1 -1
- data/lib/faraday/net_http.rb +2 -2
- metadata +15 -127
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d9a033eff57867fb6f0d7ef439a1a218ce10dcfad224979f1af82f96e8fa201
|
4
|
+
data.tar.gz: bce85e35b8871f4ec9ba42410043bd74608ce577ea5221f4397ee0929b2be03b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 733173b97da6b8f8043dec130ddabb32f7f5e94673a095029d5d52b9b74326f34dee5fd2a6fcbcb91908d6168bce08ae22b2997d1c8e2124de3680f5c9e60bc4
|
7
|
+
data.tar.gz: e845d5bd38188d95f680a42b3ab78c06e8c485dcb27a6768ad4f4366208ca176b24db1ef657bfd3cb5c72c9b32440b4d536910bba36a454bfea52214a68f08a1
|
data/README.md
CHANGED
@@ -20,16 +20,17 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
Configure your Faraday connection to use this adapter like this:
|
24
|
-
|
25
23
|
```ruby
|
26
|
-
|
27
|
-
|
24
|
+
conn = Faraday.new(...) do |f|
|
25
|
+
f.adapter :net_http do |http|
|
26
|
+
# yields Net::HTTP
|
27
|
+
http.verify_callback = lambda do |preverify, cert_store|
|
28
|
+
# do something here...
|
29
|
+
end
|
30
|
+
end
|
28
31
|
end
|
29
32
|
```
|
30
33
|
|
31
|
-
For more information on how to setup your Faraday connection and adapters usage, please refer to the [Faraday Website][faraday-website].
|
32
|
-
|
33
34
|
## Development
|
34
35
|
|
35
36
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -49,9 +50,8 @@ The gem is available as open source under the terms of the [license][license].
|
|
49
50
|
Everyone interacting in the Faraday Net::HTTP adapter project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct][code-of-conduct].
|
50
51
|
|
51
52
|
[faraday]: https://github.com/lostisland/faraday
|
52
|
-
[faraday-website]: https://lostisland.github.io/faraday
|
53
53
|
[net-http]: https://ruby-doc.org/stdlib-2.7.0/libdoc/net/http/rdoc/Net/HTTP.html
|
54
54
|
[rubygems]: https://rubygems.org
|
55
55
|
[repo]: https://github.com/lostisland/faraday-net_http
|
56
56
|
[license]: https://github.com/lostisland/faraday-net_http/blob/main/LICENSE.md
|
57
|
-
[code-of-conduct]: https://github.com/lostisland/faraday-net_http/blob/main/CODE_OF_CONDUCT.md
|
57
|
+
[code-of-conduct]: https://github.com/lostisland/faraday-net_http/blob/main/CODE_OF_CONDUCT.md
|
@@ -15,6 +15,7 @@ module Faraday
|
|
15
15
|
exceptions = [
|
16
16
|
IOError,
|
17
17
|
Errno::EADDRNOTAVAIL,
|
18
|
+
Errno::EALREADY,
|
18
19
|
Errno::ECONNABORTED,
|
19
20
|
Errno::ECONNREFUSED,
|
20
21
|
Errno::ECONNRESET,
|
@@ -61,24 +62,13 @@ module Faraday
|
|
61
62
|
|
62
63
|
def call(env)
|
63
64
|
super
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
raise Faraday::SSLError, e if defined?(OpenSSL) && e.is_a?(OpenSSL::SSL::SSLError)
|
65
|
+
connection(env) do |http|
|
66
|
+
perform_request(http, env)
|
67
|
+
rescue *NET_HTTP_EXCEPTIONS => e
|
68
|
+
raise Faraday::SSLError, e if defined?(OpenSSL) && e.is_a?(OpenSSL::SSL::SSLError)
|
69
69
|
|
70
|
-
|
71
|
-
end
|
70
|
+
raise Faraday::ConnectionFailed, e
|
72
71
|
end
|
73
|
-
|
74
|
-
save_response(env, http_response.code.to_i,
|
75
|
-
http_response.body || +'', nil,
|
76
|
-
http_response.message) do |response_headers|
|
77
|
-
http_response.each_header do |key, value|
|
78
|
-
response_headers[key] = value
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
72
|
@app.call env
|
83
73
|
rescue Timeout::Error, Errno::ETIMEDOUT => e
|
84
74
|
raise Faraday::TimeoutError, e
|
@@ -103,53 +93,37 @@ module Faraday
|
|
103
93
|
end
|
104
94
|
|
105
95
|
def perform_request(http, env)
|
106
|
-
if env
|
107
|
-
|
108
|
-
|
109
|
-
http_response = request_with_wrapped_block(http, env) do |chunk|
|
110
|
-
if chunk.bytesize.positive? || size.positive?
|
111
|
-
yielded = true
|
112
|
-
size += chunk.bytesize
|
113
|
-
env[:request].on_data.call(chunk, size)
|
114
|
-
end
|
96
|
+
if env.stream_response?
|
97
|
+
http_response = env.stream_response do |&on_data|
|
98
|
+
request_with_wrapped_block(http, env, &on_data)
|
115
99
|
end
|
116
|
-
env[:request].on_data.call(+'', 0) unless yielded
|
117
|
-
# Net::HTTP returns something,
|
118
|
-
# but it's not meaningful according to the docs.
|
119
100
|
http_response.body = nil
|
120
|
-
http_response
|
121
101
|
else
|
122
|
-
request_with_wrapped_block(http, env)
|
102
|
+
http_response = request_with_wrapped_block(http, env)
|
123
103
|
end
|
104
|
+
env.response_body = encoded_body(http_response)
|
105
|
+
env.response.finish(env)
|
106
|
+
http_response
|
124
107
|
end
|
125
108
|
|
126
109
|
def request_with_wrapped_block(http, env, &block)
|
127
|
-
if (env[:method] == :get) && !env[:body]
|
128
|
-
# prefer `get` to `request` because the former handles gzip (ruby 1.9)
|
129
|
-
request_via_get_method(http, env, &block)
|
130
|
-
else
|
131
|
-
request_via_request_method(http, env, &block)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
def request_via_get_method(http, env, &block)
|
136
110
|
# Must use Net::HTTP#start and pass it a block otherwise the server's
|
137
111
|
# TCP socket does not close correctly.
|
138
112
|
http.start do |opened_http|
|
139
|
-
opened_http.
|
113
|
+
opened_http.request create_request(env) do |response|
|
114
|
+
save_http_response(env, response)
|
115
|
+
|
116
|
+
response.read_body(&block) if block_given?
|
117
|
+
end
|
140
118
|
end
|
141
119
|
end
|
142
120
|
|
143
|
-
def
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
response.read_body(&block)
|
150
|
-
end
|
151
|
-
else
|
152
|
-
opened_http.request create_request(env)
|
121
|
+
def save_http_response(env, http_response)
|
122
|
+
save_response(
|
123
|
+
env, http_response.code.to_i, nil, nil, http_response.message, finished: false
|
124
|
+
) do |response_headers|
|
125
|
+
http_response.each_header do |key, value|
|
126
|
+
response_headers[key] = value
|
153
127
|
end
|
154
128
|
end
|
155
129
|
end
|
@@ -168,6 +142,7 @@ module Faraday
|
|
168
142
|
http.ssl_version = ssl[:version] if ssl[:version]
|
169
143
|
http.min_version = ssl[:min_version] if ssl[:min_version]
|
170
144
|
http.max_version = ssl[:max_version] if ssl[:max_version]
|
145
|
+
http.verify_hostname = ssl[:verify_hostname] if verify_hostname_enabled?(http, ssl)
|
171
146
|
end
|
172
147
|
|
173
148
|
def configure_request(http, req)
|
@@ -193,20 +168,34 @@ module Faraday
|
|
193
168
|
def ssl_cert_store(ssl)
|
194
169
|
return ssl[:cert_store] if ssl[:cert_store]
|
195
170
|
|
196
|
-
|
197
|
-
|
198
|
-
OpenSSL::X509::Store.new.tap(&:set_default_paths)
|
199
|
-
end
|
171
|
+
# Use the default cert store by default, i.e. system ca certs
|
172
|
+
@ssl_cert_store ||= OpenSSL::X509::Store.new.tap(&:set_default_paths)
|
200
173
|
end
|
201
174
|
|
202
175
|
def ssl_verify_mode(ssl)
|
203
176
|
ssl[:verify_mode] || begin
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
177
|
+
if ssl.fetch(:verify, true)
|
178
|
+
OpenSSL::SSL::VERIFY_PEER
|
179
|
+
else
|
180
|
+
OpenSSL::SSL::VERIFY_NONE
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def encoded_body(http_response)
|
186
|
+
body = http_response.body || +''
|
187
|
+
/\bcharset=([^;]+)/.match(http_response['Content-Type']) do |match|
|
188
|
+
content_charset = ::Encoding.find(match[1].strip)
|
189
|
+
body = body.dup if body.frozen?
|
190
|
+
body.force_encoding(content_charset)
|
191
|
+
rescue ArgumentError
|
192
|
+
nil
|
193
|
+
end
|
194
|
+
body
|
195
|
+
end
|
196
|
+
|
197
|
+
def verify_hostname_enabled?(http, ssl)
|
198
|
+
http.respond_to?(:verify_hostname=) && ssl.key?(:verify_hostname)
|
210
199
|
end
|
211
200
|
end
|
212
201
|
end
|
data/lib/faraday/net_http.rb
CHANGED
metadata
CHANGED
@@ -1,155 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faraday-net_http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan van der Pas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.5'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: net-http
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
type: :
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '2.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '13.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '13.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '3.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '3.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: simplecov
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 0.19.0
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 0.19.0
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: multipart-parser
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 0.1.1
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 0.1.1
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: webmock
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '3.4'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '3.4'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rubocop
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 0.91.1
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 0.91.1
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rubocop-packaging
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0.5'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0.5'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rubocop-performance
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '1.0'
|
146
|
-
type: :development
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
147
35
|
prerelease: false
|
148
36
|
version_requirements: !ruby/object:Gem::Requirement
|
149
37
|
requirements:
|
150
|
-
- - "
|
38
|
+
- - ">="
|
151
39
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
40
|
+
version: '0'
|
153
41
|
description: Faraday adapter for Net::HTTP
|
154
42
|
email:
|
155
43
|
- janvanderpas@gmail.com
|
@@ -168,7 +56,7 @@ licenses:
|
|
168
56
|
metadata:
|
169
57
|
homepage_uri: https://github.com/lostisland/faraday-net_http
|
170
58
|
source_code_uri: https://github.com/lostisland/faraday-net_http
|
171
|
-
changelog_uri: https://github.com/lostisland/faraday-net_http
|
59
|
+
changelog_uri: https://github.com/lostisland/faraday-net_http/releases/tag/v3.1.0
|
172
60
|
post_install_message:
|
173
61
|
rdoc_options: []
|
174
62
|
require_paths:
|
@@ -177,14 +65,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
177
65
|
requirements:
|
178
66
|
- - ">="
|
179
67
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
68
|
+
version: 3.0.0
|
181
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
70
|
requirements:
|
183
71
|
- - ">="
|
184
72
|
- !ruby/object:Gem::Version
|
185
73
|
version: '0'
|
186
74
|
requirements: []
|
187
|
-
rubygems_version: 3.
|
75
|
+
rubygems_version: 3.5.3
|
188
76
|
signing_key:
|
189
77
|
specification_version: 4
|
190
78
|
summary: Faraday adapter for Net::HTTP
|