http 4.4.1 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +65 -0
  3. data/.gitignore +6 -10
  4. data/.rspec +0 -4
  5. data/.rubocop/layout.yml +8 -0
  6. data/.rubocop/style.yml +32 -0
  7. data/.rubocop.yml +8 -110
  8. data/.rubocop_todo.yml +205 -0
  9. data/.yardopts +1 -1
  10. data/CHANGES.md +188 -3
  11. data/Gemfile +18 -10
  12. data/LICENSE.txt +1 -1
  13. data/README.md +47 -86
  14. data/Rakefile +2 -10
  15. data/SECURITY.md +5 -0
  16. data/http.gemspec +9 -8
  17. data/lib/http/chainable.rb +23 -17
  18. data/lib/http/client.rb +44 -34
  19. data/lib/http/connection.rb +11 -7
  20. data/lib/http/content_type.rb +12 -7
  21. data/lib/http/errors.rb +3 -0
  22. data/lib/http/feature.rb +3 -1
  23. data/lib/http/features/auto_deflate.rb +6 -6
  24. data/lib/http/features/auto_inflate.rb +6 -7
  25. data/lib/http/features/instrumentation.rb +1 -1
  26. data/lib/http/features/logging.rb +19 -21
  27. data/lib/http/headers.rb +50 -13
  28. data/lib/http/mime_type/adapter.rb +3 -1
  29. data/lib/http/mime_type/json.rb +1 -0
  30. data/lib/http/options.rb +5 -8
  31. data/lib/http/redirector.rb +51 -2
  32. data/lib/http/request/body.rb +1 -0
  33. data/lib/http/request/writer.rb +9 -4
  34. data/lib/http/request.rb +28 -11
  35. data/lib/http/response/body.rb +6 -4
  36. data/lib/http/response/inflater.rb +1 -1
  37. data/lib/http/response/parser.rb +74 -62
  38. data/lib/http/response/status.rb +4 -3
  39. data/lib/http/response.rb +44 -18
  40. data/lib/http/timeout/global.rb +20 -36
  41. data/lib/http/timeout/null.rb +2 -1
  42. data/lib/http/timeout/per_operation.rb +32 -55
  43. data/lib/http/uri.rb +5 -5
  44. data/lib/http/version.rb +1 -1
  45. data/spec/lib/http/client_spec.rb +153 -30
  46. data/spec/lib/http/connection_spec.rb +8 -5
  47. data/spec/lib/http/features/auto_inflate_spec.rb +3 -2
  48. data/spec/lib/http/features/instrumentation_spec.rb +27 -21
  49. data/spec/lib/http/features/logging_spec.rb +8 -10
  50. data/spec/lib/http/headers_spec.rb +53 -18
  51. data/spec/lib/http/options/headers_spec.rb +1 -1
  52. data/spec/lib/http/options/merge_spec.rb +16 -16
  53. data/spec/lib/http/redirector_spec.rb +107 -3
  54. data/spec/lib/http/request/body_spec.rb +3 -3
  55. data/spec/lib/http/request/writer_spec.rb +25 -2
  56. data/spec/lib/http/request_spec.rb +5 -5
  57. data/spec/lib/http/response/body_spec.rb +5 -5
  58. data/spec/lib/http/response/parser_spec.rb +33 -4
  59. data/spec/lib/http/response/status_spec.rb +3 -3
  60. data/spec/lib/http/response_spec.rb +80 -3
  61. data/spec/lib/http_spec.rb +30 -3
  62. data/spec/spec_helper.rb +21 -21
  63. data/spec/support/black_hole.rb +1 -1
  64. data/spec/support/dummy_server/servlet.rb +17 -6
  65. data/spec/support/dummy_server.rb +7 -7
  66. data/spec/support/fuubar.rb +21 -0
  67. data/spec/support/http_handling_shared.rb +5 -5
  68. data/spec/support/simplecov.rb +19 -0
  69. data/spec/support/ssl_helper.rb +4 -4
  70. metadata +23 -15
  71. data/.coveralls.yml +0 -1
  72. data/.travis.yml +0 -39
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cce9a8685f3b60f994e77174f79c2306f607d62016bf64b74fcebc4f86377ec0
4
- data.tar.gz: 353702b62a1b9d3b2ea86ac5ac3ad88e9efa734c77e180128fa06c6c301895d3
3
+ metadata.gz: 3826a20981b5ed6a7e5f29fd99af814a8409dea3d556d8d4f1c1faeee0060211
4
+ data.tar.gz: 5f1a624d39059a53df7535df9d8094ec2eb17330ce113ee5f8201f028cb08a01
5
5
  SHA512:
