httpx 1.3.3 → 1.4.0

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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/doc/release_notes/1_3_3.md +1 -1
  3. data/doc/release_notes/1_3_4.md +6 -0
  4. data/doc/release_notes/1_4_0.md +43 -0
  5. data/lib/httpx/adapters/faraday.rb +2 -0
  6. data/lib/httpx/adapters/webmock.rb +11 -5
  7. data/lib/httpx/callbacks.rb +0 -5
  8. data/lib/httpx/chainable.rb +3 -1
  9. data/lib/httpx/connection/http2.rb +11 -7
  10. data/lib/httpx/connection.rb +128 -16
  11. data/lib/httpx/errors.rb +12 -0
  12. data/lib/httpx/loggable.rb +5 -5
  13. data/lib/httpx/options.rb +26 -16
  14. data/lib/httpx/plugins/aws_sigv4.rb +31 -16
  15. data/lib/httpx/plugins/callbacks.rb +12 -2
  16. data/lib/httpx/plugins/circuit_breaker.rb +0 -5
  17. data/lib/httpx/plugins/content_digest.rb +202 -0
  18. data/lib/httpx/plugins/expect.rb +4 -3
  19. data/lib/httpx/plugins/follow_redirects.rb +7 -8
  20. data/lib/httpx/plugins/h2c.rb +23 -20
  21. data/lib/httpx/plugins/internal_telemetry.rb +27 -0
  22. data/lib/httpx/plugins/persistent.rb +16 -0
  23. data/lib/httpx/plugins/proxy/http.rb +17 -19
  24. data/lib/httpx/plugins/proxy.rb +91 -93
  25. data/lib/httpx/plugins/retries.rb +5 -8
  26. data/lib/httpx/plugins/upgrade.rb +5 -10
  27. data/lib/httpx/plugins/webdav.rb +6 -0
  28. data/lib/httpx/plugins/xml.rb +76 -0
  29. data/lib/httpx/pool.rb +73 -244
  30. data/lib/httpx/request/body.rb +16 -12
  31. data/lib/httpx/request.rb +1 -1
  32. data/lib/httpx/resolver/https.rb +12 -19
  33. data/lib/httpx/resolver/multi.rb +34 -16
  34. data/lib/httpx/resolver/native.rb +36 -13
  35. data/lib/httpx/resolver/resolver.rb +49 -11
  36. data/lib/httpx/resolver/system.rb +29 -11
  37. data/lib/httpx/resolver.rb +21 -14
  38. data/lib/httpx/response/body.rb +12 -1
  39. data/lib/httpx/response.rb +5 -3
  40. data/lib/httpx/selector.rb +164 -95
  41. data/lib/httpx/session.rb +296 -139
  42. data/lib/httpx/transcoder/gzip.rb +0 -3
  43. data/lib/httpx/transcoder/json.rb +14 -2
  44. data/lib/httpx/transcoder/multipart/encoder.rb +3 -1
  45. data/lib/httpx/transcoder/utils/deflater.rb +7 -4
  46. data/lib/httpx/transcoder/utils/inflater.rb +2 -0
  47. data/lib/httpx/transcoder.rb +0 -1
  48. data/lib/httpx/version.rb +1 -1
  49. data/lib/httpx.rb +19 -20
  50. data/sig/callbacks.rbs +0 -1
  51. data/sig/chainable.rbs +4 -0
  52. data/sig/connection/http2.rbs +1 -1
  53. data/sig/connection.rbs +14 -3
  54. data/sig/errors.rbs +6 -0
  55. data/sig/loggable.rbs +2 -0
  56. data/sig/options.rbs +7 -0
  57. data/sig/plugins/aws_sigv4.rbs +8 -2
  58. data/sig/plugins/content_digest.rbs +51 -0
  59. data/sig/plugins/cookies/cookie.rbs +9 -0
  60. data/sig/plugins/grpc/call.rbs +4 -0
  61. data/sig/plugins/persistent.rbs +4 -1
  62. data/sig/plugins/proxy/socks5.rbs +11 -3
  63. data/sig/plugins/proxy.rbs +18 -11
  64. data/sig/plugins/push_promise.rbs +3 -0
  65. data/sig/plugins/rate_limiter.rbs +2 -0
  66. data/sig/plugins/retries.rbs +1 -1
  67. data/sig/plugins/ssrf_filter.rbs +26 -0
  68. data/sig/plugins/webdav.rbs +23 -0
  69. data/sig/plugins/xml.rbs +37 -0
  70. data/sig/pool.rbs +25 -33
  71. data/sig/request/body.rbs +5 -1
  72. data/sig/resolver/multi.rbs +26 -1
  73. data/sig/resolver/native.rbs +0 -2
  74. data/sig/resolver/resolver.rbs +21 -2
  75. data/sig/resolver.rbs +5 -1
  76. data/sig/response/body.rbs +2 -2
  77. data/sig/response/buffer.rbs +2 -2
  78. data/sig/selector.rbs +30 -4
  79. data/sig/session.rbs +45 -18
  80. data/sig/transcoder/body.rbs +1 -1
  81. data/sig/transcoder/chunker.rbs +1 -1
  82. data/sig/transcoder/deflate.rbs +1 -0
  83. data/sig/transcoder/form.rbs +8 -0
  84. data/sig/transcoder/gzip.rbs +4 -1
  85. data/sig/transcoder/multipart.rbs +3 -3
  86. data/sig/transcoder/utils/body_reader.rbs +2 -2
  87. data/sig/transcoder/utils/deflater.rbs +2 -2
  88. metadata +12 -4
  89. data/lib/httpx/transcoder/xml.rb +0 -52
  90. 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
@@ -4,8 +4,8 @@ module HTTPX
4
4
  include _ToS
5
5
  include _ToStr
