faraday-net_http 2.0.3 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ef9f1370ac9c7ce8698f1101dd8bc2abe3127a3499c346af6b59bd46f0091f0
4
- data.tar.gz: 012e6c8f79e2bb6a8ae7f22878d01ee7a5565f7eb5450bff25f7a49ea04760d3
3
+ metadata.gz: 2d9a033eff57867fb6f0d7ef439a1a218ce10dcfad224979f1af82f96e8fa201
4
+ data.tar.gz: bce85e35b8871f4ec9ba42410043bd74608ce577ea5221f4397ee0929b2be03b
5
5
  SHA512:
6
- metadata.gz: 2d386a528dc585efe0bc2cc539009bb8d5a39188632db3fac071115d7da70fa39b52e5fe259cb9d1e028c7ed07bd841098f1f82ec16a07c0a3cc5bb7275efb50
7
- data.tar.gz: c2676a71f09277c68c62c2224609c07853062c353ac47f865d58d00d675cd52694730f660f4d0fb915fb4d20d06e6eca5f05749c7c2ce98e59fb21b691a54afb
6
+ metadata.gz: 733173b97da6b8f8043dec130ddabb32f7f5e94673a095029d5d52b9b74326f34dee5fd2a6fcbcb91908d6168bce08ae22b2997d1c8e2124de3680f5c9e60bc4
7
+ data.tar.gz: e845d5bd38188d95f680a42b3ab78c06e8c485dcb27a6768ad4f4366208ca176b24db1ef657bfd3cb5c72c9b32440b4d536910bba36a454bfea52214a68f08a1
@@ -62,22 +62,13 @@ module Faraday
62
62
 
63
63
  def call(env)
64
64
  super
65
- http_response = connection(env) do |http|
65
+ connection(env) do |http|
66
66
  perform_request(http, env)
67
67
  rescue *NET_HTTP_EXCEPTIONS => e
68
68
  raise Faraday::SSLError, e if defined?(OpenSSL) && e.is_a?(OpenSSL::SSL::SSLError)
69
69
 
70
70
  raise Faraday::ConnectionFailed, e
71
71
  end
72
-
73
- save_response(env, http_response.code.to_i,
74
- encoded_body(http_response), nil,
75
- http_response.message) do |response_headers|
76
- http_response.each_header do |key, value|
77
- response_headers[key] = value
78
- end
79
- end
80
-
81
72
  @app.call env
82
73
  rescue Timeout::Error, Errno::ETIMEDOUT => e
83
74
  raise Faraday::TimeoutError, e
@@ -102,53 +93,37 @@ module Faraday
102
93
  end
103
94
 
104
95
  def perform_request(http, env)
105
- if env[:request].stream_response?
106
- size = 0
107
- yielded = false
108
- http_response = request_with_wrapped_block(http, env) do |chunk|
109
- if chunk.bytesize.positive? || size.positive?
110
- yielded = true
111
- size += chunk.bytesize
112
- env[:request].on_data.call(chunk, size)
113
- end
96
+ if env.stream_response?
97
+ http_response = env.stream_response do |&on_data|
98
+ request_with_wrapped_block(http, env, &on_data)
114
99
  end
115
- env[:request].on_data.call(+'', 0) unless yielded
116
- # Net::HTTP returns something,
117
- # but it's not meaningful according to the docs.
118
100
  http_response.body = nil
119
- http_response
120
101
  else
121
- request_with_wrapped_block(http, env)
102
+ http_response = request_with_wrapped_block(http, env)
122
103
  end
104
+ env.response_body = encoded_body(http_response)
105
+ env.response.finish(env)
106
+ http_response
123
107
  end
124
108
 
125
109
  def request_with_wrapped_block(http, env, &block)
126
- if (env[:method] == :get) && !env[:body]
127
- # prefer `get` to `request` because the former handles gzip (ruby 1.9)
128
- request_via_get_method(http, env, &block)
129
- else
130
- request_via_request_method(http, env, &block)
131
- end
132
- end
133
-
134
- def request_via_get_method(http, env, &block)
135
110
  # Must use Net::HTTP#start and pass it a block otherwise the server's
136
111
  # TCP socket does not close correctly.
137
112
  http.start do |opened_http|
138
- opened_http.get env[:url].request_uri, env[:request_headers], &block
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
139
118
  end