6
- metadata.gz: 84ddc4cf98e603d175a9ecb8db03abd32187888070abd96a437c4121750ac2b86b6cada5d00d527b398ff4a403c2b6448d45bed61c45dbd3be8658f4ad38b121
7
- data.tar.gz: 750edced9ae715483d750f0b18777f84a4ee24848ec761c67d2c5b89d00ebbc99fbc1e02932d3d30a33eaea43e1d081ba97bcacaf2231f6693e50d218ee24e87
6
+ metadata.gz: f34965016796ff2864a48d86c45a95db18a5bd118921e9f5ab653b042d53f13332d155238b1b26d28be643b6dffea6f0bf9ac20bbc71bcab05e73e7358ca9b7d
7
+ data.tar.gz: dfcf6ad46848750d86cb9139b7b0ab9d4ae28624bc7c0d779450f3cfbd8de11dd6ba242855fee759210ffade294743746059157cd1eab4eb69125f644653f5e5
@@ -0,0 +1,65 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ env:
10
+ BUNDLE_WITHOUT: "development"
11
+ JRUBY_OPTS: "--dev --debug"
12
+
13
+ jobs:
14
+ test:
15
+ runs-on: ${{ matrix.os }}
16
+
17
+ strategy:
18
+ matrix:
19
+ ruby: [ ruby-2.6, ruby-2.7, ruby-3.0, ruby-3.1 ]
20
+ os: [ ubuntu-latest ]
21
+
22
+ steps:
23
+ - uses: actions/checkout@v3
24
+
25
+ - uses: ruby/setup-ruby@v1
26
+ with:
27
+ ruby-version: ${{ matrix.ruby }}
28
+ bundler-cache: true
29
+
30
+ - name: bundle exec rspec
31
+ run: bundle exec rspec --format progress --force-colour
32
+
33
+ - name: Prepare Coveralls test coverage report
34
+ uses: coverallsapp/github-action@v1.1.2
35
+ with:
36
+ github-token: ${{ secrets.GITHUB_TOKEN }}
37
+ flag-name: "${{ matrix.ruby }} @${{ matrix.os }}"
38
+ path-to-lcov: ./coverage/lcov/lcov.info
39
+ parallel: true
40
+
41
+ coveralls:
42
+ needs: test
43
+ runs-on: ubuntu-latest
44
+ steps:
45
+ - name: Finalize Coveralls test coverage report
46
+ uses: coverallsapp/github-action@master
47
+ with:
48
+ github-token: ${{ secrets.GITHUB_TOKEN }}
49
+ parallel-finished: true
50
+
51
+ lint:
52
+ runs-on: ubuntu-latest
53
+
54
+ steps:
55
+ - uses: actions/checkout@v3
56
+
57
+ - uses: ruby/setup-ruby@v1
58
+ with:
59
+ ruby-version: 2.6
60
+ bundler-cache: true
61
+
62
+ - name: bundle exec rubocop
63
+ run: bundle exec rubocop --format progress --color
64
+
65
+ - run: bundle exec rake verify_measurements
data/.gitignore CHANGED
@@ -1,19 +1,15 @@
1
1
  *.gem
2
- .bundle
3
2
  .config
4
3
  .rvmrc
5
- .ruby-version
6
4
  .yardoc
7
- Gemfile.lock
8
5
  InstalledFiles
9
6
  _yardoc
10
- coverage
7
+
8
+ .bundle
9
+ .ruby-version
11
10
  doc
