httpx 1.3.4 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/doc/release_notes/1_4_0.md +43 -0
  3. data/lib/httpx/adapters/faraday.rb +2 -0
  4. data/lib/httpx/adapters/webmock.rb +11 -5
  5. data/lib/httpx/callbacks.rb +0 -5
  6. data/lib/httpx/chainable.rb +3 -1
  7. data/lib/httpx/connection/http2.rb +11 -7
  8. data/lib/httpx/connection.rb +128 -16
  9. data/lib/httpx/errors.rb +12 -0
  10. data/lib/httpx/loggable.rb +5 -5
  11. data/lib/httpx/options.rb +26 -16
  12. data/lib/httpx/plugins/aws_sigv4.rb +31 -16
  13. data/lib/httpx/plugins/callbacks.rb +12 -2
  14. data/lib/httpx/plugins/circuit_breaker.rb +0 -5
  15. data/lib/httpx/plugins/content_digest.rb +202 -0
  16. data/lib/httpx/plugins/expect.rb +4 -3
  17. data/lib/httpx/plugins/follow_redirects.rb +7 -8
  18. data/lib/httpx/plugins/h2c.rb +23 -20
  19. data/lib/httpx/plugins/internal_telemetry.rb +27 -0
  20. data/lib/httpx/plugins/persistent.rb +16 -0
  21. data/lib/httpx/plugins/proxy/http.rb +17 -19
  22. data/lib/httpx/plugins/proxy.rb +91 -93
  23. data/lib/httpx/plugins/retries.rb +5 -8
  24. data/lib/httpx/plugins/upgrade.rb +5 -10
  25. data/lib/httpx/plugins/webdav.rb +6 -0
  26. data/lib/httpx/plugins/xml.rb +76 -0
  27. data/lib/httpx/pool.rb +73 -244
  28. data/lib/httpx/request/body.rb +16 -12
  29. data/lib/httpx/request.rb +1 -1
  30. data/lib/httpx/resolver/https.rb +12 -19
  31. data/lib/httpx/resolver/multi.rb +34 -16
  32. data/lib/httpx/resolver/native.rb +36 -13
  33. data/lib/httpx/resolver/resolver.rb +49 -11
  34. data/lib/httpx/resolver/system.rb +29 -11
  35. data/lib/httpx/resolver.rb +21 -14
  36. data/lib/httpx/response.rb +5 -3
  37. data/lib/httpx/selector.rb +164 -95
  38. data/lib/httpx/session.rb +296 -139
  39. data/lib/httpx/transcoder/gzip.rb +0 -3
  40. data/lib/httpx/transcoder/json.rb +14 -2
  41. data/lib/httpx/transcoder/utils/deflater.rb +7 -4
  42. data/lib/httpx/transcoder/utils/inflater.rb +2 -0
  43. data/lib/httpx/transcoder.rb +0 -1
  44. data/lib/httpx/version.rb +1 -1
  45. data/lib/httpx.rb +19 -20
  46. data/sig/callbacks.rbs +0 -1
  47. data/sig/chainable.rbs +4 -0
  48. data/sig/connection/http2.rbs +1 -1
  49. data/sig/connection.rbs +14 -3
  50. data/sig/errors.rbs +6 -0
  51. data/sig/loggable.rbs +2 -0
  52. data/sig/options.rbs +7 -0
  53. data/sig/plugins/aws_sigv4.rbs +8 -2
  54. data/sig/plugins/content_digest.rbs +51 -0
  55. data/sig/plugins/cookies/cookie.rbs +9 -0
  56. data/sig/plugins/grpc/call.rbs +4 -0
  57. data/sig/plugins/persistent.rbs +4 -1
  58. data/sig/plugins/proxy/socks5.rbs +11 -3
  59. data/sig/plugins/proxy.rbs +18 -11
  60. data/sig/plugins/push_promise.rbs +3 -0
  61. data/sig/plugins/rate_limiter.rbs +2 -0
  62. data/sig/plugins/retries.rbs +1 -1
  63. data/sig/plugins/ssrf_filter.rbs +26 -0
  64. data/sig/plugins/webdav.rbs +23 -0
  65. data/sig/plugins/xml.rbs +37 -0
  66. data/sig/pool.rbs +25 -33
  67. data/sig/request/body.rbs +5 -1
  68. data/sig/resolver/multi.rbs +26 -1
  69. data/sig/resolver/native.rbs +0 -2
  70. data/sig/resolver/resolver.rbs +21 -2
  71. data/sig/resolver.rbs +5 -1
  72. data/sig/response/buffer.rbs +1 -1
  73. data/sig/selector.rbs +30 -4
  74. data/sig/session.rbs +45 -18
  75. data/sig/transcoder/body.rbs +1 -1
  76. data/sig/transcoder/chunker.rbs +1 -1
  77. data/sig/transcoder/deflate.rbs +1 -0
  78. data/sig/transcoder/form.rbs +8 -0
  79. data/sig/transcoder/gzip.rbs +4 -1
  80. data/sig/transcoder/utils/body_reader.rbs +2 -2
  81. data/sig/transcoder/utils/deflater.rbs +2 -2
  82. metadata +10 -4
  83. data/lib/httpx/transcoder/xml.rb +0 -52
  84. data/sig/transcoder/xml.rbs +0 -22
