httpx 0.17.0 → 0.18.3
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 +4 -3
- data/doc/release_notes/0_18_0.md +69 -0
- data/doc/release_notes/0_18_1.md +12 -0
- data/doc/release_notes/0_18_2.md +10 -0
- data/doc/release_notes/0_18_3.md +7 -0
- data/lib/httpx/adapters/datadog.rb +1 -1
- data/lib/httpx/adapters/faraday.rb +5 -3
- data/lib/httpx/adapters/webmock.rb +7 -1
- data/lib/httpx/altsvc.rb +2 -2
- data/lib/httpx/chainable.rb +3 -3
- data/lib/httpx/connection/http1.rb +8 -5
- data/lib/httpx/connection/http2.rb +22 -7
- data/lib/httpx/connection.rb +70 -71
- data/lib/httpx/domain_name.rb +1 -1
- data/lib/httpx/extensions.rb +50 -4
- data/lib/httpx/io/ssl.rb +5 -1
- data/lib/httpx/io/tls.rb +7 -7
- data/lib/httpx/loggable.rb +5 -5
- data/lib/httpx/options.rb +7 -7
- data/lib/httpx/plugins/aws_sdk_authentication.rb +42 -18
- data/lib/httpx/plugins/aws_sigv4.rb +9 -11
- data/lib/httpx/plugins/compression.rb +5 -3
- data/lib/httpx/plugins/cookies/jar.rb +1 -1
- data/lib/httpx/plugins/expect.rb +7 -3
- data/lib/httpx/plugins/grpc/message.rb +2 -2
- data/lib/httpx/plugins/grpc.rb +3 -3
- data/lib/httpx/plugins/internal_telemetry.rb +8 -8
- data/lib/httpx/plugins/multipart.rb +2 -2
- data/lib/httpx/plugins/response_cache/store.rb +55 -0
- data/lib/httpx/plugins/response_cache.rb +88 -0
- data/lib/httpx/plugins/retries.rb +36 -14
- data/lib/httpx/plugins/stream.rb +1 -1
- data/lib/httpx/pool.rb +39 -13
- data/lib/httpx/request.rb +7 -7
- data/lib/httpx/resolver/https.rb +5 -7
- data/lib/httpx/resolver/native.rb +4 -2
- data/lib/httpx/resolver/system.rb +2 -0
- data/lib/httpx/resolver.rb +2 -2
- data/lib/httpx/response.rb +23 -14
- data/lib/httpx/selector.rb +12 -17
- data/lib/httpx/session.rb +7 -2
- data/lib/httpx/session2.rb +1 -1
- data/lib/httpx/timers.rb +84 -0
- data/lib/httpx/transcoder/body.rb +2 -1
- data/lib/httpx/transcoder/form.rb +1 -1
- data/lib/httpx/transcoder/json.rb +1 -1
- data/lib/httpx/utils.rb +8 -0
- data/lib/httpx/version.rb +1 -1
- data/lib/httpx.rb +1 -0
- data/sig/chainable.rbs +1 -0
- data/sig/connection/http1.rbs +5 -0
- data/sig/connection/http2.rbs +3 -0
- data/sig/connection.rbs +12 -6
- data/sig/plugins/aws_sdk_authentication.rbs +22 -4
- data/sig/plugins/response_cache.rbs +35 -0
- data/sig/plugins/retries.rbs +3 -0
- data/sig/pool.rbs +6 -0
- data/sig/resolver/native.rbs +3 -4
- data/sig/resolver/system.rbs +2 -0
- data/sig/response.rbs +3 -2
- data/sig/timers.rbs +32 -0
- data/sig/utils.rbs +4 -0
- metadata +17 -17
data/lib/httpx.rb
CHANGED
data/sig/chainable.rbs
CHANGED
@@ -32,6 +32,7 @@ module HTTPX
|
|
32
32
|
| (:stream, ?options) -> Plugins::sessionStream
|
33
33
|
| (:aws_sigv4, ?options) -> Plugins::awsSigV4Session
|
34
34
|
| (:grpc, ?options) -> Plugins::grpcSession
|
35
|
+
| (:response_cache, ?options) -> Plugins::sessionResponseCache
|
35
36
|
| (Symbol | Module, ?options) { (Class) -> void } -> Session
|
36
37
|
| (Symbol | Module, ?options) -> Session
|
37
38
|
|
data/sig/connection/http1.rbs
CHANGED
data/sig/connection/http2.rbs
CHANGED
data/sig/connection.rbs
CHANGED
@@ -25,7 +25,15 @@ module HTTPX
|
|
25
25
|
attr_reader state: Symbol
|
26
26
|
attr_reader pending: Array[Request]
|
27
27
|
attr_reader options: Options
|
28
|
-
attr_writer timers:
|
28
|
+
attr_writer timers: Timers
|
29
|
+
|
30
|
+
@origins: Array[URI::Generic]
|
31
|
+
@window_size: Integer
|
32
|
+
@read_buffer: Buffer
|
33
|
+
@write_buffer: Buffer
|
34
|
+
@inflight: Integer
|
35
|
+
@keep_alive_timeout: Numeric?
|
36
|
+
@total_timeout: Numeric?
|
29
37
|
|
30
38
|
def addresses: () -> Array[ipaddr]?
|
31
39
|
|
@@ -62,6 +70,7 @@ module HTTPX
|
|
62
70
|
|
63
71
|
def timeout: () -> Numeric?
|
64
72
|
|
73
|
+
def deactivate: () -> void
|
65
74
|
private
|
66
75
|
|
67
76
|
def initialize: (String, URI::Generic, options) -> untyped
|
@@ -76,6 +85,8 @@ module HTTPX
|
|
76
85
|
|
77
86
|
def parser: () -> _Parser
|
78
87
|
|
88
|
+
def send_request_to_parser: (Request request) -> void
|
89
|
+
|
79
90
|
def build_parser: () -> _Parser
|
80
91
|
| (String) -> _Parser
|
81
92
|
|
@@ -83,15 +94,10 @@ module HTTPX
|
|
83
94
|
|
84
95
|
def transition: (Symbol) -> void
|
85
96
|
|
86
|
-
def handle_response: () -> void
|
87
|
-
|
88
97
|
def on_error: (HTTPX::TimeoutError | Error | StandardError) -> void
|
89
98
|
|
90
99
|
def handle_error: (StandardError) -> void
|
91
100
|
|
92
|
-
def total_timeout: () -> untyped?
|
93
|
-
# def total_timeout: () -> Timers::Timer?
|
94
|
-
#
|
95
101
|
def purge_after_closed: () -> void
|
96
102
|
end
|
97
103
|
end
|
@@ -1,25 +1,43 @@
|
|
1
1
|
module HTTPX
|
2
2
|
module Plugins
|
3
3
|
module AwsSdkAuthentication
|
4
|
+
class Configuration
|
5
|
+
attr_reader profile: String?
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def initialize: (String? profile) -> void
|
10
|
+
end
|
11
|
+
|
4
12
|
class Credentials
|
13
|
+
@aws_credentials: untyped
|
14
|
+
|
5
15
|
include _SigV4Credentials
|
6
16
|
|
7
17
|
private
|
8
|
-
|
18
|
+
|
9
19
|
def initialize: (untyped aws_credentials) -> untyped
|
10
20
|
end
|
11
21
|
|
22
|
+
interface _AwsSdkOptions
|
23
|
+
def aws_profile: () -> String?
|
24
|
+
end
|
25
|
+
|
12
26
|
def self.load_dependencies: (singleton(Session)) -> void
|
13
27
|
|
14
28
|
def self.configure: (singleton(Session)) -> void
|
15
29
|
|
16
|
-
def self.extra_options: (Options) -> (Options)
|
30
|
+
def self.extra_options: (Options) -> (Options & _AwsSdkOptions)
|
31
|
+
|
32
|
+
def self.credentials: (String? profile) -> Credentials
|
33
|
+
|
34
|
+
def self.region: (String? profile) -> String
|
17
35
|
|
18
36
|
module InstanceMethods
|
19
|
-
def aws_sdk_authentication: (**untyped) -> instance
|
37
|
+
def aws_sdk_authentication: (?credentials: Credentials, ?region: String, **untyped) -> instance
|
20
38
|
end
|
21
39
|
end
|
22
40
|
|
23
|
-
type sessionAwsSdkAuthentication =
|
41
|
+
type sessionAwsSdkAuthentication = awsSigV4Session & AwsSdkAuthentication::InstanceMethods
|
24
42
|
end
|
25
43
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module ResponseCache
|
4
|
+
CACHEABLE_VERBS: Array[Symbol]
|
5
|
+
|
6
|
+
def self?.cacheable_request?: (Request request) -> bool
|
7
|
+
def self?.cacheable_response?: (response response) -> bool
|
8
|
+
def self?.cached_response?: (response response) -> bool
|
9
|
+
|
10
|
+
class Store
|
11
|
+
@store: Hash[URI::Generic, Response]
|
12
|
+
|
13
|
+
def lookup: (URI::Generic uri) -> Response?
|
14
|
+
|
15
|
+
def cached?: (URI::Generic uri) -> bool
|
16
|
+
|
17
|
+
def cache: (URI::Generic uri, Response response) -> void
|
18
|
+
|
19
|
+
def prepare: (Request request) -> void
|
20
|
+
end
|
21
|
+
|
22
|
+
module InstanceMethods
|
23
|
+
@response_cache: Store
|
24
|
+
|
25
|
+
def clear_response_cache: () -> void
|
26
|
+
end
|
27
|
+
|
28
|
+
module ResponseMethods
|
29
|
+
def copy_from_cached: (Response other) -> void
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
type sessionResponseCache = Session & ResponseCache::InstanceMethods
|
34
|
+
end
|
35
|
+
end
|
data/sig/plugins/retries.rbs
CHANGED
@@ -4,6 +4,7 @@ module HTTPX
|
|
4
4
|
MAX_RETRIES: Integer
|
5
5
|
IDEMPOTENT_METHODS: Array[verb]
|
6
6
|
RETRYABLE_ERRORS: Array[singleton(StandardError)]
|
7
|
+
DEFAULT_JITTER: ^(Numeric) -> Numeric
|
7
8
|
|
8
9
|
interface _RetryCallback
|
9
10
|
def call: (response) -> bool?
|
@@ -12,6 +13,8 @@ module HTTPX
|
|
12
13
|
interface _RetriesOptions
|
13
14
|
def retry_after: () -> Numeric?
|
14
15
|
|
16
|
+
def retry_jitter: () -> ^(Numeric) -> Numeric
|
17
|
+
|
15
18
|
def max_retries: () -> Integer?
|
16
19
|
|
17
20
|
def retry_change_requests: () -> boolish
|
data/sig/pool.rbs
CHANGED
@@ -10,6 +10,8 @@ module HTTPX
|
|
10
10
|
|
11
11
|
def find_connection: (generic_uri, Options) -> Connection?
|
12
12
|
|
13
|
+
def deactivate: (*Array[Connection]) -> void
|
14
|
+
|
13
15
|
private
|
14
16
|
|
15
17
|
def initialize: () -> untyped
|
@@ -26,6 +28,10 @@ module HTTPX
|
|
26
28
|
|
27
29
|
def unregister_connection: (Connection) -> void
|
28
30
|
|
31
|
+
def select_connection: (resolver | Connection connection) -> void
|
32
|
+
|
33
|
+
def deselect_connection: (resolver | Connection connection) -> void
|
34
|
+
|
29
35
|
def coalesce_connections: (Connection, Connection) -> void
|
30
36
|
|
31
37
|
def next_timeout: () -> Numeric?
|
data/sig/resolver/native.rbs
CHANGED
@@ -5,8 +5,6 @@ module HTTPX
|
|
5
5
|
include ResolverMixin
|
6
6
|
include _ToIO
|
7
7
|
|
8
|
-
type state = :idle | :open | :closed
|
9
|
-
|
10
8
|
DEFAULTS: Hash[Symbol, untyped]
|
11
9
|
DNS_PORT: Integer
|
12
10
|
|
@@ -21,7 +19,8 @@ module HTTPX
|
|
21
19
|
@queries: Hash[String, Connection]
|
22
20
|
@read_buffer: String
|
23
21
|
@write_buffer: Buffer
|
24
|
-
|
22
|
+
|
23
|
+
attr_reader state: Symbol
|
25
24
|
|
26
25
|
def closed?: () -> bool
|
27
26
|
|
@@ -58,7 +57,7 @@ module HTTPX
|
|
58
57
|
|
59
58
|
def build_socket: () -> void
|
60
59
|
|
61
|
-
def transition: (
|
60
|
+
def transition: (Symbol nextstate) -> void
|
62
61
|
|
63
62
|
def handle_error: (NativeResolveError | StandardError) -> void
|
64
63
|
end
|
data/sig/resolver/system.rbs
CHANGED
data/sig/response.rbs
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module HTTPX
|
2
2
|
interface _Response
|
3
|
-
def raise_for_status: () ->
|
3
|
+
def raise_for_status: () -> self
|
4
|
+
|
5
|
+
def error: () -> StandardError?
|
4
6
|
end
|
5
7
|
|
6
8
|
class Response
|
@@ -89,7 +91,6 @@ module HTTPX
|
|
89
91
|
@options: Options
|
90
92
|
|
91
93
|
attr_reader request: Request
|
92
|
-
attr_reader error: Exception
|
93
94
|
|
94
95
|
def status: () -> (Integer | _ToS)
|
95
96
|
|
data/sig/timers.rbs
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
module HTTPX
|
2
|
+
class Timers
|
3
|
+
@interval: Array[Interval]
|
4
|
+
|
5
|
+
def after: (Numeric interval_in_secs) { () -> void } -> void
|
6
|
+
|
7
|
+
def wait_interval: () -> Numeric?
|
8
|
+
|
9
|
+
def fire: (?StandardError error) -> void
|
10
|
+
|
11
|
+
def cancel: () -> void
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def initialize: () -> void
|
16
|
+
|
17
|
+
class Interval
|
18
|
+
include Comparable
|
19
|
+
|
20
|
+
attr_reader interval: Numeric
|
21
|
+
|
22
|
+
def to_f: () -> Float
|
23
|
+
|
24
|
+
def <<: (^() -> void) -> void
|
25
|
+
|
26
|
+
def elapse: (Numeric elapsed) -> Numeric
|
27
|
+
private
|
28
|
+
|
29
|
+
def initialize: (Numeric interval) -> void
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/sig/utils.rbs
CHANGED
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.
|
4
|
+
version: 0.18.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tiago Cardoso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http-2-next
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.4.1
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: timers
|
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'
|
41
27
|
description: A client library for making HTTP requests from Ruby.
|
42
28
|
email:
|
43
29
|
- cardoso_tiago@hotmail.com
|
@@ -76,6 +62,10 @@ extra_rdoc_files:
|
|
76
62
|
- doc/release_notes/0_16_0.md
|
77
63
|
- doc/release_notes/0_16_1.md
|
78
64
|
- doc/release_notes/0_17_0.md
|
65
|
+
- doc/release_notes/0_18_0.md
|
66
|
+
- doc/release_notes/0_18_1.md
|
67
|
+
- doc/release_notes/0_18_2.md
|
68
|
+
- doc/release_notes/0_18_3.md
|
79
69
|
- doc/release_notes/0_1_0.md
|
80
70
|
- doc/release_notes/0_2_0.md
|
81
71
|
- doc/release_notes/0_2_1.md
|
@@ -131,6 +121,10 @@ files:
|
|
131
121
|
- doc/release_notes/0_16_0.md
|
132
122
|
- doc/release_notes/0_16_1.md
|
133
123
|
- doc/release_notes/0_17_0.md
|
124
|
+
- doc/release_notes/0_18_0.md
|
125
|
+
- doc/release_notes/0_18_1.md
|
126
|
+
- doc/release_notes/0_18_2.md
|
127
|
+
- doc/release_notes/0_18_3.md
|
134
128
|
- doc/release_notes/0_1_0.md
|
135
129
|
- doc/release_notes/0_2_0.md
|
136
130
|
- doc/release_notes/0_2_1.md
|
@@ -214,6 +208,8 @@ files:
|
|
214
208
|
- lib/httpx/plugins/proxy/ssh.rb
|
215
209
|
- lib/httpx/plugins/push_promise.rb
|
216
210
|
- lib/httpx/plugins/rate_limiter.rb
|
211
|
+
- lib/httpx/plugins/response_cache.rb
|
212
|
+
- lib/httpx/plugins/response_cache/store.rb
|
217
213
|
- lib/httpx/plugins/retries.rb
|
218
214
|
- lib/httpx/plugins/stream.rb
|
219
215
|
- lib/httpx/plugins/upgrade.rb
|
@@ -232,6 +228,7 @@ files:
|
|
232
228
|
- lib/httpx/selector.rb
|
233
229
|
- lib/httpx/session.rb
|
234
230
|
- lib/httpx/session2.rb
|
231
|
+
- lib/httpx/timers.rb
|
235
232
|
- lib/httpx/transcoder.rb
|
236
233
|
- lib/httpx/transcoder/body.rb
|
237
234
|
- lib/httpx/transcoder/chunker.rb
|
@@ -278,6 +275,7 @@ files:
|
|
278
275
|
- sig/plugins/proxy/ssh.rbs
|
279
276
|
- sig/plugins/push_promise.rbs
|
280
277
|
- sig/plugins/rate_limiter.rbs
|
278
|
+
- sig/plugins/response_cache.rbs
|
281
279
|
- sig/plugins/retries.rbs
|
282
280
|
- sig/plugins/stream.rbs
|
283
281
|
- sig/plugins/upgrade.rbs
|
@@ -292,6 +290,7 @@ files:
|
|
292
290
|
- sig/response.rbs
|
293
291
|
- sig/selector.rbs
|
294
292
|
- sig/session.rbs
|
293
|
+
- sig/timers.rbs
|
295
294
|
- sig/transcoder.rbs
|
296
295
|
- sig/transcoder/body.rbs
|
297
296
|
- sig/transcoder/chunker.rbs
|
@@ -307,6 +306,7 @@ metadata:
|
|
307
306
|
documentation_uri: https://honeyryderchuck.gitlab.io/httpx/rdoc/
|
308
307
|
source_code_uri: https://gitlab.com/honeyryderchuck/httpx
|
309
308
|
homepage_uri: https://honeyryderchuck.gitlab.io/httpx/
|
309
|
+
rubygems_mfa_required: 'true'
|
310
310
|
post_install_message:
|
311
311
|
rdoc_options: []
|
312
312
|
require_paths:
|
@@ -322,7 +322,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
322
322
|
- !ruby/object:Gem::Version
|
323
323
|
version: '0'
|
324
324
|
requirements: []
|
325
|
-
rubygems_version: 3.2.
|
325
|
+
rubygems_version: 3.2.22
|
326
326
|
signing_key:
|
327
327
|
specification_version: 4
|
328
328
|
summary: HTTPX, to the future, and beyond
|