12
- lib/bundler/man
13
- measurement
11
+ coverage
14
12
  pkg
15
- rdoc
16
- spec/reports
17
- test/tmp
18
- test/version_tmp
13
+ spec/examples.txt
19
14
  tmp
15
+ Gemfile.lock
data/.rspec CHANGED
@@ -1,5 +1 @@
1
- --backtrace
2
- --color
3
- --format=documentation
4
- --order random
5
1
  --require spec_helper
@@ -0,0 +1,8 @@
1
+ Layout/DotPosition:
2
+ Enabled: true
3
+ EnforcedStyle: leading
4
+
5
+ Layout/HashAlignment:
6
+ Enabled: true
7
+ EnforcedColonStyle: table
8
+ EnforcedHashRocketStyle: table
@@ -0,0 +1,32 @@
1
+ Style/Documentation:
2
+ Enabled: false
3
+
4
+ Style/DocumentDynamicEvalDefinition:
5
+ Enabled: true
6
+ Exclude:
7
+ - 'spec/**/*.rb'
8
+
9
+ Style/FormatStringToken:
10
+ Enabled: true
11
+ EnforcedStyle: unannotated
12
+
13
+ Style/HashSyntax:
14
+ Enabled: true
15
+ EnforcedStyle: hash_rockets
16
+
17
+ Style/OptionHash:
18
+ Enabled: true
19
+
20
+ Style/RescueStandardError:
21
+ Enabled: true
22
+ EnforcedStyle: implicit
23
+
24
+ Style/StringLiterals:
25
+ Enabled: true
26
+ EnforcedStyle: double_quotes
27
+
28
+ Style/WordArray:
29
+ Enabled: true
30
+
31
+ Style/YodaCondition:
32
+ Enabled: false
data/.rubocop.yml CHANGED
@@ -1,112 +1,10 @@
1
+ inherit_from:
2
+ - .rubocop_todo.yml
3
+ - .rubocop/layout.yml
4
+ - .rubocop/style.yml
5
+
1
6
  AllCops:
2
- TargetRubyVersion: 2.3
7
+ DefaultFormatter: fuubar
3
8
  DisplayCopNames: true
