httpx 0.24.0 → 0.24.1

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: 159ab63d2464f90d5b73651241f85443c6b79d5d4e0e542cbb93a8e876fd9c97
4
- data.tar.gz: 43c759345b7c52114bea8066ce7e27dd1b026a85bbdf624d1d81f12ce3314248
3
+ metadata.gz: 588deec0af9ead32480f7cca9ce8c278b344ccdd2e608cc2a6a8db8c6135647f
4
+ data.tar.gz: 3b69af49050cd6ba7b0317ddcd2286cbe6a2261add9fd0b9839bb89290e3962a
5
5
  SHA512:
6
- metadata.gz: 4139bbc4d97e28c7c12dcaa9c3a1b71490c9b870cb60d432fb07c946af6b9346f71c8b7554abd30f584fe67b790c8095fa658571769c6a1f527b451604327354
7
- data.tar.gz: 07b636c4eaf69fe3e60c10f4f86a0f8a58e9b1b431d27a9bf7a8b431fba2bdec8f1d4175b5b25de4487d02e90c38b00eaa5b789aacd17b5d3ced34790da55948
6
+ metadata.gz: e630447fb6bc2aabb6efd842fdd322734e78e7859ea03126ab3d45cf4580d91ede945aa4e77700ae6cbe92179cc0a7e96fdc294ccaf729b287c4b4269b9b40b8
7
+ data.tar.gz: 138310fead4041c202f32b3e53564023472383f5cc251c59cc88b115c8f2947801da8269518d3dce48ff8b53abe3b1350d92b553a9264be8ab052064a135b605
@@ -0,0 +1,12 @@
1
+ # 0.24.1
2
+
3
+ ## Improvements
4
+
5
+ * datadog adapter: support `:service_name` configuration option.
6
+ * datadog adapter: set `:distributed_tracing` to `true` by default.
7
+ * `:proxy` plugin: when the proxy uri uses an unsupported scheme (i.e.: "scp://125.24.2.1"), a more user friendly error is raised (instead of the previous broken stacktrace).
8
+
9
+ ## Bugfixes
10
+
11
+ * datadog adapter: fix tracing enable call, which was wrongly calling `super`.
12
+ + `:proxy` plugin: fix for bug which was turning off plugins overriding `HTTPX::Connection#send` (such as the datadog adapter).
@@ -160,7 +160,7 @@ module TRACING_MODULE # rubocop:disable Naming/ClassAndModuleCamelCase
160
160
 
161
161
  module RequestMethods
162
162
  def __datadog_enable_trace!
163
- return super if @__datadog_enable_trace
163
+ return if @__datadog_enable_trace
164
164
 
165
165
  RequestTracer.new(self).call
166
166
  @__datadog_enable_trace = true
@@ -203,6 +203,27 @@ module TRACING_MODULE # rubocop:disable Naming/ClassAndModuleCamelCase
203
203
  o.lazy
204
204
  end
205
205
 
206
+ if defined?(TRACING_MODULE::Contrib::SpanAttributeSchema)
207
+ option :service_name do |o|
208
+ o.default do
209
+ TRACING_MODULE::Contrib::SpanAttributeSchema.fetch_service_name(
210
+ "DD_TRACE_HTTPX_SERVICE_NAME",
211
+ "httpx"
212
+ )
213
+ end
214
+ o.lazy
215
+ end
216
+ else
217
+ option :service_name do |o|
218
+ o.default do
219
+ ENV.fetch("DD_TRACE_HTTPX_SERVICE_NAME", "httpx")
220
+ end
221
+ o.lazy
222
+ end
223
+ end
224
+
225
+ option :distributed_tracing, default: true
226
+
206
227
  option :error_handler, default: DEFAULT_ERROR_HANDLER
207
228
  end
208
229
  end
@@ -63,7 +63,7 @@ module HTTPX
63
63
  # Normalizes a _domain_ using the Punycode algorithm as necessary.
64
64
  # The result will be a downcased, ASCII-only string.
65
65
  def normalize(domain)
66
- domain = domain.ascii_only? ? domain : domain.chomp(DOT).unicode_normalize(:nfc)
66
+ domain = domain.chomp(DOT).unicode_normalize(:nfc) unless domain.ascii_only?
67
67
  Punycode.encode_hostname(domain).downcase
68
68
  end
69
69
  end
@@ -6,6 +6,12 @@ module HTTPX
6
6
  module Plugins
7
7
  module Proxy
8
8
  module HTTP
9
+ class << self
10
+ def extra_options(options)
11
+ options.merge(supported_proxy_protocols: options.supported_proxy_protocols + %w[http])
12
+ end
13
+ end
14
+
9
15
  module InstanceMethods
10
16
  def with_proxy_basic_auth(opts)
11
17
  with(proxy: opts.merge(scheme: "basic"))
@@ -16,6 +16,12 @@ module HTTPX
16
16
 
17
17
  Error = Socks4Error
18
18
 
19
+ class << self
20
+ def extra_options(options)
21
+ options.merge(supported_proxy_protocols: options.supported_proxy_protocols + PROTOCOLS)
22
+ end
23
+ end
24
+
19
25
  module ConnectionMethods
20
26
  def interests
21
27
  if @state == :connecting
@@ -18,8 +18,14 @@ module HTTPX
18
18
 
19
19
  Error = Socks5Error
20
20
 
