httpx 1.0.0 → 1.0.2

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: 40c3560dd37c1fc898a5e0beb5a73148285cdae564ee285552aaf4ccb42bc06a
4
- data.tar.gz: 0463ddfdb74f304264c28c513cac13c05d0b0bfc6089a7466d251c8cd94e8782
3
+ metadata.gz: a0f330c17658b6d488b83008df23e73eb276c04fb93f6e72093224a1a6e1d839
4
+ data.tar.gz: 75fea2fe69162c00d371ca83f121883d435be3d7d0749f1f2dce71332c6f18d2
5
5
  SHA512:
6
- metadata.gz: 7a041d6c249f44a8f3c8c0fe4d776722b08e704ef76ba1b6e6a9791a0f7f1dbd191f7c2aa6f8f621ef2a4cb70af51c8ed7ec81653b28e9fd669f8da3687c0423
7
- data.tar.gz: 8071a59d3a00d64981625cdb7e37dbd5749d3baaa597bb78bf8d777559cd6faadd012c6fbad1482a93dfafe5da47650f3059b72665823e197529655ab73c30eb
6
+ metadata.gz: 4c3bf06316177777f8802fc7662021e565ddc19590a2cad092ab3e05759fa778e7edd4f9b6ee9359b582d8828f669236be517129af57a12d17cfe71cde7adf06
7
+ data.tar.gz: 66ef58dbd0c3f4681bbde3e211afaaa7272d88aa4aa70e5791636147439a5bacb2bf85f89d0b33a792ddcf6444ae14e3c64685436b9cb849cb7fad30f3db1ef1
@@ -0,0 +1,10 @@
1
+ # 0.24.6
2
+
3
+ ## dependencies
4
+
5
+ `http-2-next` last supported version for the 0.x series is the last version before v1. This shoul ensure that older versions of `httpx` won't be affected by any of the recent breaking changes.
6
+
7
+ ## Bugfixes
8
+
9
+ * `grpc`: setup of rpc calls from camel-cased symbols has been fixed. As an improvement, the GRPC-enabled session will now support both snake-cased, as well as camel-cased calls.
10
+ * `datadog` adapter has now been patched to support the most recent breaking changes of `ddtrace` configuration DSL (`env_to_bool` is no longer supported).
@@ -0,0 +1,5 @@
1
+ # 1.0.1
2
+
3
+ ## Bugfixes
4
+
5
+ * do not try to inflate empty chunks (it triggered an error during response decoding).
@@ -0,0 +1,7 @@
1
+ # 1.0.2
2
+
3
+ ## bugfixes
4
+
5
+ * bump `http-2-next` to 1.0.1, which fixes a bug where http/2 connection interprets MAX_CONCURRENT_STREAMS as request cap.
6
+ * `grpc`: setup of rpc calls from camel-cased symbols has been fixed. As an improvement, the GRPC-enabled session will now support both snake-cased, as well as camel-cased calls.
7
+ * `datadog` adapter has now been patched to support the most recent breaking changes of `ddtrace` configuration DSL (`env_to_bool` is no longer supported).
@@ -126,19 +126,39 @@ module Datadog::Tracing
126
126
  option :distributed_tracing, default: true
127
127
  option :split_by_domain, default: false
128
128
 
129
- option :enabled do |o|
130
- o.default { env_to_bool("DD_TRACE_HTTPX_ENABLED", true) }
131
- o.lazy
132
- end
129
+ if DDTrace::VERSION::STRING >= "1.13.0"
130
+ option :enabled do |o|
131
+ o.type :bool
132
+ o.env "DD_TRACE_HTTPX_ENABLED"
133
+ o.default true
134
+ end
133
135
 
134
- option :analytics_enabled do |o|
135
- o.default { env_to_bool(%w[DD_TRACE_HTTPX_ANALYTICS_ENABLED DD_HTTPX_ANALYTICS_ENABLED], false) }
136
- o.lazy
137
- end
136
+ option :analytics_enabled do |o|
137
+ o.type :bool
138
+ o.env "DD_TRACE_HTTPX_ANALYTICS_ENABLED"
139
+ o.default false
140
+ end
141
+
142
+ option :analytics_sample_rate do |o|
143
+ o.type :float
144
+ o.env "DD_TRACE_HTTPX_ANALYTICS_SAMPLE_RATE"
145
+ o.default 1.0
146
+ end
147
+ else
148
+ option :enabled do |o|
149
+ o.default { env_to_bool("DD_TRACE_HTTPX_ENABLED", true) }
150
+ o.lazy
151
+ end
138
152
 
