httpx 1.1.4 → 1.2.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 +5 -5
- data/doc/release_notes/1_1_4.md +1 -1
- data/doc/release_notes/1_1_5.md +12 -0
- data/doc/release_notes/1_2_0.md +49 -0
- data/lib/httpx/adapters/webmock.rb +29 -8
- data/lib/httpx/altsvc.rb +57 -2
- data/lib/httpx/chainable.rb +40 -29
- data/lib/httpx/connection/http1.rb +27 -22
- data/lib/httpx/connection/http2.rb +7 -3
- data/lib/httpx/connection.rb +45 -60
- data/lib/httpx/extensions.rb +0 -15
- data/lib/httpx/options.rb +84 -27
- data/lib/httpx/plugins/aws_sigv4.rb +2 -2
- data/lib/httpx/plugins/basic_auth.rb +1 -1
- data/lib/httpx/plugins/callbacks.rb +91 -0
- data/lib/httpx/plugins/circuit_breaker.rb +2 -0
- data/lib/httpx/plugins/cookies.rb +19 -9
- data/lib/httpx/plugins/digest_auth.rb +1 -1
- data/lib/httpx/plugins/follow_redirects.rb +11 -0
- data/lib/httpx/plugins/grpc/call.rb +2 -3
- data/lib/httpx/plugins/grpc/grpc_encoding.rb +1 -0
- data/lib/httpx/plugins/grpc.rb +2 -2
- data/lib/httpx/plugins/h2c.rb +20 -8
- data/lib/httpx/plugins/proxy/socks4.rb +2 -2
- data/lib/httpx/plugins/proxy/socks5.rb +2 -2
- data/lib/httpx/plugins/proxy.rb +14 -32
- data/lib/httpx/plugins/rate_limiter.rb +1 -1
- data/lib/httpx/plugins/retries.rb +4 -0
- data/lib/httpx/plugins/ssrf_filter.rb +142 -0
- data/lib/httpx/plugins/stream.rb +9 -4
- data/lib/httpx/plugins/upgrade/h2.rb +1 -1
- data/lib/httpx/plugins/upgrade.rb +1 -1
- data/lib/httpx/plugins/webdav.rb +1 -1
- data/lib/httpx/pool.rb +32 -28
- data/lib/httpx/request/body.rb +3 -3
- data/lib/httpx/request.rb +12 -3
- data/lib/httpx/resolver/https.rb +3 -2
- data/lib/httpx/resolver/native.rb +1 -0
- data/lib/httpx/resolver/resolver.rb +17 -6
- data/lib/httpx/response.rb +1 -1
- data/lib/httpx/session.rb +13 -82
- data/lib/httpx/timers.rb +3 -10
- data/lib/httpx/transcoder.rb +1 -1
- data/lib/httpx/version.rb +1 -1
- data/sig/altsvc.rbs +33 -0
- data/sig/chainable.rbs +1 -0
- data/sig/connection/http1.rbs +2 -1
- data/sig/connection.rbs +16 -16
- data/sig/options.rbs +10 -2
- data/sig/plugins/callbacks.rbs +38 -0
- data/sig/plugins/cookies.rbs +2 -0
- data/sig/plugins/follow_redirects.rbs +2 -0
- data/sig/plugins/proxy/socks4.rbs +2 -1
- data/sig/plugins/proxy/socks5.rbs +2 -1
- data/sig/plugins/proxy.rbs +11 -1
- data/sig/plugins/stream.rbs +24 -22
- data/sig/pool.rbs +1 -3
- data/sig/resolver/resolver.rbs +3 -1
- data/sig/session.rbs +4 -4
- metadata +12 -4
data/lib/httpx/session.rb
CHANGED
@@ -8,7 +8,6 @@ module HTTPX
|
|
8
8
|
class Session
|
9
9
|
include Loggable
|
10
10
|
include Chainable
|
11
|
-
include Callbacks
|
12
11
|
|
13
12
|
EMPTY_HASH = {}.freeze
|
14
13
|
|
@@ -85,33 +84,7 @@ module HTTPX
|
|
85
84
|
options = @options.merge(options) unless options.is_a?(Options)
|
86
85
|
request = rklass.new(verb, uri, options)
|
87
86
|
request.persistent = @persistent
|
88
|
-
|
89
|
-
request.on(:promise, &method(:on_promise))
|
90
|
-
|
91
|
-
request.on(:headers) do
|
92
|
-
emit(:request_started, request)
|
93
|
-
end
|
94
|
-
request.on(:body_chunk) do |chunk|
|
95
|
-
emit(:request_body_chunk, request, chunk)
|
96
|
-
end
|
97
|
-
request.on(:done) do
|
98
|
-
emit(:request_completed, request)
|
99
|
-
end
|
100
|
-
|
101
|
-
request.on(:response_started) do |res|
|
102
|
-
if res.is_a?(Response)
|
103
|
-
emit(:response_started, request, res)
|
104
|
-
res.on(:chunk_received) do |chunk|
|
105
|
-
emit(:response_body_chunk, request, res, chunk)
|
106
|
-
end
|
107
|
-
else
|
108
|
-
emit(:request_error, request, res.error)
|
109
|
-
end
|
110
|
-
end
|
111
|
-
request.on(:response) do |res|
|
112
|
-
emit(:response_completed, request, res)
|
113
|
-
end
|
114
|
-
|
87
|
+
set_request_callbacks(request)
|
115
88
|
request
|
116
89
|
end
|
117
90
|
|
@@ -143,7 +116,7 @@ module HTTPX
|
|
143
116
|
def find_connection(request, connections, options)
|
144
117
|
uri = request.uri
|
145
118
|
|
146
|
-
connection = pool.find_connection(uri, options) ||
|
119
|
+
connection = pool.find_connection(uri, options) || init_connection(uri, options)
|
147
120
|
unless connections.nil? || connections.include?(connection)
|
148
121
|
connections << connection
|
149
122
|
set_connection_callbacks(connection, connections, options)
|
@@ -179,15 +152,6 @@ module HTTPX
|
|
179
152
|
other_connection = build_altsvc_connection(connection, connections, alt_origin, origin, alt_params, options)
|
180
153
|
connections << other_connection if other_connection
|
181
154
|
end
|
182
|
-
connection.only(:exhausted) do
|
183
|
-
other_connection = connection.create_idle
|
184
|
-
other_connection.merge(connection)
|
185
|
-
catch(:coalesced) do
|
186
|
-
pool.init_connection(other_connection, options)
|
187
|
-
end
|
188
|
-
set_connection_callbacks(other_connection, connections, options)
|
189
|
-
connections << other_connection
|
190
|
-
end
|
191
155
|
end
|
192
156
|
|
193
157
|
# returns an HTTPX::Connection for the negotiated Alternative Service (or none).
|
@@ -202,24 +166,19 @@ module HTTPX
|
|
202
166
|
|
203
167
|
alt_options = options.merge(ssl: options.ssl.merge(hostname: URI(origin).host))
|
204
168
|
|
205
|
-
connection = pool.find_connection(alt_origin, alt_options) ||
|
169
|
+
connection = pool.find_connection(alt_origin, alt_options) || init_connection(alt_origin, alt_options)
|
170
|
+
|
206
171
|
# advertised altsvc is the same origin being used, ignore
|
207
172
|
return if connection == existing_connection
|
208
173
|
|
174
|
+
connection.extend(AltSvc::ConnectionMixin) unless connection.is_a?(AltSvc::ConnectionMixin)
|
175
|
+
|
209
176
|
set_connection_callbacks(connection, connections, alt_options)
|
210
177
|
|
211
178
|
log(level: 1) { "#{origin} alt-svc: #{alt_origin}" }
|
212
179
|
|
213
|
-
# get uninitialized requests
|
214
|
-
# incidentally, all requests will be re-routed to the first
|
215
|
-
# advertised alt-svc, which incidentally follows the spec.
|
216
|
-
existing_connection.purge_pending do |request|
|
217
|
-
request.origin == origin &&
|
218
|
-
request.state == :idle &&
|
219
|
-
!request.headers.key?("alt-used")
|
220
|
-
end
|
221
|
-
|
222
180
|
connection.merge(existing_connection)
|
181
|
+
existing_connection.terminate
|
223
182
|
connection
|
224
183
|
rescue UnsupportedSchemeError
|
225
184
|
altsvc["noop"] = true
|
@@ -250,30 +209,13 @@ module HTTPX
|
|
250
209
|
requests
|
251
210
|
end
|
252
211
|
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
case uri.scheme
|
257
|
-
when "http"
|
258
|
-
"tcp"
|
259
|
-
when "https"
|
260
|
-
"ssl"
|
261
|
-
else
|
262
|
-
raise UnsupportedSchemeError, "#{uri}: #{uri.scheme}: unsupported URI scheme"
|
263
|
-
end
|
264
|
-
end
|
265
|
-
init_connection(type, uri, options)
|
212
|
+
def set_request_callbacks(request)
|
213
|
+
request.on(:response, &method(:on_response).curry(2)[request])
|
214
|
+
request.on(:promise, &method(:on_promise))
|
266
215
|
end
|
267
216
|
|
268
|
-
def init_connection(
|
269
|
-
connection = options.connection_class.new(
|
270
|
-
connection.on(:open) do
|
271
|
-
emit(:connection_opened, connection.origin, connection.io.socket)
|
272
|
-
# only run close callback if it opened
|
273
|
-
end
|
274
|
-
connection.on(:close) do
|
275
|
-
emit(:connection_closed, connection.origin, connection.io.socket) if connection.used?
|
276
|
-
end
|
217
|
+
def init_connection(uri, options)
|
218
|
+
connection = options.connection_class.new(uri, options)
|
277
219
|
catch(:coalesced) do
|
278
220
|
pool.init_connection(connection, options)
|
279
221
|
connection
|
@@ -369,19 +311,8 @@ module HTTPX
|
|
369
311
|
extend(pl::ClassMethods) if defined?(pl::ClassMethods)
|
370
312
|
|
371
313
|
opts = @default_options
|
372
|
-
opts.
|
373
|
-
opts.request_class.extend(pl::RequestClassMethods) if defined?(pl::RequestClassMethods)
|
374
|
-
opts.response_class.__send__(:include, pl::ResponseMethods) if defined?(pl::ResponseMethods)
|
375
|
-
opts.response_class.extend(pl::ResponseClassMethods) if defined?(pl::ResponseClassMethods)
|
376
|
-
opts.headers_class.__send__(:include, pl::HeadersMethods) if defined?(pl::HeadersMethods)
|
377
|
-
opts.headers_class.extend(pl::HeadersClassMethods) if defined?(pl::HeadersClassMethods)
|
378
|
-
opts.request_body_class.__send__(:include, pl::RequestBodyMethods) if defined?(pl::RequestBodyMethods)
|
379
|
-
opts.request_body_class.extend(pl::RequestBodyClassMethods) if defined?(pl::RequestBodyClassMethods)
|
380
|
-
opts.response_body_class.__send__(:include, pl::ResponseBodyMethods) if defined?(pl::ResponseBodyMethods)
|
381
|
-
opts.response_body_class.extend(pl::ResponseBodyClassMethods) if defined?(pl::ResponseBodyClassMethods)
|
382
|
-
opts.connection_class.__send__(:include, pl::ConnectionMethods) if defined?(pl::ConnectionMethods)
|
314
|
+
opts.extend_with_plugin_classes(pl)
|
383
315
|
if defined?(pl::OptionsMethods)
|
384
|
-
opts.options_class.__send__(:include, pl::OptionsMethods)
|
385
316
|
|
386
317
|
(pl::OptionsMethods.instance_methods - Object.instance_methods).each do |meth|
|
387
318
|
opts.options_class.method_added(meth)
|
data/lib/httpx/timers.rb
CHANGED
@@ -81,16 +81,9 @@ module HTTPX
|
|
81
81
|
@callbacks << callback
|
82
82
|
end
|
83
83
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
@callbacks.delete(callback)
|
88
|
-
end
|
89
|
-
else
|
90
|
-
def delete(callback)
|
91
|
-
@callbacks.delete(callback)
|
92
|
-
@on_empty.call if @callbacks.empty?
|
93
|
-
end
|
84
|
+
def delete(callback)
|
85
|
+
@callbacks.delete(callback)
|
86
|
+
@on_empty.call if @callbacks.empty?
|
94
87
|
end
|
95
88
|
|
96
89
|
def no_callbacks?
|
data/lib/httpx/transcoder.rb
CHANGED
data/lib/httpx/version.rb
CHANGED
data/sig/altsvc.rbs
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module AltSvc
|
3
|
+
module ConnectionMixin
|
4
|
+
|
5
|
+
def send: (Request request) -> void
|
6
|
+
|
7
|
+
def match?: (URI::Generic uri, Options options) -> bool
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def match_altsvcs?: (URI::Generic uri) -> bool
|
12
|
+
|
13
|
+
def match_altsvc_options?: (URI::Generic uri, Options options) -> bool
|
14
|
+
end
|
15
|
+
|
16
|
+
type altsvc_params = Hash[String, untyped]
|
17
|
+
|
18
|
+
def self?.cached_altsvc: (String origin) -> Array[altsvc_params]
|
19
|
+
|
20
|
+
def self?.cached_altsvc_set: (String origin, altsvc_params) -> void
|
21
|
+
|
22
|
+
def self?.lookup: (String origin, Integer | Float ttl) -> Array[altsvc_params]
|
23
|
+
|
24
|
+
def self?.emit: (Request request, response response) { (http_uri alt_origin, String origin, altsvc_params alt_params) -> void } -> void
|
25
|
+
|
26
|
+
def self?.parse: (String altsvc) { (http_uri alt_origin, altsvc_params alt_params) -> void } -> void
|
27
|
+
| (String altsvc) -> Enumerable[[http_uri, altsvc_params]]
|
28
|
+
|
29
|
+
def self?.parse_altsvc_scheme: (String alt_proto) -> String?
|
30
|
+
|
31
|
+
def self.parse_altsvc_origin: (string alt_proto, String alt_origin) -> http_uri?
|
32
|
+
end
|
33
|
+
end
|
data/sig/chainable.rbs
CHANGED
@@ -34,6 +34,7 @@ module HTTPX
|
|
34
34
|
| (:response_cache, ?options) -> Plugins::sessionResponseCache
|
35
35
|
| (:circuit_breaker, ?options) -> Plugins::sessionCircuitBreaker
|
36
36
|
| (:oauth, ?options) -> Plugins::sessionOAuth
|
37
|
+
| (:callbacks, ?options) -> Plugins::sessionCallbacks
|
37
38
|
| (Symbol | Module, ?options) { (Class) -> void } -> Session
|
38
39
|
| (Symbol | Module, ?options) -> Session
|
39
40
|
|
data/sig/connection/http1.rbs
CHANGED
@@ -10,8 +10,9 @@ module HTTPX
|
|
10
10
|
attr_reader pending: Array[Request]
|
11
11
|
attr_reader requests: Array[Request]
|
12
12
|
|
13
|
+
attr_accessor max_concurrent_requests: Integer
|
14
|
+
|
13
15
|
@options: Options
|
14
|
-
@max_concurrent_requests: Integer
|
15
16
|
@max_requests: Integer
|
16
17
|
@parser: Parser::HTTP1
|
17
18
|
@buffer: Buffer
|
data/sig/connection.rbs
CHANGED
@@ -44,25 +44,23 @@ module HTTPX
|
|
44
44
|
|
45
45
|
def addresses: () -> Array[ipaddr]?
|
46
46
|
|
47
|
-
def addresses=: (Array[ipaddr]) -> void
|
47
|
+
def addresses=: (Array[ipaddr] addresses) -> void
|
48
|
+
|
49
|
+
def send: (Request request) -> void
|
48
50
|
|
49
51
|
def match?: (URI::Generic uri, Options options) -> bool
|
50
52
|
|
51
53
|
def expired?: () -> boolish
|
52
54
|
|
53
|
-
def mergeable?: (Connection) -> bool
|
55
|
+
def mergeable?: (Connection connection) -> bool
|
54
56
|
|
55
|
-
def coalescable?: (Connection) -> bool
|
57
|
+
def coalescable?: (Connection connection) -> bool
|
56
58
|
|
57
59
|
def create_idle: (?Hash[Symbol, untyped] options) -> Connection
|
58
60
|
|
59
|
-
def merge: (Connection) -> void
|
60
|
-
|
61
|
-
def purge_pending: () { (Request) -> void } -> void
|
62
|
-
|
63
|
-
def match_altsvcs?: (URI::Generic uri) -> bool
|
61
|
+
def merge: (Connection connection) -> void
|
64
62
|
|
65
|
-
def
|
63
|
+
def purge_pending: () { (Request request) -> void } -> void
|
66
64
|
|
67
65
|
def connecting?: () -> bool
|
68
66
|
|
@@ -74,12 +72,12 @@ module HTTPX
|
|
74
72
|
|
75
73
|
def call: () -> void
|
76
74
|
|
75
|
+
def terminate: () -> void
|
76
|
+
|
77
77
|
def close: () -> void
|
78
78
|
|
79
79
|
def reset: () -> void
|
80
80
|
|
81
|
-
def send: (Request) -> void
|
82
|
-
|
83
81
|
def timeout: () -> Numeric?
|
84
82
|
|
85
83
|
def idling: () -> void
|
@@ -94,7 +92,9 @@ module HTTPX
|
|
94
92
|
|
95
93
|
private
|
96
94
|
|
97
|
-
def initialize: (
|
95
|
+
def initialize: (URI::Generic uri, options) -> void
|
96
|
+
|
97
|
+
def initialize_type: (URI::Generic uri, options) -> io_type
|
98
98
|
|
99
99
|
def connect: () -> void
|
100
100
|
|
@@ -112,15 +112,15 @@ module HTTPX
|
|
112
112
|
|
113
113
|
def set_parser_callbacks: (HTTP1 | HTTP2 parser) -> void
|
114
114
|
|
115
|
-
def transition: (Symbol) -> void
|
115
|
+
def transition: (Symbol nextstate) -> void
|
116
116
|
|
117
|
-
def handle_transition: (Symbol) -> void
|
117
|
+
def handle_transition: (Symbol nextstate) -> void
|
118
118
|
|
119
119
|
def build_socket: (?Array[ipaddr]? addrs) -> (TCP | SSL | UNIX)
|
120
120
|
|
121
|
-
def on_error: (HTTPX::TimeoutError | Error | StandardError) -> void
|
121
|
+
def on_error: (HTTPX::TimeoutError | Error | StandardError error) -> void
|
122
122
|
|
123
|
-
def handle_error: (StandardError) -> void
|
123
|
+
def handle_error: (StandardError error) -> void
|
124
124
|
|
125
125
|
def purge_after_closed: () -> void
|
126
126
|
|
data/sig/options.rbs
CHANGED
@@ -9,9 +9,11 @@ module HTTPX
|
|
9
9
|
OPERATION_TIMEOUT: Integer
|
10
10
|
KEEP_ALIVE_TIMEOUT: Integer
|
11
11
|
SETTINGS_TIMEOUT: Integer
|
12
|
+
CLOSE_HANDSHAKE_TIMEOUT: Integer
|
12
13
|
DEFAULT_OPTIONS: Hash[Symbol, untyped]
|
14
|
+
REQUEST_BODY_IVARS: Array[Symbol]
|
13
15
|
|
14
|
-
type timeout_type = :connect_timeout | :settings_timeout | :operation_timeout | :keep_alive_timeout | :read_timeout | :write_timeout | :request_timeout
|
16
|
+
type timeout_type = :connect_timeout | :settings_timeout | :close_handshake_timeout | :operation_timeout | :keep_alive_timeout | :read_timeout | :write_timeout | :request_timeout
|
15
17
|
type timeout = Hash[timeout_type, Numeric?]
|
16
18
|
|
17
19
|
def self.new: (?options) -> instance
|
@@ -120,10 +122,16 @@ module HTTPX
|
|
120
122
|
# ip_families
|
121
123
|
attr_reader ip_families: Array[ip_family]
|
122
124
|
|
123
|
-
def ==: (
|
125
|
+
def ==: (Options other) -> bool
|
126
|
+
|
127
|
+
def options_equals?: (Options other, ?Array[Symbol] ignore_ivars) -> bool
|
128
|
+
|
124
129
|
def merge: (_ToHash[Symbol, untyped] other) -> instance
|
130
|
+
|
125
131
|
def to_hash: () -> Hash[Symbol, untyped]
|
126
132
|
|
133
|
+
def extend_with_plugin_classes: (Module pl) -> void
|
134
|
+
|
127
135
|
private
|
128
136
|
|
129
137
|
REQUEST_IVARS: Array[Symbol]
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module Callbacks
|
4
|
+
class CallbackError < Exception
|
5
|
+
end
|
6
|
+
|
7
|
+
module InstanceMethods
|
8
|
+
include HTTPX::Callbacks
|
9
|
+
|
10
|
+
type socket = TCPSocket | SSLSocket | UNIXSocket
|
11
|
+
|
12
|
+
def on_connection_opened: () { (http_uri origin, socket sock) -> void } -> self
|
13
|
+
|
14
|
+
def on_connection_closed: () { (http_uri origin) -> void } -> self
|
15
|
+
|
16
|
+
def on_request_error: () { (Request request, StandardError error) -> void } -> self
|
17
|
+
|
18
|
+
def on_request_started: () { (Request request) -> void } -> self
|
19
|
+
|
20
|
+
def on_request_body_chunk: () { (Request request, String chunk) -> void } -> self
|
21
|
+
|
22
|
+
def on_request_completed: () { (Request request) -> void } -> self
|
23
|
+
|
24
|
+
def on_response_started: () { (Request request, Response response) -> void } -> self
|
25
|
+
|
26
|
+
def on_response_body_chunk: () { (Request request, Response response, String chunk) -> void } -> self
|
27
|
+
|
28
|
+
def on_response_completed: () { (Request request, response response) -> void } -> self
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def emit_or_callback_error: (*untyped) -> void
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
type sessionCallbacks = Session & Callbacks::InstanceMethods
|
37
|
+
end
|
38
|
+
end
|
data/sig/plugins/cookies.rbs
CHANGED
data/sig/plugins/proxy.rbs
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
module HTTPX
|
2
|
-
class HTTPProxyError <
|
2
|
+
class HTTPProxyError < ConnectionError
|
3
|
+
end
|
4
|
+
|
5
|
+
class ProxySSL < SSL
|
3
6
|
end
|
4
7
|
|
5
8
|
module Plugins
|
@@ -36,6 +39,13 @@ module HTTPX
|
|
36
39
|
|
37
40
|
module InstanceMethods
|
38
41
|
@__proxy_uris: Array[generic_uri]
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def proxy_error?: (Request request, response) -> bool
|
46
|
+
end
|
47
|
+
|
48
|
+
module ConnectionMethods
|
39
49
|
end
|
40
50
|
end
|
41
51
|
|
data/sig/plugins/stream.rbs
CHANGED
@@ -1,26 +1,4 @@
|
|
1
1
|
module HTTPX
|
2
|
-
class StreamResponse
|
3
|
-
include _ToS
|
4
|
-
|
5
|
-
@request: Request & RequestMethods
|
6
|
-
@session: sessionStream
|
7
|
-
@on_chunk: ^(String) -> void | nil
|
8
|
-
|
9
|
-
def each: () { (String) -> void } -> void
|
10
|
-
| () -> Enumerable[String]
|
11
|
-
|
12
|
-
def each_line: () { (String) -> void } -> void
|
13
|
-
| () -> Enumerable[String]
|
14
|
-
|
15
|
-
def on_chunk: (string) -> void
|
16
|
-
|
17
|
-
def initialize: (Request, Session) -> void
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def response: () -> response
|
22
|
-
end
|
23
|
-
|
24
2
|
module Plugins
|
25
3
|
module Stream
|
26
4
|
module InstanceMethods
|
@@ -42,4 +20,28 @@ module HTTPX
|
|
42
20
|
|
43
21
|
type sessionStream = Session & Stream::InstanceMethods
|
44
22
|
end
|
23
|
+
|
24
|
+
class StreamResponse
|
25
|
+
include _ToS
|
26
|
+
|
27
|
+
type streamRequest = Request & Plugins::Stream::RequestMethods
|
28
|
+
|
29
|
+
@request: streamRequest
|
30
|
+
@session: Plugins::sessionStream
|
31
|
+
@on_chunk: ^(String) -> void | nil
|
32
|
+
|
33
|
+
def each: () { (String) -> void } -> void
|
34
|
+
| () -> Enumerable[String]
|
35
|
+
|
36
|
+
def each_line: () { (String) -> void } -> void
|
37
|
+
| () -> Enumerable[String]
|
38
|
+
|
39
|
+
def on_chunk: (string) -> void
|
40
|
+
|
41
|
+
def initialize: (streamRequest, Plugins::sessionStream) -> void
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def response: () -> response
|
46
|
+
end
|
45
47
|
end
|
data/sig/pool.rbs
CHANGED
@@ -6,8 +6,6 @@ module HTTPX
|
|
6
6
|
@timers: Timers
|
7
7
|
@selector: Selector
|
8
8
|
@connections: Array[Connection]
|
9
|
-
@eden_connections: Array[Connection]
|
10
|
-
@connected_connections: Integer
|
11
9
|
|
12
10
|
def empty?: () -> void
|
13
11
|
|
@@ -37,7 +35,7 @@ module HTTPX
|
|
37
35
|
|
38
36
|
def register_connection: (Connection) -> void
|
39
37
|
|
40
|
-
def unregister_connection: (Connection) -> void
|
38
|
+
def unregister_connection: (Connection, ?bool cleanup) -> void
|
41
39
|
|
42
40
|
def select_connection: (Selector::selectable) -> void
|
43
41
|
|
data/sig/resolver/resolver.rbs
CHANGED
@@ -14,6 +14,8 @@ module HTTPX
|
|
14
14
|
|
15
15
|
def close: () -> void
|
16
16
|
|
17
|
+
alias terminate close
|
18
|
+
|
17
19
|
def closed?: () -> bool
|
18
20
|
|
19
21
|
def empty?: () -> bool
|
@@ -22,7 +24,7 @@ module HTTPX
|
|
22
24
|
|
23
25
|
private
|
24
26
|
|
25
|
-
def emit_resolved_connection: (Connection connection, Array[IPAddr] addresses) -> void
|
27
|
+
def emit_resolved_connection: (Connection connection, Array[IPAddr] addresses, bool early_resolve) -> void
|
26
28
|
|
27
29
|
def initialize: (ip_family? family, options options) -> void
|
28
30
|
|
data/sig/session.rbs
CHANGED
@@ -33,7 +33,9 @@ module HTTPX
|
|
33
33
|
|
34
34
|
def set_connection_callbacks: (Connection connection, Array[Connection] connections, Options options) -> void
|
35
35
|
|
36
|
-
def
|
36
|
+
def set_request_callbacks: (Request request) -> void
|
37
|
+
|
38
|
+
def build_altsvc_connection: (Connection existing_connection, Array[Connection] connections, URI::Generic alt_origin, String origin, Hash[String, String] alt_params, Options options) -> (Connection & AltSvc::ConnectionMixin)?
|
37
39
|
|
38
40
|
def build_requests: (verb, uri, options) -> Array[Request]
|
39
41
|
| (Array[[verb, uri, options]], options) -> Array[Request]
|
@@ -41,9 +43,7 @@ module HTTPX
|
|
41
43
|
| (verb, _Each[[uri, options]], Options) -> Array[Request]
|
42
44
|
| (verb, _Each[uri], options) -> Array[Request]
|
43
45
|
|
44
|
-
def
|
45
|
-
|
46
|
-
def init_connection: (String type, URI::HTTP | URI::HTTP uri, Options options) -> Connection
|
46
|
+
def init_connection: (URI::HTTP | URI::HTTP uri, Options options) -> Connection
|
47
47
|
|
48
48
|
def send_requests: (*Request) -> Array[response]
|
49
49
|
|
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.
|
4
|
+
version: 1.2.0
|
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-
|
11
|
+
date: 2023-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http-2-next
|
@@ -136,6 +136,8 @@ extra_rdoc_files:
|
|
136
136
|
- doc/release_notes/1_1_2.md
|
137
137
|
- doc/release_notes/1_1_3.md
|
138
138
|
- doc/release_notes/1_1_4.md
|
139
|
+
- doc/release_notes/1_1_5.md
|
140
|
+
- doc/release_notes/1_2_0.md
|
139
141
|
files:
|
140
142
|
- LICENSE.txt
|
141
143
|
- README.md
|
@@ -243,6 +245,8 @@ files:
|
|
243
245
|
- doc/release_notes/1_1_2.md
|
244
246
|
- doc/release_notes/1_1_3.md
|
245
247
|
- doc/release_notes/1_1_4.md
|
248
|
+
- doc/release_notes/1_1_5.md
|
249
|
+
- doc/release_notes/1_2_0.md
|
246
250
|
- lib/httpx.rb
|
247
251
|
- lib/httpx/adapters/datadog.rb
|
248
252
|
- lib/httpx/adapters/faraday.rb
|
@@ -277,6 +281,7 @@ files:
|
|
277
281
|
- lib/httpx/plugins/aws_sigv4.rb
|
278
282
|
- lib/httpx/plugins/basic_auth.rb
|
279
283
|
- lib/httpx/plugins/brotli.rb
|
284
|
+
- lib/httpx/plugins/callbacks.rb
|
280
285
|
- lib/httpx/plugins/circuit_breaker.rb
|
281
286
|
- lib/httpx/plugins/circuit_breaker/circuit.rb
|
282
287
|
- lib/httpx/plugins/circuit_breaker/circuit_store.rb
|
@@ -307,6 +312,7 @@ files:
|
|
307
312
|
- lib/httpx/plugins/response_cache/file_store.rb
|
308
313
|
- lib/httpx/plugins/response_cache/store.rb
|
309
314
|
- lib/httpx/plugins/retries.rb
|
315
|
+
- lib/httpx/plugins/ssrf_filter.rb
|
310
316
|
- lib/httpx/plugins/stream.rb
|
311
317
|
- lib/httpx/plugins/upgrade.rb
|
312
318
|
- lib/httpx/plugins/upgrade/h2.rb
|
@@ -348,6 +354,7 @@ files:
|
|
348
354
|
- lib/httpx/transcoder/xml.rb
|
349
355
|
- lib/httpx/utils.rb
|
350
356
|
- lib/httpx/version.rb
|
357
|
+
- sig/altsvc.rbs
|
351
358
|
- sig/buffer.rbs
|
352
359
|
- sig/callbacks.rbs
|
353
360
|
- sig/chainable.rbs
|
@@ -375,6 +382,7 @@ files:
|
|
375
382
|
- sig/plugins/aws_sigv4.rbs
|
376
383
|
- sig/plugins/basic_auth.rbs
|
377
384
|
- sig/plugins/brotli.rbs
|
385
|
+
- sig/plugins/callbacks.rbs
|
378
386
|
- sig/plugins/circuit_breaker.rbs
|
379
387
|
- sig/plugins/compression.rbs
|
380
388
|
- sig/plugins/cookies.rbs
|
@@ -435,8 +443,8 @@ licenses:
|
|
435
443
|
- Apache 2.0
|
436
444
|
metadata:
|
437
445
|
bug_tracker_uri: https://gitlab.com/os85/httpx/issues
|
438
|
-
changelog_uri: https://
|
439
|
-
documentation_uri: https://
|
446
|
+
changelog_uri: https://honeyryderchuck.gitlab.io/httpx/#release-notes
|
447
|
+
documentation_uri: https://honeyryderchuck.gitlab.io/httpx/rdoc/
|
440
448
|
source_code_uri: https://gitlab.com/os85/httpx
|
441
449
|
homepage_uri: https://honeyryderchuck.gitlab.io/httpx/
|
442
450
|
rubygems_mfa_required: 'true'
|