httpx 1.3.4 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/release_notes/1_4_0.md +43 -0
- data/lib/httpx/adapters/faraday.rb +2 -0
- data/lib/httpx/adapters/webmock.rb +11 -5
- data/lib/httpx/callbacks.rb +0 -5
- data/lib/httpx/chainable.rb +3 -1
- data/lib/httpx/connection/http2.rb +11 -7
- data/lib/httpx/connection.rb +128 -16
- data/lib/httpx/errors.rb +12 -0
- data/lib/httpx/loggable.rb +5 -5
- data/lib/httpx/options.rb +26 -16
- data/lib/httpx/plugins/aws_sigv4.rb +31 -16
- data/lib/httpx/plugins/callbacks.rb +12 -2
- data/lib/httpx/plugins/circuit_breaker.rb +0 -5
- data/lib/httpx/plugins/content_digest.rb +202 -0
- data/lib/httpx/plugins/expect.rb +4 -3
- data/lib/httpx/plugins/follow_redirects.rb +7 -8
- data/lib/httpx/plugins/h2c.rb +23 -20
- data/lib/httpx/plugins/internal_telemetry.rb +27 -0
- data/lib/httpx/plugins/persistent.rb +16 -0
- data/lib/httpx/plugins/proxy/http.rb +17 -19
- data/lib/httpx/plugins/proxy.rb +91 -93
- data/lib/httpx/plugins/retries.rb +5 -8
- data/lib/httpx/plugins/upgrade.rb +5 -10
- data/lib/httpx/plugins/webdav.rb +6 -0
- data/lib/httpx/plugins/xml.rb +76 -0
- data/lib/httpx/pool.rb +73 -244
- data/lib/httpx/request/body.rb +16 -12
- data/lib/httpx/request.rb +1 -1
- data/lib/httpx/resolver/https.rb +12 -19
- data/lib/httpx/resolver/multi.rb +34 -16
- data/lib/httpx/resolver/native.rb +36 -13
- data/lib/httpx/resolver/resolver.rb +49 -11
- data/lib/httpx/resolver/system.rb +29 -11
- data/lib/httpx/resolver.rb +21 -14
- data/lib/httpx/response.rb +5 -3
- data/lib/httpx/selector.rb +164 -95
- data/lib/httpx/session.rb +296 -139
- data/lib/httpx/transcoder/gzip.rb +0 -3
- data/lib/httpx/transcoder/json.rb +14 -2
- data/lib/httpx/transcoder/utils/deflater.rb +7 -4
- data/lib/httpx/transcoder/utils/inflater.rb +2 -0
- data/lib/httpx/transcoder.rb +0 -1
- data/lib/httpx/version.rb +1 -1
- data/lib/httpx.rb +19 -20
- data/sig/callbacks.rbs +0 -1
- data/sig/chainable.rbs +4 -0
- data/sig/connection/http2.rbs +1 -1
- data/sig/connection.rbs +14 -3
- data/sig/errors.rbs +6 -0
- data/sig/loggable.rbs +2 -0
- data/sig/options.rbs +7 -0
- data/sig/plugins/aws_sigv4.rbs +8 -2
- data/sig/plugins/content_digest.rbs +51 -0
- data/sig/plugins/cookies/cookie.rbs +9 -0
- data/sig/plugins/grpc/call.rbs +4 -0
- data/sig/plugins/persistent.rbs +4 -1
- data/sig/plugins/proxy/socks5.rbs +11 -3
- data/sig/plugins/proxy.rbs +18 -11
- data/sig/plugins/push_promise.rbs +3 -0
- data/sig/plugins/rate_limiter.rbs +2 -0
- data/sig/plugins/retries.rbs +1 -1
- data/sig/plugins/ssrf_filter.rbs +26 -0
- data/sig/plugins/webdav.rbs +23 -0
- data/sig/plugins/xml.rbs +37 -0
- data/sig/pool.rbs +25 -33
- data/sig/request/body.rbs +5 -1
- data/sig/resolver/multi.rbs +26 -1
- data/sig/resolver/native.rbs +0 -2
- data/sig/resolver/resolver.rbs +21 -2
- data/sig/resolver.rbs +5 -1
- data/sig/response/buffer.rbs +1 -1
- data/sig/selector.rbs +30 -4
- data/sig/session.rbs +45 -18
- data/sig/transcoder/body.rbs +1 -1
- data/sig/transcoder/chunker.rbs +1 -1
- data/sig/transcoder/deflate.rbs +1 -0
- data/sig/transcoder/form.rbs +8 -0
- data/sig/transcoder/gzip.rbs +4 -1
- data/sig/transcoder/utils/body_reader.rbs +2 -2
- data/sig/transcoder/utils/deflater.rbs +2 -2
- metadata +10 -4
- data/lib/httpx/transcoder/xml.rb +0 -52
- data/sig/transcoder/xml.rbs +0 -22
data/sig/resolver/native.rbs
CHANGED
data/sig/resolver/resolver.rbs
CHANGED
@@ -6,8 +6,17 @@ module HTTPX
|
|
6
6
|
|
7
7
|
RECORD_TYPES: Hash[Integer, singleton(Resolv::DNS::Resource)]
|
8
8
|
|
9
|
+
attr_reader family: ip_family
|
10
|
+
|
11
|
+
attr_reader options: Options
|
12
|
+
|
13
|
+
attr_writer current_selector: Selector?
|
14
|
+
|
15
|
+
attr_writer current_session: Session?
|
16
|
+
|
17
|
+
attr_accessor multi: Multi?
|
18
|
+
|
9
19
|
@record_type: singleton(Resolv::DNS::Resource)
|
10
|
-
@options: Options
|
11
20
|
@resolver_options: Hash[Symbol, untyped]
|
12
21
|
@queries: Hash[String, Connection]
|
13
22
|
@system_resolver: Resolv::Hosts
|
@@ -20,6 +29,8 @@ module HTTPX
|
|
20
29
|
|
21
30
|
def empty?: () -> bool
|
22
31
|
|
32
|
+
def each_connection: () { (Connection connection) -> void } -> void
|
33
|
+
|
23
34
|
def emit_addresses: (Connection connection, ip_family family, Array[IPAddr], ?bool early_resolve) -> void
|
24
35
|
|
25
36
|
private
|
@@ -28,7 +39,15 @@ module HTTPX
|
|
28
39
|
|
29
40
|
def initialize: (ip_family? family, Options options) -> void
|
30
41
|
|
31
|
-
def early_resolve: (Connection connection, ?hostname: String) ->
|
42
|
+
def early_resolve: (Connection connection, ?hostname: String) -> bool
|
43
|
+
|
44
|
+
def set_resolver_callbacks: () -> void
|
45
|
+
|
46
|
+
def resolve_connection: (Connection connection) -> void
|
47
|
+
|
48
|
+
def emit_connection_error: (Connection connection, StandardError error) -> void
|
49
|
+
|
50
|
+
def close_resolver: (Resolver resolver) -> void
|
32
51
|
|
33
52
|
def emit_resolve_error: (Connection connection, ?String hostname, ?StandardError) -> void
|
34
53
|
|
data/sig/resolver.rbs
CHANGED
@@ -28,12 +28,16 @@ module HTTPX
|
|
28
28
|
|
29
29
|
def self?.cached_lookup_set: (String hostname, ip_family family, Array[dns_result] addresses) -> void
|
30
30
|
|
31
|
-
def self?.lookup: (String hostname, Numeric ttl) -> Array[IPAddr]?
|
31
|
+
def self?.lookup: (String hostname, Hash[String, Array[dns_result]] lookups, Numeric ttl) -> Array[IPAddr]?
|
32
32
|
|
33
33
|
def self?.generate_id: () -> Integer
|
34
34
|
|
35
35
|
def self?.encode_dns_query: (String hostname, ?type: dns_resource, ?message_id: Integer) -> String
|
36
36
|
|
37
37
|
def self?.decode_dns_answer: (String) -> dns_decoding_response
|
38
|
+
|
39
|
+
def self?.lookup_synchronize: [U] () { (Hash[String, Array[dns_result]] lookups) -> U } -> U
|
40
|
+
|
41
|
+
def self?.id_synchronize: () { () -> void } -> void
|
38
42
|
end
|
39
43
|
end
|
data/sig/response/buffer.rbs
CHANGED
data/sig/selector.rbs
CHANGED
@@ -1,22 +1,48 @@
|
|
1
1
|
module HTTPX
|
2
|
+
type selectable = Connection | Resolver::Native
|
3
|
+
|
2
4
|
class Selector
|
3
|
-
|
5
|
+
include _Each[selectable]
|
4
6
|
|
5
7
|
READABLE: Array[Symbol]
|
6
8
|
WRITABLE: Array[Symbol]
|
9
|
+
|
10
|
+
@timers: Timers
|
11
|
+
|
7
12
|
@selectables: Array[selectable]
|
8
13
|
|
14
|
+
def next_tick: () -> void
|
15
|
+
|
16
|
+
def terminate: () -> void
|
17
|
+
|
18
|
+
def find_resolver: (Options options) -> Resolver::Resolver?
|
19
|
+
|
20
|
+
def find_connection: (http_uri request_uri, Options options) -> Connection?
|
21
|
+
|
22
|
+
def each_connection: () { (Connection) -> void} -> void
|
23
|
+
| () -> Enumerable[Connection]
|
24
|
+
|
25
|
+
def find_mergeable_connection: (Connection connection) -> Connection?
|
26
|
+
|
27
|
+
def empty?: () -> bool
|
28
|
+
|
9
29
|
def register: (selectable io) -> void
|
10
|
-
def deregister: (selectable io) -> selectable?
|
11
30
|
|
12
|
-
def
|
31
|
+
def deregister: (selectable io) -> selectable?
|
13
32
|
|
14
33
|
private
|
15
34
|
|
16
|
-
def initialize: () ->
|
35
|
+
def initialize: () -> void
|
36
|
+
|
37
|
+
def select: (Numeric? interval) { (selectable) -> void } -> void
|
17
38
|
|
18
39
|
def select_many: (Numeric? interval) { (selectable) -> void } -> void
|
40
|
+
|
19
41
|
def select_one: (Numeric? interval) { (selectable) -> void } -> void
|
42
|
+
|
43
|
+
def next_timeout: () -> Numeric?
|
44
|
+
|
45
|
+
def emit_error: (StandardError e) -> void
|
20
46
|
end
|
21
47
|
|
22
48
|
type io_interests = :r | :w | :rw
|
data/sig/session.rbs
CHANGED
@@ -7,40 +7,50 @@ module HTTPX
|
|
7
7
|
|
8
8
|
@options: Options
|
9
9
|
@responses: Hash[Request, response]
|
10
|
-
|
10
|
+
|
11
|
+
# returns the HTTPX::Pool object which manages the networking required to
|
12
|
+
# perform requests.
|
13
|
+
@pool: Pool
|
14
|
+
|
15
|
+
@persistent: bool
|
16
|
+
@wrapped: bool
|
11
17
|
|
12
18
|
def self.plugin: (Symbol | Module plugin, ?options? options) ?{ (Class) -> void } -> singleton(Session)
|
13
19
|
|
14
20
|
def wrap: () { (instance) -> void } -> void
|
15
21
|
|
16
|
-
def close: (
|
22
|
+
def close: (?Selector selector) -> void
|
17
23
|
|
18
24
|
def build_request: (verb verb, generic_uri uri, ?request_params params, ?Options options) -> Request
|
19
25
|
|
20
|
-
def
|
21
|
-
| (?options) -> void
|
26
|
+
def select_connection: (Connection connection, Selector selector) -> void
|
22
27
|
|
23
|
-
|
28
|
+
def deselect_connection: (Connection connection, Selector selector, ?bool cloned) -> void
|
24
29
|
|
25
|
-
def
|
30
|
+
def select_resolver: (Resolver::Native | Resolver::HTTPS resolver, Selector selector) -> void
|
26
31
|
|
27
|
-
def
|
32
|
+
def deselect_resolver: (Resolver::Resolver resolver, Selector selector) -> void
|
28
33
|
|
29
|
-
def
|
34
|
+
def try_clone_connection: (Connection connection, Selector selector, Integer? family) -> Connection
|
30
35
|
|
31
|
-
def
|
36
|
+
def find_connection: (http_uri request_uri, Selector selector, Options options) -> Connection
|
32
37
|
|
33
|
-
|
38
|
+
private
|
34
39
|
|
35
|
-
def
|
40
|
+
def initialize: (?options) { (self) -> void } -> void
|
41
|
+
| (?options) -> void
|
36
42
|
|
37
|
-
def
|
43
|
+
def deactivate: (Selector selector) -> void
|
38
44
|
|
39
|
-
def
|
45
|
+
def on_response: (Request, response) -> void
|
40
46
|
|
41
|
-
def
|
47
|
+
def on_promise: (untyped, untyped) -> void
|
48
|
+
|
49
|
+
def fetch_response: (Request request, Selector selector, Options options) -> response?
|
50
|
+
|
51
|
+
def send_request: (Request request, Selector selector, ?Options options) -> void
|
42
52
|
|
43
|
-
def
|
53
|
+
def set_request_callbacks: (Request request) -> void
|
44
54
|
|
45
55
|
def build_requests: (verb, uri, request_params) -> Array[Request]
|
46
56
|
| (Array[[verb, uri, request_params]], Hash[Symbol, untyped]) -> Array[Request]
|
@@ -48,13 +58,30 @@ module HTTPX
|
|
48
58
|
| (verb, _Each[[uri, request_params]], Hash[Symbol, untyped]) -> Array[Request]
|
49
59
|
| (verb, _Each[uri], request_params) -> Array[Request]
|
50
60
|
|
51
|
-
def
|
61
|
+
def do_init_connection: (Connection connection, Selector selector) -> void
|
52
62
|
|
53
63
|
def send_requests: (*Request) -> Array[response]
|
54
64
|
|
55
|
-
def _send_requests: (Array[Request] requests) ->
|
65
|
+
def _send_requests: (Array[Request] requests, Selector selector) -> void
|
66
|
+
|
67
|
+
def receive_requests: (Array[Request] requests, Selector selector) -> Array[response]
|
68
|
+
|
69
|
+
def resolve_connection: (Connection connection, Selector selector) -> void
|
70
|
+
|
71
|
+
def on_resolver_connection: (Connection connection, Selector selector) -> void
|
72
|
+
|
73
|
+
def on_resolver_close: (Resolver::Resolver resolver, Selector selector) -> void
|
74
|
+
|
75
|
+
def find_resolver_for: (Connection connection, Selector selector) -> (Resolver::Multi | Resolver::Resolver)
|
76
|
+
|
77
|
+
def coalesce_connections: (Connection conn1, Connection conn2, Selector selector, bool from_pool) -> bool
|
78
|
+
|
79
|
+
def get_current_selector: () -> Selector?
|
80
|
+
| () { () -> Selector } -> Selector
|
81
|
+
|
82
|
+
def set_current_selector: (Selector? selector) -> void
|
56
83
|
|
57
|
-
def
|
84
|
+
def selector_store: () -> Hash[instance, Selector]
|
58
85
|
|
59
86
|
attr_reader self.default_options: Options
|
60
87
|
end
|
data/sig/transcoder/body.rbs
CHANGED
data/sig/transcoder/chunker.rbs
CHANGED
data/sig/transcoder/deflate.rbs
CHANGED
data/sig/transcoder/form.rbs
CHANGED
@@ -6,6 +6,8 @@ module HTTPX::Transcoder
|
|
6
6
|
type urlencoded_input = Enumerable[[_ToS, form_nested_value | Multipart::multipart_nested_value]]
|
7
7
|
|
8
8
|
module Form
|
9
|
+
PARAM_DEPTH_LIMIT: Integer
|
10
|
+
|
9
11
|
def self?.encode: (urlencoded_input form) -> (Encoder | Multipart::Encoder)
|
10
12
|
def self?.decode: (HTTPX::Response response) -> _Decoder
|
11
13
|
def self?.multipart?: (form_nested_value | Multipart::multipart_nested_value data) -> bool
|
@@ -14,6 +16,8 @@ module HTTPX::Transcoder
|
|
14
16
|
extend Forwardable
|
15
17
|
include _ToS
|
16
18
|
|
19
|
+
@raw: String
|
20
|
+
|
17
21
|
def bytesize: () -> Integer
|
18
22
|
|
19
23
|
def content_type: () -> String
|
@@ -22,5 +26,9 @@ module HTTPX::Transcoder
|
|
22
26
|
|
23
27
|
def initialize: (urlencoded_input form) -> untyped
|
24
28
|
end
|
29
|
+
|
30
|
+
module Decoder
|
31
|
+
def self?.call: (HTTPX::Response response, *untyped) -> Hash[String, untyped]
|
32
|
+
end
|
25
33
|
end
|
26
34
|
end
|
data/sig/transcoder/gzip.rbs
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module HTTPX
|
2
2
|
module Transcoder
|
3
3
|
module GZIP
|
4
|
-
def self?.encode: (
|
4
|
+
def self?.encode: (body_encoder body) -> Deflater
|
5
5
|
def self?.decode: (Response response, ?bytesize: Integer) -> Inflater
|
6
6
|
|
7
7
|
class Deflater < Transcoder::Deflater
|
@@ -15,6 +15,9 @@ module HTTPX
|
|
15
15
|
end
|
16
16
|
|
17
17
|
class Inflater
|
18
|
+
@inflater: Zlib::Inflate
|
19
|
+
@bytesize: Integer
|
20
|
+
|
18
21
|
def initialize: (Integer | Float bytesize) -> void
|
19
22
|
|
20
23
|
def call: (String chunk) -> String
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module HTTPX
|
2
2
|
module Transcoder
|
3
3
|
class BodyReader
|
4
|
-
@body: _Reader | _Each[String]
|
4
|
+
@body: Object & (_Reader | _Each[String])
|
5
5
|
|
6
|
-
def initialize: (
|
6
|
+
def initialize: (body_encoder body) -> void
|
7
7
|
|
8
8
|
def bytesize: () -> (Integer | Float)
|
9
9
|
|
@@ -5,12 +5,12 @@ module HTTPX
|
|
5
5
|
|
6
6
|
@body: BodyReader
|
7
7
|
@buffer: Response::Buffer?
|
8
|
-
@body:
|
8
|
+
@body: BodyReader
|
9
9
|
@closed: bool
|
10
10
|
|
11
11
|
attr_reader content_type: String
|
12
12
|
|
13
|
-
def initialize: (
|
13
|
+
def initialize: (body_encoder body) -> void
|
14
14
|
|
15
15
|
def bytesize: () -> (Integer | Float)
|
16
16
|
|
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: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tiago Cardoso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http-2
|
@@ -149,6 +149,7 @@ extra_rdoc_files:
|
|
149
149
|
- doc/release_notes/1_3_2.md
|
150
150
|
- doc/release_notes/1_3_3.md
|
151
151
|
- doc/release_notes/1_3_4.md
|
152
|
+
- doc/release_notes/1_4_0.md
|
152
153
|
files:
|
153
154
|
- LICENSE.txt
|
154
155
|
- README.md
|
@@ -269,6 +270,7 @@ files:
|
|
269
270
|
- doc/release_notes/1_3_2.md
|
270
271
|
- doc/release_notes/1_3_3.md
|
271
272
|
- doc/release_notes/1_3_4.md
|
273
|
+
- doc/release_notes/1_4_0.md
|
272
274
|
- lib/httpx.rb
|
273
275
|
- lib/httpx/adapters/datadog.rb
|
274
276
|
- lib/httpx/adapters/faraday.rb
|
@@ -307,6 +309,7 @@ files:
|
|
307
309
|
- lib/httpx/plugins/circuit_breaker.rb
|
308
310
|
- lib/httpx/plugins/circuit_breaker/circuit.rb
|
309
311
|
- lib/httpx/plugins/circuit_breaker/circuit_store.rb
|
312
|
+
- lib/httpx/plugins/content_digest.rb
|
310
313
|
- lib/httpx/plugins/cookies.rb
|
311
314
|
- lib/httpx/plugins/cookies/cookie.rb
|
312
315
|
- lib/httpx/plugins/cookies/jar.rb
|
@@ -339,6 +342,7 @@ files:
|
|
339
342
|
- lib/httpx/plugins/upgrade.rb
|
340
343
|
- lib/httpx/plugins/upgrade/h2.rb
|
341
344
|
- lib/httpx/plugins/webdav.rb
|
345
|
+
- lib/httpx/plugins/xml.rb
|
342
346
|
- lib/httpx/pmatch_extensions.rb
|
343
347
|
- lib/httpx/pool.rb
|
344
348
|
- lib/httpx/punycode.rb
|
@@ -373,7 +377,6 @@ files:
|
|
373
377
|
- lib/httpx/transcoder/utils/body_reader.rb
|
374
378
|
- lib/httpx/transcoder/utils/deflater.rb
|
375
379
|
- lib/httpx/transcoder/utils/inflater.rb
|
376
|
-
- lib/httpx/transcoder/xml.rb
|
377
380
|
- lib/httpx/utils.rb
|
378
381
|
- lib/httpx/version.rb
|
379
382
|
- sig/altsvc.rbs
|
@@ -407,6 +410,7 @@ files:
|
|
407
410
|
- sig/plugins/callbacks.rbs
|
408
411
|
- sig/plugins/circuit_breaker.rbs
|
409
412
|
- sig/plugins/compression.rbs
|
413
|
+
- sig/plugins/content_digest.rbs
|
410
414
|
- sig/plugins/cookies.rbs
|
411
415
|
- sig/plugins/cookies/cookie.rbs
|
412
416
|
- sig/plugins/cookies/jar.rbs
|
@@ -430,8 +434,11 @@ files:
|
|
430
434
|
- sig/plugins/rate_limiter.rbs
|
431
435
|
- sig/plugins/response_cache.rbs
|
432
436
|
- sig/plugins/retries.rbs
|
437
|
+
- sig/plugins/ssrf_filter.rbs
|
433
438
|
- sig/plugins/stream.rbs
|
434
439
|
- sig/plugins/upgrade.rbs
|
440
|
+
- sig/plugins/webdav.rbs
|
441
|
+
- sig/plugins/xml.rbs
|
435
442
|
- sig/pool.rbs
|
436
443
|
- sig/request.rbs
|
437
444
|
- sig/request/body.rbs
|
@@ -458,7 +465,6 @@ files:
|
|
458
465
|
- sig/transcoder/utils/body_reader.rbs
|
459
466
|
- sig/transcoder/utils/deflater.rbs
|
460
467
|
- sig/transcoder/utils/inflater.rbs
|
461
|
-
- sig/transcoder/xml.rbs
|
462
468
|
- sig/utils.rbs
|
463
469
|
homepage: https://gitlab.com/os85/httpx
|
464
470
|
licenses:
|
data/lib/httpx/transcoder/xml.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "delegate"
|
4
|
-
require "forwardable"
|
5
|
-
require "uri"
|
6
|
-
|
7
|
-
module HTTPX::Transcoder
|
8
|
-
module Xml
|
9
|
-
module_function
|
10
|
-
|
11
|
-
MIME_TYPES = %r{\b(application|text)/(.+\+)?xml\b}.freeze
|
12
|
-
|
13
|
-
class Encoder
|
14
|
-
def initialize(xml)
|
15
|
-
@raw = xml
|
16
|
-
end
|
17
|
-
|
18
|
-
def content_type
|
19
|
-
charset = @raw.respond_to?(:encoding) ? @raw.encoding.to_s.downcase : "utf-8"
|
20
|
-
"application/xml; charset=#{charset}"
|
21
|
-
end
|
22
|
-
|
23
|
-
def bytesize
|
24
|
-
@raw.to_s.bytesize
|
25
|
-
end
|
26
|
-
|
27
|
-
def to_s
|
28
|
-
@raw.to_s
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def encode(xml)
|
33
|
-
Encoder.new(xml)
|
34
|
-
end
|
35
|
-
|
36
|
-
begin
|
37
|
-
require "nokogiri"
|
38
|
-
|
39
|
-
def decode(response)
|
40
|
-
content_type = response.content_type.mime_type
|
41
|
-
|
42
|
-
raise HTTPX::Error, "invalid form mime type (#{content_type})" unless MIME_TYPES.match?(content_type)
|
43
|
-
|
44
|
-
Nokogiri::XML.method(:parse)
|
45
|
-
end
|
46
|
-
rescue LoadError
|
47
|
-
def decode(_response)
|
48
|
-
raise HTTPX::Error, "\"nokogiri\" is required in order to decode XML"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
data/sig/transcoder/xml.rbs
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
module HTTPX::Transcoder
|
2
|
-
module Xml
|
3
|
-
MIME_TYPES: Regexp
|
4
|
-
|
5
|
-
def self?.encode: (untyped xml) -> Encoder
|
6
|
-
def self?.decode: (HTTPX::Response response) -> _Decoder
|
7
|
-
|
8
|
-
class Encoder
|
9
|
-
@raw: untyped # can be nokogiri object
|
10
|
-
|
11
|
-
def content_type: () -> String
|
12
|
-
|
13
|
-
def bytesize: () -> (Integer | Float)
|
14
|
-
|
15
|
-
def to_s: () -> String
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def initialize: (String xml) -> void
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|