140
119
  end
141
120
 
142
- def request_via_request_method(http, env, &block)
143
- # Must use Net::HTTP#start and pass it a block otherwise the server's
144
- # TCP socket does not close correctly.
145
- http.start do |opened_http|
146
- if block_given?
147
- opened_http.request create_request(env) do |response|
148
- response.read_body(&block)
149
- end
150
- else
151
- 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
152
127
  end
153
128
  end
154
129
  end
@@ -167,6 +142,7 @@ module Faraday
167
142
  http.ssl_version = ssl[:version] if ssl[:version]
168
143
  http.min_version = ssl[:min_version] if ssl[:min_version]
169
144
  http.max_version = ssl[:max_version] if ssl[:max_version]
145
+ http.verify_hostname = ssl[:verify_hostname] if verify_hostname_enabled?(http, ssl)
170
146
  end
171
147
 
172
148
  def configure_request(http, req)
@@ -192,26 +168,24 @@ module Faraday
192
168
  def ssl_cert_store(ssl)
193
169
  return ssl[:cert_store] if ssl[:cert_store]
194
170
 
195
- @ssl_cert_store ||= begin
196
- # Use the default cert store by default, i.e. system ca certs
197
- OpenSSL::X509::Store.new.tap(&:set_default_paths)
198
- 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)
199
173
  end
200
174
 
201
175
  def ssl_verify_mode(ssl)
202
176
  ssl[:verify_mode] || begin
203
- if ssl.fetch(:verify, true)
204
- OpenSSL::SSL::VERIFY_PEER
205
- else
206
- OpenSSL::SSL::VERIFY_NONE
207
- end
208
- end
177
+ if ssl.fetch(:verify, true)
178
+ OpenSSL::SSL::VERIFY_PEER
179
+ else
180
+ OpenSSL::SSL::VERIFY_NONE
181
+ end
182
+ end
209
183
  end
210
184
 
211
185
  def encoded_body(http_response)
212
186
  body = http_response.body || +''
213
- /\bcharset=\s*(.+?)\s*(;|$)/.match(http_response['Content-Type']) do |match|
214
- content_charset = ::Encoding.find(match.captures.first)
187
+ /\bcharset=([^;]+)/.match(http_response['Content-Type']) do |match|
188
+ content_charset = ::Encoding.find(match[1].strip)
215
189
  body = body.dup if body.frozen?
216
190
  body.force_encoding(content_charset)
217
191
  rescue ArgumentError
@@ -219,6 +193,10 @@ module Faraday
219
193
  end
220
194
  body
221
195
  end
196
+
197
+ def verify_hostname_enabled?(http, ssl)
198
+ http.respond_to?(:verify_hostname=) && ssl.key?(:verify_hostname)
199
+ end
222
200
  end
223
201
  end
224
202
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Faraday
4
4
  module NetHttp
5
- VERSION = '2.0.3'
5
+ VERSION = '3.1.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-net_http
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
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: 2022-05-17 00:00:00.000000000 Z
11
+ date: 2024-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
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: '1.0'
26
+ version: '2.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: net-http
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: Faraday adapter for Net::HTTP
28
42
  email:
29
43
  - janvanderpas@gmail.com
@@ -42,7 +56,7 @@ licenses:
42
56
  metadata:
43
57
  homepage_uri: https://github.com/lostisland/faraday-net_http
44
58
  source_code_uri: https://github.com/lostisland/faraday-net_http
45
- changelog_uri: https://github.com/lostisland/faraday-net_http/releases/tag/v2.0.3
59
+ changelog_uri: https://github.com/lostisland/faraday-net_http/releases/tag/v3.1.0
46
60
  post_install_message:
47
61
  rdoc_options: []
48
62
  require_paths:
@@ -51,14 +65,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: 2.4.0
68
+ version: 3.0.0
55
69
  required_rubygems_version: !ruby/object:Gem::Requirement
56
70
  requirements:
57
71
  - - ">="
58
72
  - !ruby/object:Gem::Version
59
73
  version: '0'
60
74
  requirements: []
61
- rubygems_version: 3.1.6
75
+ rubygems_version: 3.5.3
62
76
  signing_key:
63
77
  specification_version: 4
64
78
  summary: Faraday adapter for Net::HTTP