httpx 0.10.0 → 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +11 -3
- data/doc/release_notes/0_10_1.md +37 -0
- data/doc/release_notes/0_10_2.md +5 -0
- data/doc/release_notes/0_11_0.md +76 -0
- data/doc/release_notes/0_11_1.md +1 -0
- data/doc/release_notes/0_11_2.md +5 -0
- data/lib/httpx/adapters/datadog.rb +205 -0
- data/lib/httpx/adapters/faraday.rb +0 -2
- data/lib/httpx/adapters/webmock.rb +123 -0
- data/lib/httpx/chainable.rb +8 -7
- data/lib/httpx/connection.rb +4 -15
- data/lib/httpx/connection/http1.rb +14 -1
- data/lib/httpx/connection/http2.rb +15 -16
- data/lib/httpx/domain_name.rb +1 -3
- data/lib/httpx/errors.rb +3 -1
- data/lib/httpx/headers.rb +1 -0
- data/lib/httpx/io/ssl.rb +4 -8
- data/lib/httpx/io/udp.rb +4 -3
- data/lib/httpx/plugins/compression.rb +1 -1
- data/lib/httpx/plugins/cookies/set_cookie_parser.rb +1 -1
- data/lib/httpx/plugins/expect.rb +33 -8
- data/lib/httpx/plugins/multipart.rb +42 -23
- data/lib/httpx/plugins/multipart/encoder.rb +115 -0
- data/lib/httpx/plugins/multipart/mime_type_detector.rb +64 -0
- data/lib/httpx/plugins/multipart/part.rb +34 -0
- data/lib/httpx/plugins/proxy.rb +16 -2
- data/lib/httpx/plugins/proxy/socks4.rb +14 -16
- data/lib/httpx/plugins/proxy/socks5.rb +3 -2
- data/lib/httpx/plugins/push_promise.rb +2 -2
- data/lib/httpx/pool.rb +8 -14
- data/lib/httpx/request.rb +22 -12
- data/lib/httpx/resolver.rb +7 -6
- data/lib/httpx/resolver/https.rb +18 -23
- data/lib/httpx/resolver/native.rb +22 -19
- data/lib/httpx/resolver/resolver_mixin.rb +4 -2
- data/lib/httpx/resolver/system.rb +3 -3
- data/lib/httpx/selector.rb +9 -13
- data/lib/httpx/session.rb +24 -21
- data/lib/httpx/transcoder.rb +20 -0
- data/lib/httpx/transcoder/form.rb +9 -1
- data/lib/httpx/version.rb +1 -1
- data/sig/connection.rbs +84 -1
- data/sig/connection/http1.rbs +66 -0
- data/sig/connection/http2.rbs +73 -0
- data/sig/headers.rbs +3 -0
- data/sig/httpx.rbs +1 -0
- data/sig/options.rbs +3 -3
- data/sig/plugins/basic_authentication.rbs +1 -1
- data/sig/plugins/compression.rbs +1 -1
- data/sig/plugins/compression/brotli.rbs +1 -1
- data/sig/plugins/compression/deflate.rbs +1 -1
- data/sig/plugins/compression/gzip.rbs +1 -1
- data/sig/plugins/h2c.rbs +1 -1
- data/sig/plugins/multipart.rbs +29 -4
- data/sig/plugins/persistent.rbs +1 -1
- data/sig/plugins/proxy.rbs +2 -2
- data/sig/plugins/proxy/ssh.rbs +1 -1
- data/sig/plugins/rate_limiter.rbs +1 -1
- data/sig/pool.rbs +36 -2
- data/sig/request.rbs +2 -2
- data/sig/resolver.rbs +26 -0
- data/sig/resolver/https.rbs +51 -0
- data/sig/resolver/native.rbs +60 -0
- data/sig/resolver/resolver_mixin.rbs +27 -0
- data/sig/resolver/system.rbs +17 -0
- data/sig/response.rbs +2 -2
- data/sig/selector.rbs +20 -0
- data/sig/session.rbs +3 -3
- data/sig/transcoder.rbs +4 -2
- data/sig/transcoder/body.rbs +2 -0
- data/sig/transcoder/form.rbs +8 -2
- data/sig/transcoder/json.rbs +3 -1
- metadata +47 -48
- data/lib/httpx/resolver/options.rb +0 -25
- data/sig/missing.rbs +0 -12
- data/sig/test.rbs +0 -9
data/lib/httpx/version.rb
CHANGED
data/sig/connection.rbs
CHANGED
@@ -1,2 +1,85 @@
|
|
1
|
-
|
1
|
+
module HTTPX
|
2
|
+
class Connection
|
3
|
+
interface _Parser
|
4
|
+
|
5
|
+
def on: (Symbol) { (*untyped) -> void } -> void
|
6
|
+
def empty?: () -> bool
|
7
|
+
def close: () -> void
|
8
|
+
def consume: () -> void
|
9
|
+
def <<: (string) -> void
|
10
|
+
end
|
11
|
+
|
12
|
+
include Loggable
|
13
|
+
include Callbacks
|
14
|
+
extend HTTPX::Registry[String, Class]
|
15
|
+
|
16
|
+
attr_reader origin: generic_uri
|
17
|
+
attr_reader state: Symbol
|
18
|
+
attr_reader pending: Array[Request]
|
19
|
+
attr_reader options: options
|
20
|
+
|
21
|
+
def addresses: () -> Array[ipaddr]?
|
22
|
+
|
23
|
+
def addresses=: (Array[ipaddr]) -> void
|
24
|
+
|
25
|
+
def match?: (generic_uri, options) -> bool
|
26
|
+
|
27
|
+
def mergeable?: (Connection) -> bool
|
28
|
+
|
29
|
+
def coalescable?: (Connection) -> bool
|
30
|
+
|
31
|
+
def create_idle: (options) -> Connection
|
32
|
+
| () -> Connection
|
33
|
+
|
34
|
+
def merge: (Connection) -> void
|
35
|
+
|
36
|
+
def purge_pending: () { (Request) -> void } -> void
|
37
|
+
|
38
|
+
def match_altsvcs?: (generic_uri) -> bool
|
39
|
+
|
40
|
+
def connecting?: () -> bool
|
41
|
+
def inflight?: () -> boolish
|
42
|
+
|
43
|
+
def interests: () -> io_interests?
|
44
|
+
|
45
|
+
def to_io: () -> _ToIO
|
46
|
+
|
47
|
+
def call: () -> void
|
48
|
+
|
49
|
+
def close: () -> void
|
50
|
+
def reset: () -> void
|
51
|
+
|
52
|
+
def send: (Request) -> void
|
53
|
+
|
54
|
+
def timeout: () -> Numeric?
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def initialize: (String, generic_uri, options) -> untyped
|
59
|
+
|
60
|
+
def connect: () -> void
|
61
|
+
|
62
|
+
def exhausted?: () -> boolish
|
63
|
+
|
64
|
+
def consume: () -> void
|
65
|
+
|
66
|
+
def send_pending: () -> void
|
67
|
+
|
68
|
+
def parser: () -> _Parser
|
69
|
+
|
70
|
+
def build_parser: () -> _Parser
|
71
|
+
| (String) -> _Parser
|
72
|
+
|
73
|
+
def set_parser_callbacks: (_Parser) -> void
|
74
|
+
|
75
|
+
def transition: (Symbol) -> void
|
76
|
+
|
77
|
+
def handle_response: () -> void
|
78
|
+
|
79
|
+
def on_error: (StandardError) -> void
|
80
|
+
|
81
|
+
def handle_error: (StandardError) -> void
|
82
|
+
|
83
|
+
def total_timeout: () -> Timers::Timer?
|
84
|
+
end
|
2
85
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module HTTPX
|
2
|
+
class Connection::HTTP1
|
3
|
+
include Callbacks
|
4
|
+
include Loggable
|
5
|
+
|
6
|
+
attr_reader pending: Array[Request]
|
7
|
+
|
8
|
+
@options: Options
|
9
|
+
@max_concurrent_requests: Integer
|
10
|
+
@max_requests: Integer
|
11
|
+
@parser: HTTP1
|
12
|
+
@buffer: Buffer
|
13
|
+
|
14
|
+
def interests: () -> io_interests?
|
15
|
+
|
16
|
+
def reset: () -> void
|
17
|
+
|
18
|
+
def close: () -> void
|
19
|
+
|
20
|
+
def empty?: () -> bool
|
21
|
+
|
22
|
+
def exhausted?: () -> bool
|
23
|
+
|
24
|
+
def <<: (String) -> void
|
25
|
+
|
26
|
+
def send: (Request) -> void
|
27
|
+
|
28
|
+
def consume: () -> void
|
29
|
+
|
30
|
+
def handle_error: (StandardError ex) -> void
|
31
|
+
|
32
|
+
def on_headers: (Hash[String, Array[String]] headers) -> void
|
33
|
+
|
34
|
+
def on_trailers: (Array[String, String] headers) -> void
|
35
|
+
|
36
|
+
def on_data: (string chunk) -> void
|
37
|
+
|
38
|
+
def on_complete: () -> void
|
39
|
+
|
40
|
+
def dispatch: () -> void
|
41
|
+
|
42
|
+
def ping: () -> void
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def initialize: (Buffer, options) -> untyped
|
47
|
+
|
48
|
+
def manage_connection: (Response) -> void
|
49
|
+
|
50
|
+
def disable: () -> void
|
51
|
+
|
52
|
+
def disable_pipelining: () -> void
|
53
|
+
|
54
|
+
def set_request_headers: (Request) -> void
|
55
|
+
|
56
|
+
def headline_uri: (Request) -> String
|
57
|
+
|
58
|
+
def handle: (Request request) -> void
|
59
|
+
|
60
|
+
def join_headers: (Request request) -> void
|
61
|
+
|
62
|
+
def join_body: (Request request) -> void
|
63
|
+
|
64
|
+
def capitalized: (String field) -> String
|
65
|
+
end
|
66
|
+
end
|
data/sig/connection/http2.rbs
CHANGED
@@ -1,4 +1,77 @@
|
|
1
1
|
module HTTPX
|
2
2
|
class Connection::HTTP2
|
3
|
+
include Callbacks
|
4
|
+
include Loggable
|
5
|
+
|
6
|
+
attr_reader streams: Hash[HTTP2Next::Stream, Response]
|
7
|
+
attr_reader pending: Array[Request]
|
8
|
+
|
9
|
+
@options: Options
|
10
|
+
@max_concurrent_requests: Integer
|
11
|
+
@max_requests: Integer
|
12
|
+
@drains: Hash[Request, String]
|
13
|
+
@pings: Array[String]
|
14
|
+
@buffer: Buffer
|
15
|
+
|
16
|
+
def interests: () -> io_interests
|
17
|
+
|
18
|
+
def close: () -> void
|
19
|
+
|
20
|
+
def empty?: () -> bool
|
21
|
+
|
22
|
+
def exhausted?: () -> bool
|
23
|
+
|
24
|
+
def <<: (String) -> void
|
25
|
+
|
26
|
+
def send: (Request) -> void
|
27
|
+
|
28
|
+
def consume: () -> void
|
29
|
+
|
30
|
+
def handle_error: (StandardError ex) -> void
|
31
|
+
|
32
|
+
def ping: () -> void
|
33
|
+
|
34
|
+
alias reset init_connection
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def initialize: (Buffer, options) -> untyped
|
39
|
+
|
40
|
+
def send_pending: () -> void
|
41
|
+
|
42
|
+
def headline_uri: (Request) -> String
|
43
|
+
|
44
|
+
def set_request_headers: (Request) -> void
|
45
|
+
|
46
|
+
def handle: (Request request, HTTP2Next::Stream stream) -> void
|
47
|
+
|
48
|
+
def init_connection: () -> void
|
49
|
+
|
50
|
+
def handle_stream: (HTTP2Next::Stream stream, Request request) -> void
|
51
|
+
|
52
|
+
def join_headers: (HTTP2Next::Stream stream, Request request) -> void
|
53
|
+
|
54
|
+
def join_body: (HTTP2Next::Stream stream, Request request) -> void
|
55
|
+
|
56
|
+
def on_stream_headers: (HTTP2Next::Stream stream, Request request, Array[[String, String]] headers) -> void
|
57
|
+
|
58
|
+
def on_stream_data: (HTTP2Next::Stream stream, Request request, string data) -> void
|
59
|
+
|
60
|
+
def on_stream_close: (HTTP2Next::Stream stream, Request request, Symbol? error) -> void
|
61
|
+
|
62
|
+
def on_frame: (string bytes) -> void
|
63
|
+
|
64
|
+
def on_settings: (*untyped) -> void
|
65
|
+
|
66
|
+
def on_close: (Integer last_frame, Symbol? error, String? payload) -> void
|
67
|
+
|
68
|
+
def on_frame_sent: (HTTP2Next::frame) -> void
|
69
|
+
def on_frame_received: (HTTP2Next::frame) -> void
|
70
|
+
|
71
|
+
def on_promise: (HTTP2Next::Stream) -> void
|
72
|
+
|
73
|
+
def on_origin: (String) -> void
|
74
|
+
|
75
|
+
def on_pong: (string ping) -> void
|
3
76
|
end
|
4
77
|
end
|
data/sig/headers.rbs
CHANGED
data/sig/httpx.rbs
CHANGED
@@ -4,6 +4,7 @@ module HTTPX
|
|
4
4
|
VERSION: String
|
5
5
|
|
6
6
|
type uri = URI::HTTP | URI::HTTPS | string
|
7
|
+
type generic_uri = uri | URI::Generic
|
7
8
|
|
8
9
|
type verb = :options | :get | :head | :post | :put | :delete | :trace | :connect |
|
9
10
|
:propfind | :proppatch | :mkcol | :copy | :move | :lock | :unlock | :orderpatch |
|
data/sig/options.rbs
CHANGED
@@ -77,9 +77,9 @@ module HTTPX
|
|
77
77
|
# resolver_class resolver_options
|
78
78
|
|
79
79
|
# request_class
|
80
|
-
|
81
|
-
|
82
|
-
|
80
|
+
attr_reader request_class: singleton(Request)
|
81
|
+
def request_class=: (singleton(Request)) -> void
|
82
|
+
def with_request_class: (singleton(Request)) -> instance
|
83
83
|
|
84
84
|
# io
|
85
85
|
attr_reader io: _ToIO?
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module HTTPX
|
2
2
|
module Plugins
|
3
3
|
module BasicAuthentication
|
4
|
-
|
4
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
5
5
|
|
6
6
|
module InstanceMethods
|
7
7
|
def basic_authentication: (string user, string password) -> instance
|
data/sig/plugins/compression.rbs
CHANGED
@@ -16,7 +16,7 @@ module HTTPX
|
|
16
16
|
def initialize: (Numeric bytesize) -> untyped
|
17
17
|
end
|
18
18
|
|
19
|
-
|
19
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
20
20
|
|
21
21
|
interface _CompressionOptions
|
22
22
|
def compression_threshold_size: () -> _Integer?
|
@@ -2,7 +2,7 @@ module HTTPX
|
|
2
2
|
module Plugins
|
3
3
|
module Compression
|
4
4
|
module Deflate
|
5
|
-
|
5
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
6
6
|
def self.configure: (*untyped) -> void
|
7
7
|
|
8
8
|
def self?.deflater: () -> _Deflater
|
data/sig/plugins/h2c.rbs
CHANGED
data/sig/plugins/multipart.rbs
CHANGED
@@ -1,18 +1,43 @@
|
|
1
1
|
module HTTPX
|
2
2
|
module Plugins
|
3
3
|
module Multipart
|
4
|
-
|
4
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
5
5
|
def self.configure: (*untyped) -> void
|
6
|
-
def self?.encode: (untyped) -> Encoder
|
6
|
+
def self?.encode: (untyped) -> (Encoder | Transcoder::Form::Encoder)
|
7
|
+
|
8
|
+
type multipart_value = string | Pathname | File | _Reader
|
9
|
+
|
10
|
+
type record_multipart_value = multipart_value |
|
11
|
+
{ content_type: String, filename: String, body: multipart_value } |
|
12
|
+
{ content_type: String, body: multipart_value }
|
13
|
+
|
14
|
+
type multipart_nested_value = multipart_value | _ToAry[multipart_value] | _ToHash[string, multipart_value]
|
15
|
+
|
16
|
+
type multipart_input = Enumerable[[string, multipart_value], untyped]
|
7
17
|
|
8
18
|
class Encoder
|
9
19
|
include Transcoder::_Encoder
|
10
|
-
include _ToS
|
11
20
|
include _Reader
|
12
21
|
|
22
|
+
def content_type: () -> String
|
23
|
+
|
13
24
|
private
|
14
25
|
|
15
|
-
def
|
26
|
+
def initialize: (Hash[Symbol | string, multipart_nested_value] multipart_data) -> untyped
|
27
|
+
|
28
|
+
def header_part: (string key, String content_type, String? filename) -> StringIO
|
29
|
+
|
30
|
+
def read_chunks: (String buffer, Integer? length) -> void
|
31
|
+
|
32
|
+
def read_from_part: (Integer? max_length) -> void
|
33
|
+
end
|
34
|
+
|
35
|
+
module Part
|
36
|
+
def self?.call: (multipart_nested_value) -> ([_Reader, String, String?] | [_Reader, String])
|
37
|
+
end
|
38
|
+
|
39
|
+
module MimeTypeDetector
|
40
|
+
def self?.call: (IO file, ?String filename) -> String?
|
16
41
|
end
|
17
42
|
end
|
18
43
|
end
|
data/sig/plugins/persistent.rbs
CHANGED
data/sig/plugins/proxy.rbs
CHANGED
@@ -18,10 +18,10 @@ module HTTPX
|
|
18
18
|
|
19
19
|
private
|
20
20
|
|
21
|
-
def initialize: (uri:
|
21
|
+
def initialize: (uri: generic_uri, ?username: string, ?password: string) -> untyped
|
22
22
|
end
|
23
23
|
|
24
|
-
|
24
|
+
def self.configure: (singleton(Session)) -> void
|
25
25
|
|
26
26
|
type proxyParam = Parameters | Hash
|
27
27
|
|
data/sig/plugins/proxy/ssh.rbs
CHANGED
data/sig/pool.rbs
CHANGED
@@ -1,2 +1,36 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module HTTPX
|
2
|
+
class Pool
|
3
|
+
def empty?: () -> void
|
4
|
+
|
5
|
+
def next_tick: () -> void
|
6
|
+
|
7
|
+
def close: (Array[Connection]) -> void
|
8
|
+
| () -> void
|
9
|
+
|
10
|
+
def init_connection: (Connection, Options) -> void
|
11
|
+
|
12
|
+
def find_connection: (generic_uri, Options) -> Connection?
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def initialize: () -> untyped
|
17
|
+
|
18
|
+
def resolve_connection: (Connection) -> void
|
19
|
+
|
20
|
+
def on_resolver_connection: (Connection) -> void
|
21
|
+
|
22
|
+
def on_resolver_error: (Connection, StandardError) -> void
|
23
|
+
|
24
|
+
def on_resolver_close: (resolver) -> void
|
25
|
+
|
26
|
+
def register_connection: (Connection) -> void
|
27
|
+
|
28
|
+
def unregister_connection: (Connection) -> void
|
29
|
+
|
30
|
+
def coalesce_connections: (Connection, Connection) -> void
|
31
|
+
|
32
|
+
def next_timeout: () -> Numeric?
|
33
|
+
|
34
|
+
def find_resolver_for: (Connection) -> resolver
|
35
|
+
end
|
36
|
+
end
|