6
6
 
7
- attr_reader encoding: Encoding | String
8
- attr_reader encodings: Array[Encoding | String]
7
+ attr_reader encoding: Encoding
8
+ attr_reader encodings: Array[String]
9
9
 
10
10
  @response: Response
11
11
  @headers: Headers
@@ -5,11 +5,11 @@ module HTTPX
5
5
  @encoding: Encoding
6
6
  @buffer: StringIO | Tempfile
7
7
 
8
- def initialize: (threshold_size: Integer, ?bytesize: Integer, ?encoding: Encoding | String) -> void
8
+ def initialize: (threshold_size: Integer, ?bytesize: Integer, ?encoding: Encoding) -> void
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
@@ -9,7 +9,7 @@ module HTTPX
9
9
 
10
10
  MULTIPART_VALUE_COND: ^(_Reader | record_multipart_value value) -> bool
11
11
 
12
- type multipart_value = string | Pathname | File | _Reader
12
+ type multipart_value = string | Pathname | File | Tempfile | _Reader
13
13
 
14
14
  type record_multipart_value = { content_type: String, filename: String, body: multipart_value } |
15
15
  { content_type: String, body: multipart_value }
@@ -83,13 +83,13 @@ module HTTPX
83
83
 
84
84
  module Part
85
85
  def self?.call: [U] (Object & _MultipartInput multipart_input) -> [U, String, String]
86
- | (Object & multipart_nested_value input) -> ([StringIO, String, String?] | [File, String, String])
86
+ | (multipart_nested_value value) -> ([StringIO, String, String?] | [File | Tempfile, String, String])
87
87
  end
88
88
 
89
89
  module MimeTypeDetector
90
90
  DEFAULT_MIMETYPE: String
91
91
 
92
- def self?.call: (::IO file, String filename) -> String?
92
+ def self?.call: (::IO | Tempfile file, String filename) -> String?
93
93
  end
94
94
  end
95
95
  end
@@ -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.3
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-10-31 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
@@ -148,6 +148,8 @@ extra_rdoc_files:
148
148
  - doc/release_notes/1_3_1.md
149
149
  - doc/release_notes/1_3_2.md
150
150
  - doc/release_notes/1_3_3.md
151
+ - doc/release_notes/1_3_4.md
152
+ - doc/release_notes/1_4_0.md
151
153
  files:
152
154
  - LICENSE.txt
153
155
  - README.md
@@ -267,6 +269,8 @@ files:
267
269
  - doc/release_notes/1_3_1.md
268
270
  - doc/release_notes/1_3_2.md
269
271
  - doc/release_notes/1_3_3.md
272
+ - doc/release_notes/1_3_4.md
273
+ - doc/release_notes/1_4_0.md
270
274
  - lib/httpx.rb
271
275
  - lib/httpx/adapters/datadog.rb
272
276
  - lib/httpx/adapters/faraday.rb
@@ -305,6 +309,7 @@ files:
305
309
  - lib/httpx/plugins/circuit_breaker.rb
306
310
  - lib/httpx/plugins/circuit_breaker/circuit.rb
307
311
  - lib/httpx/plugins/circuit_breaker/circuit_store.rb
312
+ - lib/httpx/plugins/content_digest.rb
308
313
  - lib/httpx/plugins/cookies.rb
309
314
  - lib/httpx/plugins/cookies/cookie.rb
310
315
  - lib/httpx/plugins/cookies/jar.rb
@@ -337,6 +342,7 @@ files:
337
342
  - lib/httpx/plugins/upgrade.rb
338
343
  - lib/httpx/plugins/upgrade/h2.rb
339
344
  - lib/httpx/plugins/webdav.rb
345
+ - lib/httpx/plugins/xml.rb
340
346
  - lib/httpx/pmatch_extensions.rb
341
347
  - lib/httpx/pool.rb
342
348
  - lib/httpx/punycode.rb
@@ -371,7 +377,6 @@ files:
371
377
  - lib/httpx/transcoder/utils/body_reader.rb
372
378
  - lib/httpx/transcoder/utils/deflater.rb
373
379
  - lib/httpx/transcoder/utils/inflater.rb
374
- - lib/httpx/transcoder/xml.rb
375
380
  - lib/httpx/utils.rb
376
381
  - lib/httpx/version.rb
377
382
  - sig/altsvc.rbs
@@ -405,6 +410,7 @@ files:
405
410
  - sig/plugins/callbacks.rbs
406
411
  - sig/plugins/circuit_breaker.rbs
407
412
  - sig/plugins/compression.rbs
413
+ - sig/plugins/content_digest.rbs
408
414
  - sig/plugins/cookies.rbs
409
415
  - sig/plugins/cookies/cookie.rbs
410
416
  - sig/plugins/cookies/jar.rbs
@@ -428,8 +434,11 @@ files:
428
434
  - sig/plugins/rate_limiter.rbs
429
435
  - sig/plugins/response_cache.rbs
430
436
  - sig/plugins/retries.rbs
437
+ - sig/plugins/ssrf_filter.rbs
431
438
  - sig/plugins/stream.rbs
432
439
  - sig/plugins/upgrade.rbs
440
+ - sig/plugins/webdav.rbs
441
+ - sig/plugins/xml.rbs
433
442
  - sig/pool.rbs
434
443
  - sig/request.rbs
435
444
  - sig/request/body.rbs
@@ -456,7 +465,6 @@ files:
456
465
  - sig/transcoder/utils/body_reader.rbs
457
466
  - sig/transcoder/utils/deflater.rbs
458
467
  - sig/transcoder/utils/inflater.rbs
459
- - sig/transcoder/xml.rbs
460
468
  - sig/utils.rbs
461
469
  homepage: https://gitlab.com/os85/httpx
462
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