httpx 0.20.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|