http 5.3.1 → 6.0.1

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +110 -13
  4. data/http.gemspec +32 -29
  5. data/lib/http/base64.rb +11 -1
  6. data/lib/http/chainable/helpers.rb +62 -0
  7. data/lib/http/chainable/verbs.rb +136 -0
  8. data/lib/http/chainable.rb +232 -136
  9. data/lib/http/client.rb +158 -127
  10. data/lib/http/connection/internals.rb +141 -0
  11. data/lib/http/connection.rb +126 -97
  12. data/lib/http/content_type.rb +61 -6
  13. data/lib/http/errors.rb +25 -1
  14. data/lib/http/feature.rb +65 -5
  15. data/lib/http/features/auto_deflate.rb +124 -17
  16. data/lib/http/features/auto_inflate.rb +38 -15
  17. data/lib/http/features/caching/entry.rb +178 -0
  18. data/lib/http/features/caching/in_memory_store.rb +63 -0
  19. data/lib/http/features/caching.rb +216 -0
  20. data/lib/http/features/digest_auth.rb +234 -0
  21. data/lib/http/features/instrumentation.rb +97 -17
  22. data/lib/http/features/logging.rb +183 -5
  23. data/lib/http/features/normalize_uri.rb +17 -0
  24. data/lib/http/features/raise_error.rb +18 -3
  25. data/lib/http/form_data/composite_io.rb +106 -0
  26. data/lib/http/form_data/file.rb +95 -0
  27. data/lib/http/form_data/multipart/param.rb +62 -0
  28. data/lib/http/form_data/multipart.rb +106 -0
  29. data/lib/http/form_data/part.rb +52 -0
  30. data/lib/http/form_data/readable.rb +58 -0
  31. data/lib/http/form_data/urlencoded.rb +175 -0
  32. data/lib/http/form_data/version.rb +8 -0
  33. data/lib/http/form_data.rb +102 -0
  34. data/lib/http/headers/known.rb +3 -0
  35. data/lib/http/headers/normalizer.rb +17 -36
  36. data/lib/http/headers.rb +172 -65
  37. data/lib/http/mime_type/adapter.rb +24 -9
  38. data/lib/http/mime_type/json.rb +19 -4
  39. data/lib/http/mime_type.rb +21 -3
  40. data/lib/http/options/definitions.rb +189 -0
  41. data/lib/http/options.rb +172 -125
  42. data/lib/http/redirector.rb +80 -75
  43. data/lib/http/request/body.rb +87 -6
  44. data/lib/http/request/builder.rb +184 -0
  45. data/lib/http/request/proxy.rb +83 -0
  46. data/lib/http/request/writer.rb +76 -16
  47. data/lib/http/request.rb +214 -98
  48. data/lib/http/response/body.rb +103 -18
  49. data/lib/http/response/inflater.rb +35 -7
  50. data/lib/http/response/parser.rb +98 -4
  51. data/lib/http/response/status/reasons.rb +2 -4
  52. data/lib/http/response/status.rb +141 -31
  53. data/lib/http/response.rb +219 -61
  54. data/lib/http/retriable/delay_calculator.rb +38 -11
  55. data/lib/http/retriable/errors.rb +21 -0
  56. data/lib/http/retriable/performer.rb +82 -38
  57. data/lib/http/session.rb +280 -0
  58. data/lib/http/timeout/global.rb +147 -34
  59. data/lib/http/timeout/null.rb +155 -9
  60. data/lib/http/timeout/per_operation.rb +139 -18
  61. data/lib/http/uri/normalizer.rb +82 -0
  62. data/lib/http/uri/parsing.rb +182 -0
  63. data/lib/http/uri.rb +289 -124
  64. data/lib/http/version.rb +2 -1
  65. data/lib/http.rb +11 -2
  66. data/sig/http.rbs +1619 -0
  67. metadata +36 -171
  68. data/.github/workflows/ci.yml +0 -67
  69. data/.gitignore +0 -15
  70. data/.rspec +0 -1
  71. data/.rubocop/layout.yml +0 -8
  72. data/.rubocop/metrics.yml +0 -4
  73. data/.rubocop/rspec.yml +0 -9
  74. data/.rubocop/style.yml +0 -32
  75. data/.rubocop.yml +0 -11
  76. data/.rubocop_todo.yml +0 -219
  77. data/.yardopts +0 -2
  78. data/CHANGELOG.md +0 -67
  79. data/CHANGES_OLD.md +0 -1002
  80. data/CONTRIBUTING.md +0 -26
  81. data/Gemfile +0 -51
  82. data/Guardfile +0 -18
  83. data/Rakefile +0 -64
  84. data/SECURITY.md +0 -17
  85. data/lib/http/headers/mixin.rb +0 -34
  86. data/lib/http/retriable/client.rb +0 -37
  87. data/logo.png +0 -0
  88. data/spec/lib/http/client_spec.rb +0 -556
  89. data/spec/lib/http/connection_spec.rb +0 -88
  90. data/spec/lib/http/content_type_spec.rb +0 -47
  91. data/spec/lib/http/features/auto_deflate_spec.rb +0 -77
  92. data/spec/lib/http/features/auto_inflate_spec.rb +0 -86
  93. data/spec/lib/http/features/instrumentation_spec.rb +0 -81
  94. data/spec/lib/http/features/logging_spec.rb +0 -65
  95. data/spec/lib/http/features/raise_error_spec.rb +0 -62
  96. data/spec/lib/http/headers/mixin_spec.rb +0 -36
  97. data/spec/lib/http/headers/normalizer_spec.rb +0 -52
  98. data/spec/lib/http/headers_spec.rb +0 -527
  99. data/spec/lib/http/options/body_spec.rb +0 -15
  100. data/spec/lib/http/options/features_spec.rb +0 -33
  101. data/spec/lib/http/options/form_spec.rb +0 -15
  102. data/spec/lib/http/options/headers_spec.rb +0 -24
  103. data/spec/lib/http/options/json_spec.rb +0 -15
  104. data/spec/lib/http/options/merge_spec.rb +0 -68
  105. data/spec/lib/http/options/new_spec.rb +0 -30
  106. data/spec/lib/http/options/proxy_spec.rb +0 -20
  107. data/spec/lib/http/options_spec.rb +0 -13
  108. data/spec/lib/http/redirector_spec.rb +0 -530
  109. data/spec/lib/http/request/body_spec.rb +0 -211
  110. data/spec/lib/http/request/writer_spec.rb +0 -121
  111. data/spec/lib/http/request_spec.rb +0 -234
  112. data/spec/lib/http/response/body_spec.rb +0 -85
  113. data/spec/lib/http/response/parser_spec.rb +0 -74
  114. data/spec/lib/http/response/status_spec.rb +0 -253
  115. data/spec/lib/http/response_spec.rb +0 -262
  116. data/spec/lib/http/retriable/delay_calculator_spec.rb +0 -69
  117. data/spec/lib/http/retriable/performer_spec.rb +0 -302
  118. data/spec/lib/http/uri/normalizer_spec.rb +0 -95
  119. data/spec/lib/http/uri_spec.rb +0 -71
  120. data/spec/lib/http_spec.rb +0 -535
  121. data/spec/regression_specs.rb +0 -24
  122. data/spec/spec_helper.rb +0 -89
  123. data/spec/support/black_hole.rb +0 -13
  124. data/spec/support/capture_warning.rb +0 -10
  125. data/spec/support/dummy_server/servlet.rb +0 -203
  126. data/spec/support/dummy_server.rb +0 -44
  127. data/spec/support/fakeio.rb +0 -21
  128. data/spec/support/fuubar.rb +0 -21
  129. data/spec/support/http_handling_shared.rb +0 -190
  130. data/spec/support/proxy_server.rb +0 -39
  131. data/spec/support/servers/config.rb +0 -11
  132. data/spec/support/servers/runner.rb +0 -19
  133. data/spec/support/simplecov.rb +0 -19
  134. data/spec/support/ssl_helper.rb +0 -104