@@ -7,8 +7,6 @@ module HTTPX
7
7
  DEFAULTS: Hash[Symbol, untyped]
8
8
  DNS_PORT: Integer
9
9
 
10
- attr_reader family: ip_family
11
-
12
10
  @options: Options
13
11
  @ns_index: Integer
14
12
  @nameserver: Array[String]
@@ -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) -> boolish
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
@@ -9,7 +9,7 @@ module HTTPX
9
9
 
10
10
  def size: () -> Integer
11
11
 
12
- def write: (String) -> void
12
+ def write: (String chunk) -> Integer
13
13
 
14
14
  def to_s: () -> String
15
15
 
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
- type selectable = Connection | Resolver::Native | Resolver::System
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 select: (Numeric? interval) { (selectable) -> void } -> void
31
+ def deregister: (selectable io) -> selectable?
13
32
 
14
33
  private
15
34
 
16
- def initialize: () -> untyped
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
- @persistent: bool?
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: (*untyped) -> void
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 initialize: (?options) { (self) -> void } -> void
21
- | (?options) -> void
26
+ def select_connection: (Connection connection, Selector selector) -> void
22
27
 
23
- private
28
+ def deselect_connection: (Connection connection, Selector selector, ?bool cloned) -> void
24
29
 
25
- def pool: -> Pool
30
+ def select_resolver: (Resolver::Native | Resolver::HTTPS resolver, Selector selector) -> void
26
31
 
27
- def on_response: (Request, response) -> void
32
+ def deselect_resolver: (Resolver::Resolver resolver, Selector selector) -> void
28
33
 
29
- def on_promise: (untyped, untyped) -> void
34
+ def try_clone_connection: (Connection connection, Selector selector, Integer? family) -> Connection
30
35
 
31
- def fetch_response: (Request request, Array[Connection] connections, untyped options) -> response?
36
+ def find_connection: (http_uri request_uri, Selector selector, Options options) -> Connection
32
37
 
33
- def find_connection: (Request request, Array[Connection] connections, Options options) -> Connection
38
+ private
34
39
 
35
- def deactivate_connection: (Request request, Array[Connection] connections, Options options) -> void
40
+ def initialize: (?options) { (self) -> void } -> void
41
+ | (?options) -> void
36
42
 
37
- def send_request: (Request request, Array[Connection] connections, ?Options options) -> void
43
+ def deactivate: (Selector selector) -> void
38
44
 
39
- def set_connection_callbacks: (Connection connection, Array[Connection] connections, Options options, ?cloned: bool) -> void
45
+ def on_response: (Request, response) -> void
40
46
 
41
- def set_request_callbacks: (Request request) -> void
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 build_altsvc_connection: (Connection existing_connection, Array[Connection] connections, URI::Generic alt_origin, String origin, Hash[String, String] alt_params, Options options) -> (Connection & AltSvc::ConnectionMixin)?
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 init_connection: (http_uri uri, Options options) -> Connection
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) -> Array[Connection]
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 receive_requests: (Array[Request] requests, Array[Connection] connections) -> Array[response]
84
+ def selector_store: () -> Hash[instance, Selector]
58
85
 
59
86
  attr_reader self.default_options: Options
60
87
  end
@@ -7,7 +7,7 @@ module HTTPX
7
7
  class Encoder
8
8
  extend Forwardable
9
9
 
10
- @raw: bodyIO
10
+ @raw: Object & bodyIO
11
11
 
12
12
  def bytesize: () -> (Integer | Float)
13
13
 
@@ -8,7 +8,7 @@ module HTTPX::Transcoder
8
8
  def self?.encode: (_Each[String] chunks) -> Encoder
9
9
 
10
10
  class Encoder
11
- @raw: _Each[String]
11
+ @raw: Object & _Each[String]
12
12
 
13
13
  def each: () { (String) -> void } -> void
14
14
  | () -> Enumerator[String, void]
@@ -5,6 +5,7 @@ module HTTPX
5
5
  def self?.decode: (Response body, ?bytesize: Integer) -> GZIP::Inflater
6
6
 
7
7
  class Deflater < Transcoder::Deflater
8
+ @deflater: Zlib::Deflate
8
9
  end
9
10
  end
10
11
  end
@@ -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
@@ -1,7 +1,7 @@
1
1
  module HTTPX
2
2
  module Transcoder
3
3
  module GZIP
4
- def self?.encode: (_Encoder body) -> Deflater
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: (bodyIO body) -> void
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: _Encoder | StringIO
8
+ @body: BodyReader
9
9
  @closed: bool
10
10
 
11
11
  attr_reader content_type: String
12
12
 
13
- def initialize: (_Encoder body) -> void
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.3.4
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-19 00:00:00.000000000 Z
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:
@@ -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
@@ -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