139
- option :analytics_sample_rate do |o|
140
- o.default { env_to_float(%w[DD_TRACE_HTTPX_ANALYTICS_SAMPLE_RATE DD_HTTPX_ANALYTICS_SAMPLE_RATE], 1.0) }
141
- o.lazy
153
+ option :analytics_enabled do |o|
154
+ o.default { env_to_bool(%w[DD_TRACE_HTTPX_ANALYTICS_ENABLED DD_HTTPX_ANALYTICS_ENABLED], false) }
155
+ o.lazy
156
+ end
157
+
158
+ option :analytics_sample_rate do |o|
159
+ o.default { env_to_float(%w[DD_TRACE_HTTPX_ANALYTICS_SAMPLE_RATE DD_HTTPX_ANALYTICS_SAMPLE_RATE], 1.0) }
160
+ o.lazy
161
+ end
142
162
  end
143
163
 
144
164
  if defined?(Datadog::Tracing::Contrib::SpanAttributeSchema)
@@ -162,7 +182,19 @@ module Datadog::Tracing
162
182
 
163
183
  option :distributed_tracing, default: true
164
184
 
165
- option :error_handler, default: DEFAULT_ERROR_HANDLER
185
+ if DDTrace::VERSION::STRING >= "1.15.0"
186
+ option :error_handler do |o|
187
+ o.type :proc
188
+ o.default_proc(&DEFAULT_ERROR_HANDLER)
189
+ end
190
+ elsif DDTrace::VERSION::STRING >= "1.13.0"
191
+ option :error_handler do |o|
192
+ o.type :proc
193
+ o.experimental_default_proc(&DEFAULT_ERROR_HANDLER)
194
+ end
195
+ else
196
+ option :error_handler, default: DEFAULT_ERROR_HANDLER
197
+ end
166
198
  end
167
199
  end
168
200
 
@@ -7,7 +7,7 @@ module HTTPX
7
7
  include Callbacks
8
8
  include Loggable
9
9
 
10
- MAX_REQUESTS = 100
10
+ MAX_REQUESTS = 200
11
11
  CRLF = "\r\n"
12
12
 
13
13
  attr_reader :pending, :requests
@@ -35,7 +35,7 @@ module HTTPX
35
35
  @handshake_completed = false
36
36
  @wait_for_handshake = @settings.key?(:wait_for_handshake) ? @settings.delete(:wait_for_handshake) : true
37
37
  @max_concurrent_requests = @options.max_concurrent_requests || MAX_CONCURRENT_REQUESTS
38
- @max_requests = @options.max_requests || 0
38
+ @max_requests = @options.max_requests || Float::INFINITY
39
39
  init_connection
40
40
  end
41
41
 
@@ -82,9 +82,7 @@ module HTTPX
82
82
  end
83
83
 
84
84
  def exhausted?
85
- return false if @max_requests.zero? && @connection.active_stream_count.zero?
86
-
87
- @connection.active_stream_count >= @max_requests
85
+ !@max_requests.positive?
88
86
  end
89
87
 
90
88
  def <<(data)
@@ -92,13 +90,9 @@ module HTTPX
92
90
  end
93
91
 
94
92
  def can_buffer_more_requests?
95
- if @handshake_completed
93
+ (@handshake_completed || !@wait_for_handshake) &&
96
94
  @streams.size < @max_concurrent_requests &&
97
- @streams.size < @max_requests
98
- else
99
- !@wait_for_handshake &&
100
- @streams.size < @max_concurrent_requests
101
- end
95
+ @streams.size < @max_requests
102
96
  end
103
97
 
104
98
  def send(request)
@@ -116,7 +110,6 @@ module HTTPX
116
110
  true
117
111
  rescue HTTP2Next::Error::StreamLimitExceeded
118
112
  @pending.unshift(request)
119
- emit(:exhausted)
120
113
  end
121
114
 
122
115
  def consume
@@ -172,7 +165,6 @@ module HTTPX
172
165
 
173
166
  def init_connection
174
167
  @connection = HTTP2Next::Client.new(@settings)
175
- @connection.max_streams = @max_requests if @connection.respond_to?(:max_streams=) && @max_requests.positive?
176
168
  @connection.on(:frame, &method(:on_frame))
177
169
  @connection.on(:frame_sent, &method(:on_frame_sent))
178
170
  @connection.on(:frame_received, &method(:on_frame_received))
@@ -340,14 +332,7 @@ module HTTPX
340
332
  def on_settings(*)
341
333
  @handshake_completed = true
342
334
  emit(:current_timeout)