21
- def self.load_dependencies(*)
22
- require_relative "../authentication/socks5"
21
+ class << self
22
+ def load_dependencies(*)
23
+ require_relative "../authentication/socks5"
24
+ end
25
+
26
+ def extra_options(options)
27
+ options.merge(supported_proxy_protocols: options.supported_proxy_protocols + %w[socks5])
28
+ end
23
29
  end
24
30
 
25
31
  module ConnectionMethods
@@ -25,6 +25,10 @@ module HTTPX
25
25
  klass.plugin(:"proxy/socks5")
26
26
  end
27
27
 
28
+ def extra_options(options)
29
+ options.merge(supported_proxy_protocols: [])
30
+ end
31
+
28
32
  if URI::Generic.methods.include?(:use_proxy?)
29
33
  def use_proxy?(*args)
30
34
  URI::Generic.use_proxy?(*args)
@@ -118,6 +122,12 @@ module HTTPX
118
122
  def option_proxy(value)
119
123
  value.is_a?(Parameters) ? value : Hash[value]
120
124
  end
125
+
126
+ def option_supported_proxy_protocols(value)
127
+ raise TypeError, ":supported_proxy_protocols must be an Array" unless value.is_a?(Array)
128
+
129
+ value.map(&:to_s)
130
+ end
121
131
  end
122
132
 
123
133
  module InstanceMethods
@@ -142,8 +152,12 @@ module HTTPX
142
152
  next_proxy = @_proxy_uris.first
143
153
  raise Error, "Failed to connect to proxy" unless next_proxy
144
154
 
155
+ next_proxy = URI(next_proxy)
156
+
157
+ raise Error,
158
+ "#{next_proxy.scheme}: unsupported proxy protocol" unless options.supported_proxy_protocols.include?(next_proxy.scheme)
159
+
145
160
  if proxy.key?(:no_proxy)
146
- next_proxy = URI(next_proxy)
147
161
 
148
162
  no_proxy = proxy[:no_proxy]
149
163
  no_proxy = no_proxy.join(",") if no_proxy.is_a?(Array)
@@ -253,10 +267,11 @@ module HTTPX
253
267
  end
254
268
 
255
269
  def send(request)
256
- return super unless @options.proxy
257
- return super unless connecting?
270
+ return super unless (
271
+ @options.proxy && @state != :idle && connecting?
272
+ )
258
273
 
259
- @pending << request
274
+ (@proxy_pending ||= []) << request
260
275
  end
261
276
 
262
277
  def connecting?
@@ -294,6 +309,12 @@ module HTTPX
294
309
  when :idle
295
310
  transition(:connecting)
296
311
  when :connected
312
+ if @proxy_pending
313
+ while (req = @proxy_pendind.shift)
314
+ send(req)
315
+ end
316
+ end
317
+
297
318
  transition(:open)
298
319
  end
299
320
  end
@@ -9,10 +9,13 @@ module HTTPX
9
9
  # redefine the default options static var, which needs to
10
10
  # refresh options_class
11
11
  options = proxy_session.class.default_options.to_hash
12
- options.freeze
13
12
  original_verbosity = $VERBOSE
14
13
  $VERBOSE = nil
14
+ const_set(:Options, proxy_session.class.default_options.options_class)
15
+ options[:options_class] = Class.new(options[:options_class])
16
+ options.freeze
15
17
  Options.send(:const_set, :DEFAULT_OPTIONS, options)
18
+ Session.instance_variable_set(:@default_options, Options.new(options))
16
19
  $VERBOSE = original_verbosity
17
20
  end
18
21
 
data/lib/httpx/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HTTPX
4
- VERSION = "0.24.0"
4
+ VERSION = "0.24.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: httpx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.24.0
4
+ version: 0.24.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tiago Cardoso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-15 00:00:00.000000000 Z
11
+ date: 2023-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http-2-next
@@ -100,6 +100,7 @@ extra_rdoc_files:
100
100
  - doc/release_notes/0_23_3.md
101
101
  - doc/release_notes/0_23_4.md
102
102
  - doc/release_notes/0_24_0.md
103
+ - doc/release_notes/0_24_1.md
103
104
  - doc/release_notes/0_2_0.md
104
105
  - doc/release_notes/0_2_1.md
105
106
  - doc/release_notes/0_3_0.md
@@ -192,6 +193,7 @@ files:
192
193
  - doc/release_notes/0_23_3.md
193
194
  - doc/release_notes/0_23_4.md
194
195
  - doc/release_notes/0_24_0.md
196
+ - doc/release_notes/0_24_1.md
195
197
  - doc/release_notes/0_2_0.md
196
198
  - doc/release_notes/0_2_1.md
197
199
  - doc/release_notes/0_3_0.md
@@ -392,7 +394,7 @@ metadata:
392
394
  changelog_uri: https://os85.gitlab.io/httpx/#release-notes
393
395
  documentation_uri: https://os85.gitlab.io/httpx/rdoc/
394
396
  source_code_uri: https://gitlab.com/os85/httpx
395
- homepage_uri: https://os85.gitlab.io/httpx/
397
+ homepage_uri: https://honeyryderchuck.gitlab.io/httpx/
396
398
  rubygems_mfa_required: 'true'
397
399
  post_install_message:
398
400
  rdoc_options: []
@@ -409,7 +411,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
409
411
  - !ruby/object:Gem::Version
410
412
  version: '0'
411
413
  requirements: []
412
- rubygems_version: 3.4.6
414
+ rubygems_version: 3.4.10
413
415
  signing_key:
414
416
  specification_version: 4
415
417
  summary: HTTPX, to the future, and beyond