httpx 0.20.0 → 1.3.1
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/LICENSE.txt +0 -48
- data/README.md +54 -45
- data/doc/release_notes/0_10_0.md +2 -2
- data/doc/release_notes/0_11_0.md +3 -5
- data/doc/release_notes/0_12_0.md +5 -5
- data/doc/release_notes/0_13_0.md +5 -5
- data/doc/release_notes/0_14_0.md +2 -2
- data/doc/release_notes/0_16_0.md +3 -3
- data/doc/release_notes/0_17_0.md +1 -1
- data/doc/release_notes/0_18_0.md +4 -4
- data/doc/release_notes/0_18_2.md +1 -1
- data/doc/release_notes/0_19_0.md +1 -1
- data/doc/release_notes/0_19_8.md +1 -1
- data/doc/release_notes/0_20_0.md +2 -2
- data/doc/release_notes/0_20_1.md +5 -0
- data/doc/release_notes/0_20_2.md +7 -0
- data/doc/release_notes/0_20_3.md +6 -0
- data/doc/release_notes/0_20_4.md +17 -0
- data/doc/release_notes/0_20_5.md +3 -0
- data/doc/release_notes/0_21_0.md +96 -0
- data/doc/release_notes/0_21_1.md +12 -0
- data/doc/release_notes/0_22_0.md +13 -0
- data/doc/release_notes/0_22_1.md +11 -0
- data/doc/release_notes/0_22_2.md +5 -0
- data/doc/release_notes/0_22_3.md +55 -0
- data/doc/release_notes/0_22_4.md +6 -0
- data/doc/release_notes/0_22_5.md +6 -0
- data/doc/release_notes/0_23_0.md +42 -0
- data/doc/release_notes/0_23_1.md +5 -0
- data/doc/release_notes/0_23_2.md +5 -0
- data/doc/release_notes/0_23_3.md +6 -0
- data/doc/release_notes/0_23_4.md +5 -0
- data/doc/release_notes/0_24_0.md +48 -0
- data/doc/release_notes/0_24_1.md +12 -0
- data/doc/release_notes/0_24_2.md +12 -0
- data/doc/release_notes/0_24_3.md +12 -0
- data/doc/release_notes/0_24_4.md +18 -0
- data/doc/release_notes/0_24_5.md +6 -0
- data/doc/release_notes/0_24_6.md +5 -0
- data/doc/release_notes/0_24_7.md +10 -0
- data/doc/release_notes/1_0_0.md +60 -0
- data/doc/release_notes/1_0_1.md +5 -0
- data/doc/release_notes/1_0_2.md +7 -0
- data/doc/release_notes/1_1_0.md +32 -0
- data/doc/release_notes/1_1_1.md +17 -0
- data/doc/release_notes/1_1_2.md +12 -0
- data/doc/release_notes/1_1_3.md +18 -0
- data/doc/release_notes/1_1_4.md +6 -0
- data/doc/release_notes/1_1_5.md +12 -0
- data/doc/release_notes/1_2_0.md +49 -0
- data/doc/release_notes/1_2_1.md +6 -0
- data/doc/release_notes/1_2_2.md +10 -0
- data/doc/release_notes/1_2_3.md +16 -0
- data/doc/release_notes/1_2_4.md +8 -0
- data/doc/release_notes/1_2_5.md +7 -0
- data/doc/release_notes/1_2_6.md +13 -0
- data/doc/release_notes/1_3_0.md +18 -0
- data/doc/release_notes/1_3_1.md +17 -0
- data/lib/httpx/adapters/datadog.rb +215 -122
- data/lib/httpx/adapters/faraday.rb +145 -107
- data/lib/httpx/adapters/sentry.rb +26 -7
- data/lib/httpx/adapters/webmock.rb +34 -18
- data/lib/httpx/altsvc.rb +63 -26
- data/lib/httpx/base64.rb +27 -0
- data/lib/httpx/buffer.rb +12 -0
- data/lib/httpx/callbacks.rb +5 -3
- data/lib/httpx/chainable.rb +54 -39
- data/lib/httpx/connection/http1.rb +75 -44
- data/lib/httpx/connection/http2.rb +31 -38
- data/lib/httpx/connection.rb +287 -117
- data/lib/httpx/domain_name.rb +10 -13
- data/lib/httpx/errors.rb +52 -2
- data/lib/httpx/extensions.rb +24 -131
- data/lib/httpx/io/ssl.rb +83 -77
- data/lib/httpx/io/tcp.rb +48 -71
- data/lib/httpx/io/udp.rb +18 -52
- data/lib/httpx/io/unix.rb +10 -15
- data/lib/httpx/io.rb +3 -9
- data/lib/httpx/loggable.rb +4 -19
- data/lib/httpx/options.rb +176 -118
- data/lib/httpx/parser/http1.rb +4 -0
- data/lib/httpx/plugins/{authentication → auth}/basic.rb +1 -5
- data/lib/httpx/plugins/{authentication → auth}/digest.rb +14 -14
- data/lib/httpx/plugins/{authentication → auth}/ntlm.rb +1 -3
- data/lib/httpx/plugins/{authentication → auth}/socks5.rb +0 -2
- data/lib/httpx/plugins/auth.rb +25 -0
- data/lib/httpx/plugins/aws_sdk_authentication.rb +4 -3
- data/lib/httpx/plugins/aws_sigv4.rb +12 -9
- data/lib/httpx/plugins/basic_auth.rb +29 -0
- data/lib/httpx/plugins/brotli.rb +50 -0
- data/lib/httpx/plugins/callbacks.rb +91 -0
- data/lib/httpx/plugins/circuit_breaker/circuit.rb +100 -0
- data/lib/httpx/plugins/circuit_breaker/circuit_store.rb +53 -0
- data/lib/httpx/plugins/circuit_breaker.rb +148 -0
- data/lib/httpx/plugins/cookies/set_cookie_parser.rb +0 -2
- data/lib/httpx/plugins/cookies.rb +30 -17
- data/lib/httpx/plugins/{digest_authentication.rb → digest_auth.rb} +14 -12
- data/lib/httpx/plugins/expect.rb +21 -14
- data/lib/httpx/plugins/follow_redirects.rb +140 -41
- data/lib/httpx/plugins/grpc/call.rb +2 -3
- data/lib/httpx/plugins/grpc/grpc_encoding.rb +88 -0
- data/lib/httpx/plugins/grpc/message.rb +7 -37
- data/lib/httpx/plugins/grpc.rb +36 -29
- data/lib/httpx/plugins/h2c.rb +26 -19
- data/lib/httpx/plugins/internal_telemetry.rb +16 -0
- data/lib/httpx/plugins/{ntlm_authentication.rb → ntlm_auth.rb} +7 -5
- data/lib/httpx/plugins/oauth.rb +175 -0
- data/lib/httpx/plugins/persistent.rb +1 -1
- data/lib/httpx/plugins/proxy/http.rb +23 -13
- data/lib/httpx/plugins/proxy/socks4.rb +9 -7
- data/lib/httpx/plugins/proxy/socks5.rb +11 -9
- data/lib/httpx/plugins/proxy.rb +80 -61
- data/lib/httpx/plugins/push_promise.rb +1 -1
- data/lib/httpx/plugins/rate_limiter.rb +5 -1
- data/lib/httpx/plugins/response_cache/file_store.rb +40 -0
- data/lib/httpx/plugins/response_cache/store.rb +62 -25
- data/lib/httpx/plugins/response_cache.rb +105 -12
- data/lib/httpx/plugins/retries.rb +87 -17
- data/lib/httpx/plugins/ssrf_filter.rb +145 -0
- data/lib/httpx/plugins/stream.rb +27 -23
- data/lib/httpx/plugins/upgrade/h2.rb +4 -4
- data/lib/httpx/plugins/upgrade.rb +8 -10
- data/lib/httpx/plugins/webdav.rb +80 -0
- data/lib/httpx/pool/synch_pool.rb +93 -0
- data/lib/httpx/pool.rb +102 -27
- data/lib/httpx/punycode.rb +9 -291
- data/lib/httpx/request/body.rb +154 -0
- data/lib/httpx/request.rb +130 -146
- data/lib/httpx/resolver/https.rb +62 -27
- data/lib/httpx/resolver/multi.rb +9 -13
- data/lib/httpx/resolver/native.rb +192 -76
- data/lib/httpx/resolver/resolver.rb +34 -9
- data/lib/httpx/resolver/system.rb +16 -11
- data/lib/httpx/resolver.rb +38 -16
- data/lib/httpx/response/body.rb +242 -0
- data/lib/httpx/response/buffer.rb +96 -0
- data/lib/httpx/response.rb +159 -217
- data/lib/httpx/selector.rb +9 -4
- data/lib/httpx/session.rb +137 -89
- data/lib/httpx/session_extensions.rb +4 -1
- data/lib/httpx/timers.rb +34 -8
- data/lib/httpx/transcoder/body.rb +0 -2
- data/lib/httpx/transcoder/chunker.rb +0 -1
- data/lib/httpx/transcoder/deflate.rb +37 -0
- data/lib/httpx/transcoder/form.rb +52 -33
- data/lib/httpx/transcoder/gzip.rb +74 -0
- data/lib/httpx/transcoder/json.rb +21 -8
- data/lib/httpx/transcoder/multipart/decoder.rb +139 -0
- data/lib/httpx/{plugins → transcoder}/multipart/encoder.rb +4 -4
- data/lib/httpx/{plugins → transcoder}/multipart/mime_type_detector.rb +1 -1
- data/lib/httpx/{plugins → transcoder}/multipart/part.rb +3 -2
- data/lib/httpx/transcoder/multipart.rb +17 -0
- data/lib/httpx/transcoder/utils/body_reader.rb +46 -0
- data/lib/httpx/transcoder/utils/deflater.rb +72 -0
- data/lib/httpx/transcoder/utils/inflater.rb +19 -0
- data/lib/httpx/transcoder/xml.rb +52 -0
- data/lib/httpx/transcoder.rb +5 -6
- data/lib/httpx/utils.rb +36 -16
- data/lib/httpx/version.rb +1 -1
- data/lib/httpx.rb +12 -14
- data/sig/altsvc.rbs +33 -0
- data/sig/buffer.rbs +2 -1
- data/sig/callbacks.rbs +3 -3
- data/sig/chainable.rbs +11 -9
- data/sig/connection/http1.rbs +8 -7
- data/sig/connection/http2.rbs +19 -19
- data/sig/connection.rbs +64 -24
- data/sig/errors.rbs +22 -3
- data/sig/httpx.rbs +5 -4
- data/sig/io/ssl.rbs +27 -0
- data/sig/io/tcp.rbs +60 -0
- data/sig/io/udp.rbs +20 -0
- data/sig/io/unix.rbs +27 -0
- data/sig/io.rbs +6 -0
- data/sig/options.rbs +32 -22
- data/sig/parser/http1.rbs +1 -1
- data/sig/plugins/{authentication → auth}/basic.rbs +0 -2
- data/sig/plugins/{authentication → auth}/digest.rbs +2 -1
- data/sig/plugins/auth.rbs +13 -0
- data/sig/plugins/{basic_authentication.rbs → basic_auth.rbs} +2 -2
- data/sig/plugins/brotli.rbs +22 -0
- data/sig/plugins/callbacks.rbs +38 -0
- data/sig/plugins/circuit_breaker.rbs +71 -0
- data/sig/plugins/compression.rbs +7 -5
- data/sig/plugins/cookies/jar.rbs +2 -2
- data/sig/plugins/cookies.rbs +2 -0
- data/sig/plugins/{digest_authentication.rbs → digest_auth.rbs} +2 -2
- data/sig/plugins/follow_redirects.rbs +18 -4
- data/sig/plugins/grpc/call.rbs +19 -0
- data/sig/plugins/grpc/grpc_encoding.rbs +37 -0
- data/sig/plugins/grpc/message.rbs +17 -0
- data/sig/plugins/grpc.rbs +7 -32
- data/sig/plugins/h2c.rbs +1 -1
- data/sig/plugins/{ntlm_authentication.rbs → ntlm_auth.rbs} +2 -2
- data/sig/plugins/oauth.rbs +54 -0
- data/sig/plugins/proxy/http.rbs +3 -0
- data/sig/plugins/proxy/socks4.rbs +9 -6
- data/sig/plugins/proxy/socks5.rbs +10 -6
- data/sig/plugins/proxy/ssh.rbs +1 -1
- data/sig/plugins/proxy.rbs +13 -5
- data/sig/plugins/push_promise.rbs +3 -3
- data/sig/plugins/rate_limiter.rbs +1 -1
- data/sig/plugins/response_cache.rbs +36 -7
- data/sig/plugins/retries.rbs +30 -8
- data/sig/plugins/stream.rbs +24 -17
- data/sig/plugins/upgrade.rbs +5 -3
- data/sig/pool.rbs +10 -7
- data/sig/request/body.rbs +38 -0
- data/sig/request.rbs +15 -24
- data/sig/resolver/https.rbs +8 -3
- data/sig/resolver/native.rbs +17 -4
- data/sig/resolver/resolver.rbs +8 -6
- data/sig/resolver/system.rbs +2 -0
- data/sig/resolver.rbs +9 -5
- data/sig/response/body.rbs +53 -0
- data/sig/response/buffer.rbs +24 -0
- data/sig/response.rbs +24 -39
- data/sig/selector.rbs +1 -1
- data/sig/session.rbs +29 -18
- data/sig/timers.rbs +18 -8
- data/sig/transcoder/body.rbs +4 -3
- data/sig/transcoder/deflate.rbs +11 -0
- data/sig/transcoder/form.rbs +5 -3
- data/sig/transcoder/gzip.rbs +24 -0
- data/sig/transcoder/json.rbs +8 -3
- data/sig/{plugins → transcoder}/multipart.rbs +15 -19
- data/sig/transcoder/utils/body_reader.rbs +15 -0
- data/sig/transcoder/utils/deflater.rbs +29 -0
- data/sig/transcoder/utils/inflater.rbs +12 -0
- data/sig/transcoder/xml.rbs +22 -0
- data/sig/transcoder.rbs +24 -9
- data/sig/utils.rbs +8 -2
- metadata +163 -41
- data/lib/httpx/plugins/authentication.rb +0 -20
- data/lib/httpx/plugins/basic_authentication.rb +0 -30
- data/lib/httpx/plugins/compression/brotli.rb +0 -54
- data/lib/httpx/plugins/compression/deflate.rb +0 -49
- data/lib/httpx/plugins/compression/gzip.rb +0 -88
- data/lib/httpx/plugins/compression.rb +0 -164
- data/lib/httpx/plugins/multipart/decoder.rb +0 -187
- data/lib/httpx/plugins/multipart.rb +0 -84
- data/lib/httpx/registry.rb +0 -85
- data/sig/plugins/authentication.rbs +0 -11
- data/sig/plugins/compression/brotli.rbs +0 -21
- data/sig/plugins/compression/deflate.rbs +0 -17
- data/sig/plugins/compression/gzip.rbs +0 -29
- data/sig/registry.rbs +0 -12
- /data/sig/plugins/{authentication → auth}/ntlm.rbs +0 -0
- /data/sig/plugins/{authentication → auth}/socks5.rbs +0 -0
data/sig/options.rbs
CHANGED
@@ -2,21 +2,25 @@ module HTTPX
|
|
2
2
|
class Options
|
3
3
|
# include _ToHash
|
4
4
|
|
5
|
+
BUFFER_SIZE: Integer
|
5
6
|
WINDOW_SIZE: Integer
|
6
7
|
MAX_BODY_THRESHOLD_SIZE: Integer
|
7
8
|
CONNECT_TIMEOUT: Integer
|
9
|
+
READ_TIMEOUT: Integer
|
10
|
+
WRITE_TIMEOUT: Integer
|
11
|
+
REQUEST_TIMEOUT: Integer
|
8
12
|
OPERATION_TIMEOUT: Integer
|
9
13
|
KEEP_ALIVE_TIMEOUT: Integer
|
10
14
|
SETTINGS_TIMEOUT: Integer
|
15
|
+
CLOSE_HANDSHAKE_TIMEOUT: Integer
|
11
16
|
DEFAULT_OPTIONS: Hash[Symbol, untyped]
|
17
|
+
REQUEST_BODY_IVARS: Array[Symbol]
|
12
18
|
|
13
|
-
type timeout_type = :connect_timeout | :settings_timeout | :operation_timeout | :keep_alive_timeout | :
|
14
|
-
type timeout = Hash[timeout_type, Numeric]
|
19
|
+
type timeout_type = :connect_timeout | :settings_timeout | :close_handshake_timeout | :operation_timeout | :keep_alive_timeout | :read_timeout | :write_timeout | :request_timeout
|
20
|
+
type timeout = Hash[timeout_type, Numeric?]
|
15
21
|
|
16
22
|
def self.new: (?options) -> instance
|
17
23
|
|
18
|
-
def self.def_option: (Symbol, ?String) -> void
|
19
|
-
| (Symbol) { (*nil) -> untyped } -> void
|
20
24
|
# headers
|
21
25
|
attr_reader uri: URI?
|
22
26
|
|
@@ -33,38 +37,38 @@ module HTTPX
|
|
33
37
|
attr_reader max_concurrent_requests: Integer?
|
34
38
|
|
35
39
|
# max_requests
|
36
|
-
attr_reader max_requests:
|
40
|
+
attr_reader max_requests: Numeric?
|
37
41
|
|
38
42
|
# window_size
|
39
43
|
attr_reader window_size: Integer
|
40
44
|
|
45
|
+
# buffer_size
|
46
|
+
attr_reader buffer_size: Integer
|
47
|
+
|
41
48
|
# body_threshold_size
|
42
49
|
attr_reader body_threshold_size: Integer
|
43
50
|
|
44
51
|
# transport
|
45
|
-
attr_reader transport:
|
46
|
-
|
47
|
-
# transport_options
|
48
|
-
attr_reader transport_options: Hash[untyped, untyped]?
|
52
|
+
attr_reader transport: io_type | nil
|
49
53
|
|
50
54
|
# addresses
|
51
55
|
attr_reader addresses: Array[ipaddr]?
|
52
56
|
|
53
|
-
#
|
54
|
-
attr_reader
|
57
|
+
# supported_compression_formats
|
58
|
+
attr_reader supported_compression_formats: Array[String]
|
55
59
|
|
56
|
-
#
|
57
|
-
attr_reader
|
60
|
+
# compress_request_body
|
61
|
+
attr_reader compress_request_body: bool
|
58
62
|
|
59
|
-
#
|
60
|
-
attr_reader
|
63
|
+
# decompress_response_body
|
64
|
+
attr_reader decompress_response_body: bool
|
61
65
|
|
62
|
-
#
|
63
|
-
attr_reader body: bodyIO?
|
64
|
-
|
65
|
-
# body
|
66
|
+
# origin
|
66
67
|
attr_reader origin: URI::Generic?
|
67
68
|
|
69
|
+
# base_path
|
70
|
+
attr_reader base_path: String?
|
71
|
+
|
68
72
|
# ssl
|
69
73
|
|
70
74
|
# http2_settings
|
@@ -109,17 +113,23 @@ module HTTPX
|
|
109
113
|
# ip_families
|
110
114
|
attr_reader ip_families: Array[ip_family]
|
111
115
|
|
112
|
-
def ==: (
|
116
|
+
def ==: (Options other) -> bool
|
117
|
+
|
118
|
+
def options_equals?: (Options other, ?Array[Symbol] ignore_ivars) -> bool
|
119
|
+
|
113
120
|
def merge: (_ToHash[Symbol, untyped] other) -> instance
|
121
|
+
|
114
122
|
def to_hash: () -> Hash[Symbol, untyped]
|
115
123
|
|
124
|
+
def extend_with_plugin_classes: (Module pl) -> void
|
125
|
+
|
116
126
|
private
|
117
127
|
|
118
128
|
REQUEST_IVARS: Array[Symbol]
|
119
129
|
|
120
|
-
def initialize: (?options options) ->
|
130
|
+
def initialize: (?options options) -> void
|
121
131
|
|
122
|
-
def
|
132
|
+
def do_initialize: (?options options) -> void
|
123
133
|
end
|
124
134
|
|
125
135
|
type options = Options | Hash[Symbol, untyped]
|
data/sig/parser/http1.rbs
CHANGED
@@ -4,6 +4,7 @@ module HTTPX
|
|
4
4
|
class Digest
|
5
5
|
@user: String
|
6
6
|
@password: String
|
7
|
+
@hashed: bool
|
7
8
|
|
8
9
|
def can_authenticate?: (String? authenticate) -> boolish
|
9
10
|
|
@@ -13,7 +14,7 @@ module HTTPX
|
|
13
14
|
|
14
15
|
def generate_header: (String meth, String uri, String authenticate) -> String
|
15
16
|
|
16
|
-
def initialize: (string user, string password) -> void
|
17
|
+
def initialize: (string user, string password, ?hashed: bool, **untyped) -> void
|
17
18
|
|
18
19
|
def make_cnonce: () -> String
|
19
20
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module Authorization
|
4
|
+
module InstanceMethods
|
5
|
+
def authorization: (string token) -> instance
|
6
|
+
|
7
|
+
def bearer_auth: (string token) -> instance
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
type sessionAuthorization = Session & Authorization::InstanceMethods
|
12
|
+
end
|
13
|
+
end
|
@@ -6,10 +6,10 @@ module HTTPX
|
|
6
6
|
def self.configure: (singleton(Session)) -> void
|
7
7
|
|
8
8
|
module InstanceMethods
|
9
|
-
def
|
9
|
+
def basic_auth: (string user, string password) -> instance
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
type sessionBasicAuth =
|
13
|
+
type sessionBasicAuth = sessionAuthorization & BasicAuth::InstanceMethods
|
14
14
|
end
|
15
15
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module Brotli
|
4
|
+
def self?.load_dependencies: (singleton(Session)) -> void
|
5
|
+
|
6
|
+
def self?.encode: (body_encoder body) -> Deflater
|
7
|
+
|
8
|
+
def self?.decode: (HTTPX::Response response, ?bytesize: Integer) -> Transcoder::_Decoder
|
9
|
+
|
10
|
+
class Deflater < Transcoder::Deflater
|
11
|
+
end
|
12
|
+
|
13
|
+
module RequestBodyClassMethods
|
14
|
+
def initialize_deflater_body: (body_encoder body, Encoding | String encoding) -> body_encoder
|
15
|
+
end
|
16
|
+
|
17
|
+
module ResponseBodyClassMethods
|
18
|
+
def initialize_inflater_by_encoding: (Encoding | String encoding, Response response, ?bytesize: Integer) -> (Transcoder::_Decoder | Transcoder::GZIP::Inflater)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -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 | OpenSSL::SSL::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
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module CircuitBreaker
|
4
|
+
|
5
|
+
class CircuitStore
|
6
|
+
@circuits: Hash[String, Circuit]
|
7
|
+
|
8
|
+
@circuits_mutex: Thread::Mutex
|
9
|
+
|
10
|
+
def try_open: (uri uri, response response) -> response?
|
11
|
+
|
12
|
+
def try_respond: (Request request) -> response?
|
13
|
+
|
14
|
+
def try_close: (http_uri uri) -> void
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def get_circuit_for_uri: (uri uri) -> Circuit
|
19
|
+
|
20
|
+
def initialize: (Options & _CircuitOptions options) -> void
|
21
|
+
end
|
22
|
+
|
23
|
+
class Circuit
|
24
|
+
@state: :closed | :open | :half_open
|
25
|
+
@max_attempts: Integer
|
26
|
+
@reset_attempts_in: Float
|
27
|
+
@break_in: Float
|
28
|
+
@circuit_breaker_half_open_drip_rate: Float
|
29
|
+
@attempts: Integer
|
30
|
+
@real_attempts: Integer
|
31
|
+
@drip_factor: Integer
|
32
|
+
|
33
|
+
@response: response?
|
34
|
+
@opened_at: Float?
|
35
|
+
@attempted_at: Float?
|
36
|
+
|
37
|
+
def respond: () -> response?
|
38
|
+
|
39
|
+
def try_open: (response) -> response?
|
40
|
+
|
41
|
+
def try_close: () -> void
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def initialize: (Integer max_attempts, Float reset_attempts_in, Float break_in, Float circuit_breaker_half_open_drip_rate) -> void
|
46
|
+
end
|
47
|
+
|
48
|
+
interface _CircuitOptions
|
49
|
+
def circuit_breaker_max_attempts: () -> Integer
|
50
|
+
def circuit_breaker_reset_attempts_in: () -> Float
|
51
|
+
def circuit_breaker_break_in: () -> Float
|
52
|
+
def circuit_breaker_half_open_drip_rate: () -> Float
|
53
|
+
def circuit_breaker_break_on: () -> (^(Response) -> boolish | nil)
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
57
|
+
def self.extra_options: (Options) -> (Options & _CircuitOptions)
|
58
|
+
|
59
|
+
module InstanceMethods
|
60
|
+
@circuit_store: CircuitStore
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def try_circuit_open: (Request request, response response) -> response?
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
type sessionCircuitBreaker = Session & CircuitBreaker::InstanceMethods
|
70
|
+
end
|
71
|
+
end
|
data/sig/plugins/compression.rbs
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module HTTPX
|
2
2
|
module Plugins
|
3
3
|
module Compression
|
4
|
-
type encodings_registry = Registry[Symbol, Class]
|
5
4
|
|
6
5
|
type deflatable = _Reader | _ToS
|
7
6
|
|
@@ -13,15 +12,18 @@ module HTTPX
|
|
13
12
|
interface _Inflater
|
14
13
|
def inflate: (string) -> String
|
15
14
|
|
16
|
-
def initialize: (
|
15
|
+
def initialize: (Integer | Float bytesize) -> untyped
|
16
|
+
end
|
17
|
+
|
18
|
+
interface _Compressor
|
19
|
+
def deflater: () -> _Deflater
|
20
|
+
def inflater: (Integer | Float bytesize) -> _Inflater
|
17
21
|
end
|
18
22
|
|
19
23
|
def self.configure: (singleton(Session)) -> void
|
20
24
|
|
21
25
|
interface _CompressionOptions
|
22
|
-
def
|
23
|
-
|
24
|
-
def encodings: () -> encodings_registry?
|
26
|
+
def encodings: () -> Hash[String, _Compressor]
|
25
27
|
end
|
26
28
|
|
27
29
|
def self.extra_options: (Options) -> (Options & _CompressionOptions)
|
data/sig/plugins/cookies/jar.rbs
CHANGED
@@ -13,8 +13,8 @@ module HTTPX
|
|
13
13
|
|
14
14
|
def []: (uri) -> Array[Cookie]
|
15
15
|
|
16
|
-
def each: (?uri) { (Cookie) -> void } -> void
|
17
|
-
| (?uri) -> Enumerable[Cookie]
|
16
|
+
def each: (?uri?) { (Cookie) -> void } -> void
|
17
|
+
| (?uri?) -> Enumerable[Cookie]
|
18
18
|
|
19
19
|
def merge: (_Each[cookie] cookies) -> instance
|
20
20
|
|
data/sig/plugins/cookies.rbs
CHANGED
@@ -12,10 +12,10 @@ module HTTPX
|
|
12
12
|
def self.load_dependencies: (*untyped) -> void
|
13
13
|
|
14
14
|
module InstanceMethods
|
15
|
-
def
|
15
|
+
def digest_auth: (string user, string password, ?hashed: bool) -> instance
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
type sessionDigestAuth =
|
19
|
+
type sessionDigestAuth = sessionAuthorization & DigestAuth::InstanceMethods
|
20
20
|
end
|
21
21
|
end
|
@@ -5,11 +5,18 @@ module HTTPX
|
|
5
5
|
module FollowRedirects
|
6
6
|
MAX_REDIRECTS: Integer
|
7
7
|
REDIRECT_STATUS: Range[Integer]
|
8
|
+
REQUEST_BODY_HEADERS: Array[String]
|
9
|
+
|
10
|
+
type redirect_request = Request & RequestMethods
|
8
11
|
|
9
12
|
interface _FollowRedirectsOptions
|
10
13
|
def max_redirects: () -> Integer?
|
11
14
|
|
12
15
|
def follow_insecure_redirects: () -> bool?
|
16
|
+
|
17
|
+
def allow_auth_to_other_origins: () -> bool?
|
18
|
+
|
19
|
+
def redirect_on: () -> (^(http_uri) -> boolish | nil)
|
13
20
|
end
|
14
21
|
|
15
22
|
def self.extra_options: (Options) -> (Options & _FollowRedirectsOptions)
|
@@ -17,13 +24,20 @@ module HTTPX
|
|
17
24
|
module InstanceMethods
|
18
25
|
def max_redirects: (_ToI) -> instance
|
19
26
|
|
20
|
-
def
|
21
|
-
|
27
|
+
def handle_after_redirect_request: (http_uri original_uri, http_uri redirect_uri, Request request, Options & _FollowRedirectsOptions options) -> void
|
28
|
+
|
29
|
+
def __get_location_from_response: (Response) -> http_uri
|
22
30
|
end
|
23
31
|
|
24
32
|
module RequestMethods
|
25
|
-
|
26
|
-
|
33
|
+
attr_accessor root_request: instance?
|
34
|
+
|
35
|
+
@redirect_request: redirect_request
|
36
|
+
|
37
|
+
def redirect_request: () -> redirect_request
|
38
|
+
|
39
|
+
def redirect_request=: (redirect_request req) -> void
|
40
|
+
|
27
41
|
def max_redirects: () -> Integer
|
28
42
|
end
|
29
43
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module GRPC
|
4
|
+
class Call
|
5
|
+
attr_writer decoder: _Callable
|
6
|
+
|
7
|
+
def metadata: () -> headers
|
8
|
+
|
9
|
+
def trailing_metadata: () -> headers?
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def initialize: (Response | StreamResponse response) -> untyped
|
14
|
+
|
15
|
+
def grpc_response: () -> grpc_response
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Transcoder
|
3
|
+
module GRPCEncoding
|
4
|
+
|
5
|
+
def self?.encode: (body_encoder body, compressed: bool) -> Deflater
|
6
|
+
|
7
|
+
def self?.decode: (Response | StreamResponse response) -> Inflater
|
8
|
+
|
9
|
+
class Deflater
|
10
|
+
attr_reader content_type: String
|
11
|
+
|
12
|
+
@body: BodyReader
|
13
|
+
@compressed: bool
|
14
|
+
|
15
|
+
def initialize: (body_encoder body, compressed: bool) -> void
|
16
|
+
|
17
|
+
def bytesize: () -> (Integer | Float)
|
18
|
+
|
19
|
+
def read: (?int? length, ?string outbuf) -> String?
|
20
|
+
end
|
21
|
+
|
22
|
+
class Inflater
|
23
|
+
@response: Response
|
24
|
+
@grpc_encodings: Array[String]
|
25
|
+
|
26
|
+
def initialize: (Response | StreamResponse response) -> void
|
27
|
+
|
28
|
+
def call: (String message) ?{ (String) -> void } -> String
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def grpc_encodings: () -> Array[String]
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
module HTTPX
|
3
|
+
module Plugins
|
4
|
+
module GRPC
|
5
|
+
module Message
|
6
|
+
def self?.unary: (response) -> grpc_message
|
7
|
+
|
8
|
+
def self?.stream: (StreamResponse) { (String) -> void } -> void
|
9
|
+
| (StreamResponse) -> Enumerable[String]
|
10
|
+
|
11
|
+
def self?.cancel: (Request) -> void
|
12
|
+
|
13
|
+
def self?.verify_status: (StreamResponse | response) -> void
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/sig/plugins/grpc.rbs
CHANGED
@@ -7,6 +7,11 @@ module HTTPX
|
|
7
7
|
|
8
8
|
module Plugins
|
9
9
|
module GRPC
|
10
|
+
DEADLINE: Integer
|
11
|
+
MARSHAL_METHOD: Symbol
|
12
|
+
UNMARSHAL_METHOD: Symbol
|
13
|
+
HEADERS: Hash[String, String]
|
14
|
+
|
10
15
|
type compression_option = bool | String
|
11
16
|
type rpc_def = [String, untyped, untyped, Hash[Symbol, untyped]]
|
12
17
|
|
@@ -17,36 +22,6 @@ module HTTPX
|
|
17
22
|
|
18
23
|
type credentials = Proc
|
19
24
|
|
20
|
-
class Call
|
21
|
-
attr_writer decoder: _Callable
|
22
|
-
|
23
|
-
def metadata: () -> headers
|
24
|
-
|
25
|
-
def trailing_metadata: () -> headers?
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def initialize: (Response | StreamResponse response) -> untyped
|
30
|
-
|
31
|
-
def grpc_response: () -> grpc_response
|
32
|
-
end
|
33
|
-
|
34
|
-
module Message
|
35
|
-
def self?.unary: (response) -> grpc_message
|
36
|
-
|
37
|
-
def self?.stream: (StreamResponse) { (String) -> void } -> void
|
38
|
-
| (StreamResponse) -> Enumerable[String]
|
39
|
-
|
40
|
-
def self?.encode: (String bytes, ?deflater: Compression::_Deflater?) -> String
|
41
|
-
|
42
|
-
def self?.decode: (String message, encodings: Array[String], encoders: Compression::encodings_registry) -> String
|
43
|
-
| (String message, encodings: Array[String], encoders: Compression::encodings_registry) { (String) -> void } -> void
|
44
|
-
|
45
|
-
def self?.cancel: (Request) -> void
|
46
|
-
|
47
|
-
def self?.verify_status: (StreamResponse | response) -> void
|
48
|
-
end
|
49
|
-
|
50
25
|
interface _GRPCOptions
|
51
26
|
def grpc_service: () -> String?
|
52
27
|
|
@@ -63,9 +38,9 @@ module HTTPX
|
|
63
38
|
def self.load_dependencies: (singleton(Session)) -> void
|
64
39
|
|
65
40
|
module ResponseMethods
|
66
|
-
|
41
|
+
attr_reader trailing_metadata: Hash[String, untyped]
|
67
42
|
|
68
|
-
def encoders: () ->
|
43
|
+
def encoders: () -> Array[String | Encoding]
|
69
44
|
end
|
70
45
|
|
71
46
|
module InstanceMethods
|
data/sig/plugins/h2c.rbs
CHANGED
@@ -11,11 +11,11 @@ module HTTPX
|
|
11
11
|
def self.load_dependencies: (*untyped) -> void
|
12
12
|
|
13
13
|
module InstanceMethods
|
14
|
-
def
|
14
|
+
def ntlm_auth: (string user, string password, ?string? domain) -> instance
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
18
18
|
|
19
|
-
type sessionNTLMAuth =
|
19
|
+
type sessionNTLMAuth = sessionAuthorization & NTLMAuth::InstanceMethods
|
20
20
|
end
|
21
21
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
#
|
4
|
+
# https://gitlab.com/os85/httpx/wikis/OAuth
|
5
|
+
#
|
6
|
+
module OAuth
|
7
|
+
def self.load_dependencies: (singleton(Session) klass) -> void
|
8
|
+
|
9
|
+
type grant_type = "client_credentials" | "refresh_token"
|
10
|
+
|
11
|
+
type token_auth_method = "client_secret_basic" | "client_secret_post"
|
12
|
+
|
13
|
+
SUPPORTED_GRANT_TYPES: ::Array[grant_type]
|
14
|
+
|
15
|
+
SUPPORTED_AUTH_METHODS: ::Array[token_auth_method]
|
16
|
+
|
17
|
+
class OAuthSession
|
18
|
+
attr_reader grant_type: grant_type
|
19
|
+
|
20
|
+
attr_reader client_id: String
|
21
|
+
|
22
|
+
attr_reader client_secret: String
|
23
|
+
|
24
|
+
attr_reader access_token: String?
|
25
|
+
|
26
|
+
attr_reader refresh_token: String?
|
27
|
+
|
28
|
+
attr_reader scope: Array[String]?
|
29
|
+
|
30
|
+
def initialize: (issuer: uri, client_id: String, client_secret: String, ?access_token: String?, ?refresh_token: String?, ?scope: (Array[String] | String)?, ?token_endpoint: String?, ?response_type: String?, ?grant_type: String?, ?token_endpoint_auth_method: ::String) -> void
|
31
|
+
|
32
|
+
def token_endpoint: () -> String
|
33
|
+
|
34
|
+
def token_endpoint_auth_method: () -> token_auth_method
|
35
|
+
|
36
|
+
def load: (Session http) -> void
|
37
|
+
|
38
|
+
def merge: (instance | Hash[untyped, untyped] other) -> instance
|
39
|
+
end
|
40
|
+
|
41
|
+
interface _AwsSdkOptions
|
42
|
+
def oauth_session: () -> OAuthSession?
|
43
|
+
end
|
44
|
+
|
45
|
+
module InstanceMethods
|
46
|
+
def oauth_auth: (**untyped args) -> instance
|
47
|
+
|
48
|
+
def with_access_token: () -> instance
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
type sessionOAuth = Session & OAuth::InstanceMethods
|
53
|
+
end
|
54
|
+
end
|