343
-
344
- if @max_requests.zero?
345
- @max_requests = @connection.remote_settings[:settings_max_concurrent_streams]
346
-
347
- @connection.max_streams = @max_requests if @connection.respond_to?(:max_streams=) && @max_requests.positive?
348
- end
349
-
350
- @max_concurrent_requests = [@max_concurrent_requests, @max_requests].min
335
+ @max_concurrent_requests = [@max_concurrent_requests, @connection.remote_settings[:settings_max_concurrent_streams]].min
351
336
  send_pending
352
337
  end
353
338
 
@@ -149,17 +149,29 @@ module HTTPX
149
149
  deadline: @options.grpc_deadline,
150
150
  }.merge(opts)
151
151
 
152
+ local_rpc_name = rpc_name.underscore
153
+
152
154
  session_class = Class.new(self.class) do
155
+ # define rpc method with ruby style name
153
156
  class_eval(<<-OUT, __FILE__, __LINE__ + 1)
154
- def #{rpc_name}(input, **opts) # def grpc_action(input, **opts)
155
- rpc_execute("#{rpc_name}", input, **opts) # rpc_execute("grpc_action", input, **opts)
156
- end # end
157
+ def #{local_rpc_name}(input, **opts) # def grpc_action(input, **opts)
158
+ rpc_execute("#{local_rpc_name}", input, **opts) # rpc_execute("grpc_action", input, **opts)
159
+ end # end
157
160
  OUT
161
+
162
+ # define rpc method with original name
163
+ unless local_rpc_name == rpc_name
164
+ class_eval(<<-OUT, __FILE__, __LINE__ + 1)
165
+ def #{rpc_name}(input, **opts) # def grpcAction(input, **opts)
166
+ rpc_execute("#{local_rpc_name}", input, **opts) # rpc_execute("grpc_action", input, **opts)
167
+ end # end
168
+ OUT
169
+ end
158
170
  end
159
171
 
160
172
  session_class.new(@options.merge(
161
173
  grpc_rpcs: @options.grpc_rpcs.merge(
162
- rpc_name.underscore => [rpc_name, input, output, rpc_opts]
174
+ local_rpc_name => [rpc_name, input, output, rpc_opts]
163
175
  ).freeze
164
176
  ))
165
177
  end
@@ -33,7 +33,7 @@ module HTTPX
33
33
 
34
34
  @inflaters.reverse_each do |inflater|
35
35
  chunk = inflater.call(chunk)
36
- end if @inflaters
36
+ end if @inflaters && !chunk.empty?
37
37
 
38
38
  size = chunk.bytesize
39
39
  @length += size
data/lib/httpx/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HTTPX
4
- VERSION = "1.0.0"
4
+ VERSION = "1.0.2"
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: 1.0.0
4
+ version: 1.0.2
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-10-03 00:00:00.000000000 Z
11
+ date: 2023-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http-2-next
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.0
19
+ version: 1.0.1
20
20
  type: :runtime
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.0
26
+ version: 1.0.1
27
27
  description: A client library for making HTTP requests from Ruby.
28
28
  email:
29
29
  - cardoso_tiago@hotmail.com
@@ -106,6 +106,7 @@ extra_rdoc_files:
106
106
  - doc/release_notes/0_24_4.md
107
107
  - doc/release_notes/0_24_5.md
108
108
  - doc/release_notes/0_24_6.md
109
+ - doc/release_notes/0_24_7.md
109
110
  - doc/release_notes/0_2_0.md
110
111
  - doc/release_notes/0_2_1.md
111
112
  - doc/release_notes/0_3_0.md
@@ -128,6 +129,8 @@ extra_rdoc_files:
128
129
  - doc/release_notes/0_8_2.md
129
130
  - doc/release_notes/0_9_0.md
130
131
  - doc/release_notes/1_0_0.md
132
+ - doc/release_notes/1_0_1.md
133
+ - doc/release_notes/1_0_2.md
131
134
  files:
132
135
  - LICENSE.txt
133
136
  - README.md
@@ -205,6 +208,7 @@ files:
205
208
  - doc/release_notes/0_24_4.md
206
209
  - doc/release_notes/0_24_5.md
207
210
  - doc/release_notes/0_24_6.md
211
+ - doc/release_notes/0_24_7.md
208
212
  - doc/release_notes/0_2_0.md
209
213
  - doc/release_notes/0_2_1.md
210
214
  - doc/release_notes/0_3_0.md
@@ -227,6 +231,8 @@ files:
227
231
  - doc/release_notes/0_8_2.md
228
232
  - doc/release_notes/0_9_0.md
229
233
  - doc/release_notes/1_0_0.md
234
+ - doc/release_notes/1_0_1.md
235
+ - doc/release_notes/1_0_2.md
230
236
  - lib/httpx.rb
231
237
  - lib/httpx/adapters/datadog.rb
232
238
  - lib/httpx/adapters/faraday.rb