data/CHANGELOG.md DELETED
@@ -1,67 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [Unreleased]
9
-
10
-
11
- ## [5.3.1] - 2025-06-09
12
-
13
- ### Changed
14
-
15
- - Revert switch to the native llhttp on MRI, as it's not compatible with
16
- standalone bundles
17
- ([#802](https://github.com/httprb/http/issues/802))
18
-
19
-
20
- ## [5.3.0] - 2025-06-09
21
-
22
- ### Added
23
-
24
- - (backported) Add .retriable feature to Http
25
- - (backported) Add more specific ConnectionError classes
26
- - (backported) New feature: RaiseError
27
-
28
- ### Changed
29
-
30
- - (backported) Drop depenency on base64
31
- - (backported) Cache header normalization to reduce object allocation
32
- - (backported) Use native llhttp on MRI
33
-
34
-
35
- ## [5.2.0] - 2024-02-05
36
-
37
- ### Added
38
-
39
- - Add `Connection#finished_request?`
40
- ([#743](https://github.com/httprb/http/pull/743))
41
- - Add `Instrumentation#on_error`
42
- ([#746](https://github.com/httprb/http/pull/746))
43
- - Add `base64` dependency (suppresses warnings on Ruby 3.0)
44
- ([#759](https://github.com/httprb/http/pull/759))
45
- - Add `PURGE` HTTP verb
46
- ([#757](https://github.com/httprb/http/pull/757))
47
- - Add Ruby-3.3 support
48
-
49
- ### Changed
50
-
51
- - **BREAKING** Process features in reverse order
52
- ([#766](https://github.com/httprb/http/pull/766))
53
- - **BREAKING** Downcase Content-Type charset name
54
- ([#753](https://github.com/httprb/http/pull/753))
55
- - **BREAKING** Make URI normalization more conservative
56
- ([#758](https://github.com/httprb/http/pull/758))
57
-
58
- ### Fixed
59
-
60
- - Close sockets on initialize failure
61
- ([#762](https://github.com/httprb/http/pull/762))
62
- - Prevent CRLF injection due to broken URL normalizer
63
- ([#765](https://github.com/httprb/http/pull/765))
64
-
65
- [unreleased]: https://github.com/httprb/http/compare/v5.3.0...5-x-stable
66
- [5.3.0]: https://github.com/httprb/http/compare/v5.2.0...v5.3.0
67
- [5.2.0]: https://github.com/httprb/http/compare/v5.1.1...v5.2.0