4
-
5
- ## Layout ######################################################################
6
-
7
- Layout/DotPosition:
8
- EnforcedStyle: trailing
9
-
10
- Layout/SpaceAroundOperators:
11
- AllowForAlignment: true
12
-
13
- Layout/SpaceInsideHashLiteralBraces:
14
- EnforcedStyle: no_space
15
-
16
- ## Metrics #####################################################################
17
-
18
- Metrics/AbcSize:
19
- Enabled: false
20
-
21
- Metrics/BlockLength:
22
- Exclude:
23
- - "spec/**/*"
24
- - "**/*.gemspec"
25
-
26
- Metrics/BlockNesting:
27
- Max: 2
28
-
29
- Metrics/ClassLength:
30
- CountComments: false
31
- Max: 125
32
-
33
- # TODO: Lower to 6
34
- Metrics/CyclomaticComplexity:
35
- Max: 8
36
-
37
- Metrics/PerceivedComplexity:
38
- Max: 8
39
-
40
- # TODO: Lower to 80
41
- Metrics/LineLength:
42
- AllowURI: true
43
- Max: 143
44
-
45
- # TODO: Lower to 15
46
- Metrics/MethodLength:
47
- CountComments: false
48
- Max: 25
49
-
50
- Metrics/ModuleLength:
51
- CountComments: false
52
- Max: 120
53
-
54
- Metrics/ParameterLists:
55
- Max: 5
56
- CountKeywordArgs: true
57
-
58
- ## Performance #################################################################
59
-
60
- # XXX: requires ruby 2.4+
61
- Performance/RegexpMatch:
62
- Enabled: false
63
-
64
- ## Style #######################################################################
65
-
66
- Style/CollectionMethods:
67
- PreferredMethods:
68
- collect: 'map'
69
- reduce: 'inject'
70
- find: 'detect'
71
- find_all: 'select'
72
-
73
- Style/Documentation:
74
- Enabled: false
75
-
76
- Style/DoubleNegation:
77
- Enabled: false
78
-
79
- Style/EachWithObject:
80
- Enabled: false
81
-
82
- Style/Encoding:
83
- Enabled: false
84
-
85
- Style/EmptyCaseCondition:
86
- Enabled: false
87
-
88
- # XXX: Lots of times it suggests making code terrible to read.
89
- Style/GuardClause:
90
- Enabled: false
91
-
92
- Style/HashSyntax:
93
- EnforcedStyle: hash_rockets
94
-
95
- Style/Lambda:
96
- Enabled: false
97
-
98
- Style/OptionHash:
99
- Enabled: true
100
-
101
- # XXX: requires ruby 2.3+
102
- Style/SafeNavigation:
103
- Enabled: false
104
-
105
- Style/StringLiterals:
106
- EnforcedStyle: double_quotes
107
-
108
- Style/TrivialAccessors:
109
- Enabled: false
110
-
111
- Style/YodaCondition:
112
- Enabled: false
9
+ NewCops: enable
10
+ TargetRubyVersion: 2.6
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,205 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 100`
3
+ # on 2022-06-16 14:35:44 UTC using RuboCop version 1.30.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ # This cop supports safe autocorrection (--autocorrect).
11
+ # Configuration parameters: Include.
12
+ # Include: **/*.gemspec
13
+ Gemspec/DeprecatedAttributeAssignment:
14
+ Exclude:
15
+ - 'http.gemspec'
16
+
17
+ # Offense count: 53
18
+ # This cop supports safe autocorrection (--autocorrect).
19
+ # Configuration parameters: EnforcedStyle.
20
+ # SupportedStyles: leading, trailing
21
+ Layout/DotPosition:
22
+ Exclude:
23
+ - 'lib/http/options.rb'
24
+ - 'spec/lib/http/client_spec.rb'
25
+ - 'spec/lib/http/features/auto_deflate_spec.rb'
26
+ - 'spec/lib/http/headers_spec.rb'
27
+ - 'spec/lib/http/options/features_spec.rb'
28
+ - 'spec/lib/http/redirector_spec.rb'
29
+ - 'spec/lib/http/response/body_spec.rb'
30
+ - 'spec/lib/http_spec.rb'
31
+ - 'spec/support/http_handling_shared.rb'
32
+
33
+ # Offense count: 176
34
+ # This cop supports safe autocorrection (--autocorrect).
35
+ # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces.
36
+ # SupportedStyles: space, no_space, compact
37
+ # SupportedStylesForEmptyBraces: space, no_space
38
+ Layout/SpaceInsideHashLiteralBraces:
39
+ Exclude:
40
+ - 'lib/http/chainable.rb'
41
+ - 'spec/lib/http/client_spec.rb'
42
+ - 'spec/lib/http/features/auto_inflate_spec.rb'
43
+ - 'spec/lib/http/features/instrumentation_spec.rb'
44
+ - 'spec/lib/http/features/logging_spec.rb'
45
+ - 'spec/lib/http/headers_spec.rb'
46
+ - 'spec/lib/http/options/features_spec.rb'
47
+ - 'spec/lib/http/options/merge_spec.rb'
48
+ - 'spec/lib/http/options/new_spec.rb'
49
+ - 'spec/lib/http/redirector_spec.rb'
50
+ - 'spec/lib/http/request_spec.rb'
51
+ - 'spec/lib/http/response_spec.rb'
52
+ - 'spec/lib/http_spec.rb'
53
+ - 'spec/support/dummy_server/servlet.rb'
54
+ - 'spec/support/http_handling_shared.rb'
55
+ - 'spec/support/ssl_helper.rb'
56
+
57
+ # Offense count: 4
58
+ Lint/MissingSuper:
59
+ Exclude:
60
+ - 'lib/http/features/auto_deflate.rb'
61
+ - 'lib/http/features/instrumentation.rb'
62
+ - 'lib/http/features/logging.rb'
63
+ - 'lib/http/features/normalize_uri.rb'
64
+
65
+ # Offense count: 8
66
+ # Configuration parameters: IgnoredMethods, CountRepeatedAttributes, Max.
67
+ Metrics/AbcSize:
68
+ Exclude:
69
+ - 'lib/http/chainable.rb'
70
+ - 'lib/http/client.rb'
71
+ - 'lib/http/connection.rb'
72
+ - 'lib/http/features/auto_deflate.rb'
73
+ - 'lib/http/redirector.rb'
74
+ - 'lib/http/request.rb'
75
+ - 'lib/http/response.rb'
76
+
77
+ # Offense count: 69
78
+ # Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods.
79
+ # IgnoredMethods: refine
80
+ Metrics/BlockLength:
81
+ Exclude:
82
+ - '**/*.gemspec'
83
+ - 'spec/lib/http/client_spec.rb'
84
+ - 'spec/lib/http/connection_spec.rb'
85
+ - 'spec/lib/http/content_type_spec.rb'
86
+ - 'spec/lib/http/features/auto_deflate_spec.rb'
87
+ - 'spec/lib/http/features/auto_inflate_spec.rb'
88
+ - 'spec/lib/http/features/instrumentation_spec.rb'
89
+ - 'spec/lib/http/features/logging_spec.rb'
90
+ - 'spec/lib/http/headers/mixin_spec.rb'
91
+ - 'spec/lib/http/headers_spec.rb'
92
+ - 'spec/lib/http/options/merge_spec.rb'
93
+ - 'spec/lib/http/redirector_spec.rb'
94
+ - 'spec/lib/http/request/body_spec.rb'
95
+ - 'spec/lib/http/request/writer_spec.rb'
96
+ - 'spec/lib/http/request_spec.rb'
97
+ - 'spec/lib/http/response/body_spec.rb'
98
+ - 'spec/lib/http/response/parser_spec.rb'
99
+ - 'spec/lib/http/response/status_spec.rb'
100
+ - 'spec/lib/http/response_spec.rb'
101
+ - 'spec/lib/http_spec.rb'
102
+ - 'spec/support/http_handling_shared.rb'
103
+
104
+ # Offense count: 4
105
+ # Configuration parameters: CountComments, Max, CountAsOne.
106
+ Metrics/ClassLength:
107
+ Exclude:
108
+ - 'lib/http/client.rb'
109
+ - 'lib/http/connection.rb'
110
+ - 'lib/http/headers.rb'
111
+ - 'lib/http/request.rb'
112
+
113
+ # Offense count: 2
114
+ # Configuration parameters: IgnoredMethods, Max.
115
+ Metrics/CyclomaticComplexity:
116
+ Exclude:
117
+ - 'lib/http/chainable.rb'
118
+ - 'lib/http/client.rb'
119
+
120
+ # Offense count: 18
121
+ # Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods.
122
+ Metrics/MethodLength:
123
+ Exclude:
124
+ - 'lib/http/chainable.rb'
125
+ - 'lib/http/client.rb'
126
+ - 'lib/http/connection.rb'
127
+ - 'lib/http/features/auto_deflate.rb'
128
+ - 'lib/http/features/auto_inflate.rb'
129
+ - 'lib/http/headers.rb'
130
+ - 'lib/http/options.rb'
131
+ - 'lib/http/redirector.rb'
132
+ - 'lib/http/request.rb'
133
+ - 'lib/http/response.rb'
134
+ - 'lib/http/response/body.rb'
135
+ - 'lib/http/timeout/global.rb'
136
+
137
+ # Offense count: 1
138
+ # Configuration parameters: CountComments, Max, CountAsOne.
139
+ Metrics/ModuleLength:
140
+ Exclude:
141
+ - 'lib/http/chainable.rb'
142
+
143
+ # Offense count: 1
144
+ Security/CompoundHash:
145
+ Exclude:
146
+ - 'lib/http/uri.rb'
147
+
148
+ # Offense count: 2
149
+ # This cop supports safe autocorrection (--autocorrect).
150
+ # Configuration parameters: EnforcedStyle.
151
+ # SupportedStyles: separated, grouped
152
+ Style/AccessorGrouping:
153
+ Exclude:
154
+ - 'lib/http/request.rb'
155
+
156
+ # Offense count: 4
157
+ # This cop supports safe autocorrection (--autocorrect).
158
+ Style/EmptyCaseCondition:
159
+ Exclude:
160
+ - 'lib/http/client.rb'
161
+ - 'lib/http/headers.rb'
162
+ - 'lib/http/options.rb'
163
+ - 'lib/http/response/status.rb'
164
+
165
+ # Offense count: 5
166
+ # This cop supports safe autocorrection (--autocorrect).
167
+ Style/Encoding:
168
+ Exclude:
169
+ - 'spec/lib/http/client_spec.rb'
170
+ - 'spec/lib/http/request/writer_spec.rb'
171
+ - 'spec/lib/http/request_spec.rb'
172
+ - 'spec/lib/http_spec.rb'
173
+ - 'spec/support/dummy_server/servlet.rb'
174
+
175
+ # Offense count: 17
176
+ # Configuration parameters: SuspiciousParamNames, Allowlist.
177
+ # SuspiciousParamNames: options, opts, args, params, parameters
178
+ Style/OptionHash:
179
+ Exclude:
180
+ - 'lib/http/chainable.rb'
181
+ - 'lib/http/client.rb'
182
+ - 'lib/http/feature.rb'
183
+ - 'lib/http/options.rb'
184
+ - 'lib/http/redirector.rb'
185
+ - 'lib/http/timeout/null.rb'
186
+ - 'spec/support/dummy_server.rb'
187
+
188
+ # Offense count: 4
189
+ # Configuration parameters: AllowedMethods.
190
+ # AllowedMethods: respond_to_missing?
191
+ Style/OptionalBooleanParameter:
192
+ Exclude:
193
+ - 'lib/http/timeout/global.rb'
194
+ - 'lib/http/timeout/null.rb'
195
+ - 'lib/http/timeout/per_operation.rb'
196
+ - 'lib/http/uri.rb'
197
+
198
+ # Offense count: 3
199
+ # This cop supports safe autocorrection (--autocorrect).
200
+ # Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns, IgnoredPatterns.
201
+ # URISchemes: http, https
202
+ Layout/LineLength:
203
+ Exclude:
204
+ - 'lib/http/chainable.rb'
205
+ - 'spec/lib/http/options/proxy_spec.rb'
data/.yardopts CHANGED
@@ -1,2 +1,2 @@
1
- --markup-provider=redcarpet
1
+ --markup-provider=kramdown
2
2
  --markup=markdown
data/CHANGES.md CHANGED
@@ -1,9 +1,173 @@
1
- ## 4.4.1 (2020-03-29)
1
+ ## 5.1.0 (2022-06-17)
2
2
 
3
- * Backport [#590](https://github.com/httprb/http/pull/590)
4
- Fix parser failing on some edge cases.
3
+ * Drop ruby-2.5 support.
4
+
5
+ * [#715](https://github.com/httprb/http/pull/715)
6
+ Set default encoding to UTF-8 for `application/json`.
7
+ ([@drwl])
8
+
9
+ * [#712](https://github.com/httprb/http/pull/712)
10
+ Recognize cookies set by redirect.
11
+ ([@tkellogg])
12
+
13
+ * [#707](https://github.com/httprb/http/pull/707)
14
+ Distinguish connection timeouts.
15
+ ([@YuLeven])
16
+
17
+ ## 5.0.4 (2021-10-07)
18
+
19
+ * [#698](https://github.com/httprb/http/pull/698)
20
+ Fix `HTTP::Timeout::Global#connect_ssl`.
21
+ ([@tarcieri])
22
+
23
+ ## 5.0.3 (2021-10-06)
24
+
25
+ * [#695](https://github.com/httprb/http/pull/695)
26
+ Revert DNS resolving feature.
27
+ ([@PhilCoggins])
28
+
29
+ * [#694](https://github.com/httprb/http/pull/694)
30
+ Fix cookies extraction.
31
+ ([@flosacca])
32
+
33
+ ## 5.0.2 (2021-09-10)
34
+
35
+ * [#686](https://github.com/httprb/http/pull/686)
36
+ Correctly reset the parser.
37
+ ([@bryanp])
38
+
39
+ * [#684](https://github.com/httprb/http/pull/684)
40
+ Don't set Content-Length for GET, HEAD, DELETE, or CONNECT requests without a BODY.
41
+ ([@jyn514])
42
+
43
+ * [#679](https://github.com/httprb/http/pull/679)
44
+ Use features on redirected requests.
45
+ ([@nomis])
46
+
47
+ * [#678](https://github.com/schwern)
48
+ Restore `HTTP::Response` `:uri` option for backwards compatibility.
49
+ ([@schwern])
50
+
51
+ * [#676](https://github.com/httprb/http/pull/676)
52
+ Update addressable because of CVE-2021-32740.
53
+ ([@matheussilvasantos])
54
+
55
+ * [#653](https://github.com/httprb/http/pull/653)
56
+ Avoid force encodings on frozen strings.
57
+ ([@bvicenzo])
58
+
59
+ * [#638](https://github.com/httprb/http/pull/638)
60
+ DNS failover handling.
61
+ ([@midnight-wonderer])
62
+
63
+
64
+ ## 5.0.1 (2021-06-26)
65
+
66
+ * [#670](https://github.com/httprb/http/pull/670)
67
+ Revert `Response#parse` behavior introduced in [#540].
68
+ ([@DannyBen])
69
+
70
+ * [#669](https://github.com/httprb/http/pull/669)
71
+ Prevent bodies from being resubmitted when following unsafe redirects.
72
+ ([@odinhb])
73
+
74
+ * [#664](https://github.com/httprb/http/pull/664)
75
+ Bump llhttp-ffi to 0.3.0.
76
+ ([@bryanp])
77
+
78
+
79
+ ## 5.0.0 (2021-05-12)
80
+
81
+ * [#656](https://github.com/httprb/http/pull/656)
82
+ Handle connection timeouts in `Features`
83
+ ([@semenyukdmitry])
84
+
85
+ * [#651](https://github.com/httprb/http/pull/651)
86
+ Replace `http-parser` with `llhttp`
87
+ ([@bryanp])
88
+
89
+ * [#647](https://github.com/httprb/http/pull/647)
90
+ Add support for `MKCALENDAR` HTTP verb
91
+ ([@meanphil])
92
+
93
+ * [#632](https://github.com/httprb/http/pull/632)
94
+ Respect the SSL context's `verify_hostname` value
95
+ ([@colemannugent])
96
+
97
+ * [#625](https://github.com/httprb/http/pull/625)
98
+ Fix inflator with empty responses
99
+ ([@LukaszMaslej])
100
+
101
+ * [#599](https://github.com/httprb/http/pull/599)
102
+ Allow passing `HTTP::FormData::{Multipart,UrlEncoded}` object directly.
103
+ ([@ixti])
104
+
105
+ * [#593](https://github.com/httprb/http/pull/593)
106
+ [#592](https://github.com/httprb/http/issues/592)
107
+ Support informational (1XX) responses.
108
+ ([@ixti])
109
+
110
+ * [#590](https://github.com/httprb/http/pull/590)
111
+ [#589](https://github.com/httprb/http/issues/589)
112
+ Fix response headers paring.
113
+ ([@Bonias])
114
+
115
+ * [#587](https://github.com/httprb/http/pull/587)
116
+ [#585](https://github.com/httprb/http/issues/585)
117
+ Fix redirections when server responds with multiple Location headers.
118
+ ([@ixti])
119
+
120
+ * [#581](https://github.com/httprb/http/pull/581)
121
+ [#582](https://github.com/httprb/http/issues/582)
122
+ Add Ruby 2.7.x support.
123
+ ([@janko])
124
+
125
+ * [#577](https://github.com/httprb/http/pull/577)
126
+ Fix `Chainable#timeout` with frozen Hash.
127
+ ([@antonvolkoff])
128
+
129
+ * [#576](https://github.com/httprb/http/pull/576)
130
+ [#524](https://github.com/httprb/http/issues/524)
131
+ **BREAKING CHANGE**
132
+ Preserve header names casing.
133
+ ([@joshuaflanagan])
134
+
135
+ * [#540](https://github.com/httprb/http/pull/540)
136
+ [#538](https://github.com/httprb/http/issues/538)
137
+ **BREAKING CHANGE**
138
+ Require explicit MIME type for Response#parse
139
+ ([@ixti])
140
+
141
+ * [#532](https://github.com/httprb/http/pull/532)
142
+ Fix pipes support in request bodies.
143
+ ([@ixti])
144
+
145
+ * [#530](https://github.com/httprb/http/pull/530)
146
+ Improve header fields name/value validation.
147
+ ([@Bonias])
148
+
149
+ * [#506](https://github.com/httprb/http/pull/506)
150
+ [#521](https://github.com/httprb/http/issues/521)
151
+ Skip auto-deflate when there is no body.
152
+ ([@Bonias])
153
+
154
+ * [#489](https://github.com/httprb/http/pull/489)
155
+ Fix HTTP parser.
156
+ ([@ixti], [@fxposter])
157
+
158
+ * [#546](https://github.com/httprb/http/pull/546)
159
+ **BREAKING CHANGE**
160
+ Provide initiating `HTTP::Request` object on `HTTP::Response`.
161
+ ([@joshuaflanagan])
162
+
163
+ * [#571](https://github.com/httprb/http/pull/571)
164
+ Drop Ruby 2.3.x support.
5
165
  ([@ixti])
6
166
 
167
+ * [3ed0c31](https://github.com/httprb/http/commit/3ed0c318eab6a8c390654cda17bf6df9e963c7d6)
168
+ Drop Ruby 2.4.x support.
169
+
170
+
7
171
  ## 4.4.0 (2020-03-25)
8
172
 
9
173
  * Backport [#587](https://github.com/httprb/http/pull/587)
@@ -14,6 +178,7 @@
14
178
  Allow passing HTTP::FormData::{Multipart,UrlEncoded} object directly.
15
179
  ([@ixti])
16
180
 
181
+
17
182
  ## 4.3.0 (2020-01-09)
18
183
 
19
184
  * Backport [#581](https://github.com/httprb/http/pull/581)
@@ -803,3 +968,23 @@ end
803
968
  [@RickCSong]: https://github.com/RickCSong
804
969
  [@fxposter]: https://github.com/fxposter
805
970
  [@mamoonraja]: https://github.com/mamoonraja
971
+ [@joshuaflanagan]: https://github.com/joshuaflanagan
972
+ [@antonvolkoff]: https://github.com/antonvolkoff
973
+ [@LukaszMaslej]: https://github.com/LukaszMaslej
974
+ [@colemannugent]: https://github.com/colemannugent
975
+ [@semenyukdmitry]: https://github.com/semenyukdmitry
976
+ [@bryanp]: https://github.com/bryanp
977
+ [@meanphil]: https://github.com/meanphil
978
+ [@odinhb]: https://github.com/odinhb
979
+ [@DannyBen]: https://github.com/DannyBen
980
+ [@jyn514]: https://github.com/jyn514
981
+ [@bvicenzo]: https://github.com/bvicenzo
982
+ [@nomis]: https://github.com/nomis
983
+ [@midnight-wonderer]: https://github.com/midnight-wonderer
984
+ [@schwern]: https://github.com/schwern
985
+ [@matheussilvasantos]: https://github.com/matheussilvasantos
986
+ [@PhilCoggins]: https://github.com/PhilCoggins
987
+ [@flosacca]: https://github.com/flosacca
988
+ [@YuLeven]: https://github.com/YuLeven
989
+ [@drwl]: https://github.com/drwl
990
+ [@tkellogg]: https://github.com/tkellogg