httpx 0.8.0 → 0.10.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 +48 -0
- data/README.md +9 -5
- data/doc/release_notes/0_0_1.md +7 -0
- data/doc/release_notes/0_0_2.md +9 -0
- data/doc/release_notes/0_0_3.md +9 -0
- data/doc/release_notes/0_0_4.md +7 -0
- data/doc/release_notes/0_0_5.md +5 -0
- data/doc/release_notes/0_10_0.md +66 -0
- data/doc/release_notes/0_10_1.md +39 -0
- data/doc/release_notes/0_1_0.md +9 -0
- data/doc/release_notes/0_2_0.md +5 -0
- data/doc/release_notes/0_2_1.md +16 -0
- data/doc/release_notes/0_3_0.md +12 -0
- data/doc/release_notes/0_3_1.md +6 -0
- data/doc/release_notes/0_4_0.md +51 -0
- data/doc/release_notes/0_4_1.md +3 -0
- data/doc/release_notes/0_5_0.md +15 -0
- data/doc/release_notes/0_5_1.md +14 -0
- data/doc/release_notes/0_6_0.md +5 -0
- data/doc/release_notes/0_6_1.md +6 -0
- data/doc/release_notes/0_6_2.md +6 -0
- data/doc/release_notes/0_6_3.md +13 -0
- data/doc/release_notes/0_6_4.md +21 -0
- data/doc/release_notes/0_6_5.md +22 -0
- data/doc/release_notes/0_6_6.md +19 -0
- data/doc/release_notes/0_6_7.md +5 -0
- data/doc/release_notes/0_7_0.md +46 -0
- data/doc/release_notes/0_8_0.md +27 -0
- data/doc/release_notes/0_8_1.md +8 -0
- data/doc/release_notes/0_8_2.md +7 -0
- data/doc/release_notes/0_9_0.md +38 -0
- data/lib/httpx.rb +2 -0
- data/lib/httpx/adapters/faraday.rb +1 -1
- data/lib/httpx/chainable.rb +11 -11
- data/lib/httpx/connection.rb +23 -31
- data/lib/httpx/connection/http1.rb +30 -4
- data/lib/httpx/connection/http2.rb +29 -10
- data/lib/httpx/domain_name.rb +440 -0
- data/lib/httpx/errors.rb +2 -1
- data/lib/httpx/extensions.rb +22 -2
- data/lib/httpx/headers.rb +2 -2
- data/lib/httpx/io/ssl.rb +0 -1
- data/lib/httpx/io/tcp.rb +6 -5
- data/lib/httpx/io/udp.rb +4 -1
- data/lib/httpx/options.rb +5 -1
- data/lib/httpx/parser/http1.rb +14 -17
- data/lib/httpx/plugins/compression.rb +46 -65
- data/lib/httpx/plugins/compression/brotli.rb +10 -14
- data/lib/httpx/plugins/compression/deflate.rb +7 -6
- data/lib/httpx/plugins/compression/gzip.rb +23 -5
- data/lib/httpx/plugins/cookies.rb +21 -60
- data/lib/httpx/plugins/cookies/cookie.rb +173 -0
- data/lib/httpx/plugins/cookies/jar.rb +74 -0
- data/lib/httpx/plugins/cookies/set_cookie_parser.rb +142 -0
- data/lib/httpx/plugins/expect.rb +12 -1
- data/lib/httpx/plugins/follow_redirects.rb +20 -2
- data/lib/httpx/plugins/h2c.rb +1 -1
- data/lib/httpx/plugins/multipart.rb +12 -6
- data/lib/httpx/plugins/persistent.rb +6 -1
- data/lib/httpx/plugins/proxy.rb +16 -2
- data/lib/httpx/plugins/proxy/socks4.rb +14 -14
- data/lib/httpx/plugins/rate_limiter.rb +51 -0
- data/lib/httpx/plugins/retries.rb +3 -2
- data/lib/httpx/plugins/stream.rb +109 -13
- data/lib/httpx/pool.rb +14 -17
- data/lib/httpx/request.rb +8 -20
- data/lib/httpx/resolver.rb +7 -10
- data/lib/httpx/resolver/https.rb +22 -24
- data/lib/httpx/resolver/native.rb +19 -16
- data/lib/httpx/resolver/resolver_mixin.rb +4 -2
- data/lib/httpx/resolver/system.rb +2 -2
- data/lib/httpx/response.rb +16 -25
- data/lib/httpx/selector.rb +11 -18
- data/lib/httpx/session.rb +40 -26
- data/lib/httpx/transcoder.rb +18 -0
- data/lib/httpx/transcoder/chunker.rb +0 -2
- data/lib/httpx/transcoder/form.rb +9 -7
- data/lib/httpx/transcoder/json.rb +0 -4
- data/lib/httpx/utils.rb +45 -0
- data/lib/httpx/version.rb +1 -1
- data/sig/buffer.rbs +24 -0
- data/sig/callbacks.rbs +14 -0
- data/sig/chainable.rbs +37 -0
- data/sig/connection.rbs +85 -0
- data/sig/connection/http1.rbs +66 -0
- data/sig/connection/http2.rbs +78 -0
- data/sig/domain_name.rbs +17 -0
- data/sig/errors.rbs +3 -0
- data/sig/headers.rbs +42 -0
- data/sig/httpx.rbs +15 -0
- data/sig/loggable.rbs +11 -0
- data/sig/missing.rbs +12 -0
- data/sig/options.rbs +118 -0
- data/sig/parser/http1.rbs +50 -0
- data/sig/plugins/authentication.rbs +11 -0
- data/sig/plugins/basic_authentication.rbs +13 -0
- data/sig/plugins/compression.rbs +55 -0
- data/sig/plugins/compression/brotli.rbs +21 -0
- data/sig/plugins/compression/deflate.rbs +17 -0
- data/sig/plugins/compression/gzip.rbs +29 -0
- data/sig/plugins/cookies.rbs +26 -0
- data/sig/plugins/cookies/cookie.rbs +50 -0
- data/sig/plugins/cookies/jar.rbs +27 -0
- data/sig/plugins/digest_authentication.rbs +33 -0
- data/sig/plugins/expect.rbs +19 -0
- data/sig/plugins/follow_redirects.rbs +37 -0
- data/sig/plugins/h2c.rbs +26 -0
- data/sig/plugins/multipart.rbs +21 -0
- data/sig/plugins/persistent.rbs +17 -0
- data/sig/plugins/proxy.rbs +47 -0
- data/sig/plugins/proxy/http.rbs +14 -0
- data/sig/plugins/proxy/socks4.rbs +33 -0
- data/sig/plugins/proxy/socks5.rbs +36 -0
- data/sig/plugins/proxy/ssh.rbs +18 -0
- data/sig/plugins/push_promise.rbs +22 -0
- data/sig/plugins/rate_limiter.rbs +11 -0
- data/sig/plugins/retries.rbs +48 -0
- data/sig/plugins/stream.rbs +39 -0
- data/sig/pool.rbs +36 -0
- data/sig/registry.rbs +9 -0
- data/sig/request.rbs +61 -0
- data/sig/resolver.rbs +26 -0
- data/sig/resolver/https.rbs +49 -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 +87 -0
- data/sig/selector.rbs +20 -0
- data/sig/session.rbs +49 -0
- data/sig/timeout.rbs +29 -0
- data/sig/transcoder.rbs +18 -0
- data/sig/transcoder/body.rbs +18 -0
- data/sig/transcoder/chunker.rbs +32 -0
- data/sig/transcoder/form.rbs +16 -0
- data/sig/transcoder/json.rbs +14 -0
- metadata +128 -22
- data/lib/httpx/resolver/options.rb +0 -25
@@ -0,0 +1,50 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Parser
|
3
|
+
type parsed_headers = Hash[String, Array[String]]
|
4
|
+
|
5
|
+
interface _HTTP1Events
|
6
|
+
|
7
|
+
def on_start: () -> void
|
8
|
+
def on_headers: (parsed_headers) -> void
|
9
|
+
def on_trailers: (parsed_headers) -> void
|
10
|
+
def on_data: (String) -> void
|
11
|
+
def on_complete: () -> void
|
12
|
+
end
|
13
|
+
|
14
|
+
class HTTP1
|
15
|
+
VERSIONS: Array[String]
|
16
|
+
|
17
|
+
def <<: (String chunk) -> void
|
18
|
+
|
19
|
+
def headers: () -> parsed_headers
|
20
|
+
|
21
|
+
def http_version: () -> Array[1 | 0]
|
22
|
+
|
23
|
+
def reset!: () -> void
|
24
|
+
|
25
|
+
def status_code: () -> Integer
|
26
|
+
|
27
|
+
def upgrade?: () -> bool
|
28
|
+
|
29
|
+
def upgrade_data: () -> String
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def initialize: (_HTTP1Events observer) -> untyped
|
34
|
+
|
35
|
+
def nextstate: (Symbol state) -> void
|
36
|
+
|
37
|
+
def no_more_data?: () -> bool
|
38
|
+
|
39
|
+
def parse: () -> void
|
40
|
+
|
41
|
+
def parse_data: () -> void
|
42
|
+
|
43
|
+
def parse_headers: () -> void
|
44
|
+
|
45
|
+
def parse_headline: () -> void
|
46
|
+
|
47
|
+
def prepare_data: (parsed_headers headers) -> void
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module BasicAuthentication
|
4
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
5
|
+
|
6
|
+
module InstanceMethods
|
7
|
+
def basic_authentication: (string user, string password) -> instance
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
type sessionBasicAuthentication = Plugins::sessionAuthentication & Plugins::Authentication::InstanceMethods
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module Compression
|
4
|
+
extend Registry[Symbol, Class]
|
5
|
+
|
6
|
+
type deflatable = _Reader | _ToS
|
7
|
+
|
8
|
+
interface _Deflater
|
9
|
+
def deflate: (deflatable, _Writer, chunk_size: Integer) -> void
|
10
|
+
| (deflatable, _Writer, chunk_size: Integer) { (String) -> void } -> void
|
11
|
+
end
|
12
|
+
|
13
|
+
interface _Inflater
|
14
|
+
def inflate: (string) -> String
|
15
|
+
|
16
|
+
def initialize: (Numeric bytesize) -> untyped
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
20
|
+
|
21
|
+
interface _CompressionOptions
|
22
|
+
def compression_threshold_size: () -> _Integer?
|
23
|
+
def compression_threshold_size=: (int) -> int
|
24
|
+
def with_compression_threshold_size: (int) -> instance
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.extra_options: (Options) -> (Options & _CompressionOptions)
|
28
|
+
|
29
|
+
|
30
|
+
module ResponseBodyMethods
|
31
|
+
@encodings: Array[String]
|
32
|
+
@_deflaters: Array[_Decoder]
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def decompress: (string) -> String
|
37
|
+
end
|
38
|
+
|
39
|
+
class Encoder
|
40
|
+
include Transcoder::_Encoder
|
41
|
+
include _ToS
|
42
|
+
include _Each[String]
|
43
|
+
|
44
|
+
def close: () -> void
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def initialize: (deflatable body, _Deflater deflater) -> untyped
|
49
|
+
def deflate: () -> void
|
50
|
+
| () { (String) -> void } -> void
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module Compression
|
4
|
+
module Brotli
|
5
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
6
|
+
def self.configure: (*untyped) -> void
|
7
|
+
|
8
|
+
def self?.deflater: () -> _Deflater
|
9
|
+
def self?.decoder: (Numeric bytesize) -> Inflater
|
10
|
+
|
11
|
+
module Deflater
|
12
|
+
extend _Deflater
|
13
|
+
end
|
14
|
+
|
15
|
+
class Inflater
|
16
|
+
include _Inflater
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module Compression
|
4
|
+
module Deflate
|
5
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
6
|
+
def self.configure: (*untyped) -> void
|
7
|
+
|
8
|
+
def self?.deflater: () -> _Deflater
|
9
|
+
def self?.inflater: (Numeric bytesize) -> GZIP::Inflater
|
10
|
+
|
11
|
+
module Deflater
|
12
|
+
extend _Deflater
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module Compression
|
4
|
+
module GZIP
|
5
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
6
|
+
def self.configure: (*untyped) -> void
|
7
|
+
|
8
|
+
def self?.deflater: () -> _Deflater
|
9
|
+
def self?.inflater: (Numeric bytesize) -> Inflater
|
10
|
+
|
11
|
+
class Deflater
|
12
|
+
include _Deflater
|
13
|
+
|
14
|
+
@compressed_chunk: String
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def initialize: () -> untyped
|
19
|
+
def write: (string) -> void
|
20
|
+
def compressed_chunk: () -> String
|
21
|
+
end
|
22
|
+
|
23
|
+
class Inflater
|
24
|
+
include _Inflater
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module Cookies
|
4
|
+
type jar = Jar | _Each[cookies]
|
5
|
+
|
6
|
+
interface _CookieOptions
|
7
|
+
def cookies: () -> Jar?
|
8
|
+
def cookies=: (jar) -> Jar
|
9
|
+
def with_cookies: (jar) -> instance
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.extra_options: (Options) -> (Options & _CookieOptions)
|
13
|
+
|
14
|
+
module InstanceMethods
|
15
|
+
def cookies: () -> Jar
|
16
|
+
end
|
17
|
+
|
18
|
+
module HeadersMethods
|
19
|
+
def set_cookie: (Array[Cookie]) -> void
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
type sessionCookies = Session & Plugins::Cookies::InstanceMethods
|
24
|
+
type headersCookies = Headers & Plugins::Cookies::HeadersMethods
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins::Cookies
|
3
|
+
type cookie_attributes = Hash[Symbol | String, top]
|
4
|
+
|
5
|
+
class Cookie
|
6
|
+
include Comparable
|
7
|
+
|
8
|
+
MAX_LENGTH: Integer
|
9
|
+
|
10
|
+
attr_reader domain: DomainName?
|
11
|
+
|
12
|
+
attr_reader path: String
|
13
|
+
|
14
|
+
attr_reader name: String
|
15
|
+
|
16
|
+
attr_reader value: String?
|
17
|
+
|
18
|
+
attr_reader created_at: Time
|
19
|
+
|
20
|
+
def path=: (string) -> void
|
21
|
+
|
22
|
+
def domain=: (string) -> void
|
23
|
+
|
24
|
+
def expires: () -> Time?
|
25
|
+
|
26
|
+
def expired?: () -> bool
|
27
|
+
| (Time) -> bool
|
28
|
+
|
29
|
+
def cookie_value: () -> String
|
30
|
+
alias to_s cookie_value
|
31
|
+
|
32
|
+
def valid_for_uri?: (uri) -> bool
|
33
|
+
|
34
|
+
def self.new: (Cookie) -> untyped
|
35
|
+
| (cookie_attributes) -> untyped
|
36
|
+
| (String, String) -> untyped
|
37
|
+
| (String, String, cookie_attributes) -> untyped
|
38
|
+
|
39
|
+
def self.path_match?: (String, String) -> bool
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def initialize: (cookie_attributes) -> untyped
|
44
|
+
| (String, String) -> untyped
|
45
|
+
| (String, String, cookie_attributes?) -> untyped
|
46
|
+
|
47
|
+
def acceptable_from_uri?: (uri) -> bool
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins::Cookies
|
3
|
+
class Jar
|
4
|
+
type cookie = Cookie | Array[String, String, cookie_attributes] | Array[String, String] | cookie_attributes
|
5
|
+
|
6
|
+
include Enumerable[Cookie]
|
7
|
+
|
8
|
+
@cookies: Array[Cookie]
|
9
|
+
|
10
|
+
def parse: (String) -> void
|
11
|
+
|
12
|
+
def add: (Cookie) -> void
|
13
|
+
| (Cookie, String) -> void
|
14
|
+
|
15
|
+
def []: (uri) -> Array[Cookie]
|
16
|
+
|
17
|
+
def each: (uri) { (Cookie) -> void } -> void
|
18
|
+
| (uri) -> Enumerable[Cookie]
|
19
|
+
| () { (Cookie) -> void } -> void
|
20
|
+
| () -> Enumerable[Cookie]
|
21
|
+
private
|
22
|
+
|
23
|
+
def initialize: () -> void
|
24
|
+
| (_Each[cookie]) -> untyped
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module DigestAuthentication
|
4
|
+
DigestError: singleton(Error)
|
5
|
+
|
6
|
+
interface _DigestOptions
|
7
|
+
def digest: () -> Digest?
|
8
|
+
def digest=: (Digest) -> Digest
|
9
|
+
def with_digest: (Digest) -> instance
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.extra_options: (Options) -> (Options & _DigestOptions)
|
13
|
+
|
14
|
+
def self.load_dependencies: (*untyped) -> void
|
15
|
+
|
16
|
+
module InstanceMethods
|
17
|
+
def digest_authentication: (string user, string password) -> instance
|
18
|
+
end
|
19
|
+
|
20
|
+
class Digest
|
21
|
+
def generate_header: (Request, Response, ?bool?) -> String
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def initialize: (string user, string password) -> untyped
|
26
|
+
def make_cnonce: () -> String
|
27
|
+
def next_nonce: () -> Integer
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
type sessionDigestAuthentication = Plugins::sessionAuthentication & Plugins::Authentication::InstanceMethods
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module Expect
|
4
|
+
EXPECT_TIMEOUT: Integer
|
5
|
+
|
6
|
+
interface _ExpectOptions
|
7
|
+
def expect_timeout: () -> Integer?
|
8
|
+
def expect_timeout=: (int) -> Integer
|
9
|
+
def with_expect_timeout: (int) -> instance
|
10
|
+
|
11
|
+
def expect_threshold_size: () -> Integer?
|
12
|
+
def expect_threshold_size=: (int) -> Integer
|
13
|
+
def with_expect_threshold_size: (int) -> instance
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.extra_options: (Options) -> (Options & _ExpectOptions)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module HTTPX
|
2
|
+
InsecureRedirectError: singleton(Error)
|
3
|
+
|
4
|
+
module Plugins
|
5
|
+
module FollowRedirects
|
6
|
+
MAX_REDIRECTS: Integer
|
7
|
+
REDIRECT_STATUS: Range[Integer]
|
8
|
+
|
9
|
+
interface _FollowRedirectsOptions
|
10
|
+
def max_redirects: () -> Integer?
|
11
|
+
def max_redirects=: (int) -> Integer
|
12
|
+
def with_max_redirects: (int) -> instance
|
13
|
+
|
14
|
+
def follow_insecure_redirects: () -> bool?
|
15
|
+
def follow_insecure_redirects=: (bool) -> bool
|
16
|
+
def with_follow_insecure_redirects: (bool) -> instance
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.extra_options: (Options) -> (Options & _FollowRedirectsOptions)
|
20
|
+
|
21
|
+
module InstanceMethods
|
22
|
+
def max_redirects: (_ToI) -> instance
|
23
|
+
|
24
|
+
def build_redirect_request: (Request, Response, Options) -> Request
|
25
|
+
def __get_location_from_response: (Response) -> (URI::HTTP | URI::HTTPS)
|
26
|
+
end
|
27
|
+
|
28
|
+
module RequestMethods
|
29
|
+
def redirect_request: () -> Request
|
30
|
+
def redirect_request=: (Request) -> void
|
31
|
+
def max_redirects: () -> Integer
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
type sessionFollowRedirects = Session & Plugins::Authentication::InstanceMethods
|
36
|
+
end
|
37
|
+
end
|
data/sig/plugins/h2c.rbs
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module H2C
|
4
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
5
|
+
|
6
|
+
module InstanceMethods
|
7
|
+
VALID_H2C_METHODS: Array[Symbol]
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def valid_h2c_upgrade_request: (Request) -> bool
|
12
|
+
def valid_h2c_upgrade?: (Request, Response, Options) -> bool
|
13
|
+
end
|
14
|
+
|
15
|
+
class H2CParser < Connection::HTTP2
|
16
|
+
def upgrade: (Request, Response) -> void
|
17
|
+
end
|
18
|
+
|
19
|
+
module ConnectionMethods
|
20
|
+
def upgrade: (Request, Response) -> void
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
type sessionH2C = Session & Plugins::H2C::InstanceMethods
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module HTTPX
|
2
|
+
module Plugins
|
3
|
+
module Multipart
|
4
|
+
def self.load_dependencies: (singleton(Session)) -> void
|
5
|
+
def self.configure: (*untyped) -> void
|
6
|
+
def self?.encode: (untyped) -> Encoder
|
7
|
+
|
8
|
+
class Encoder
|
9
|
+
include Transcoder::_Encoder
|
10
|
+
include _ToS
|
11
|
+
include _Reader
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def initialize: (Hash[Symbol | string, HTTP::FormData::Part | string] multipart_data) -> untyped
|
16
|
+
|
17
|
+
def multipart?: (top) -> bool
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|