http 5.0.0.pre3 → 5.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) 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 +7 -124
  8. data/.rubocop_todo.yml +192 -0
  9. data/CHANGES.md +123 -1
  10. data/Gemfile +18 -11
  11. data/LICENSE.txt +1 -1
  12. data/README.md +47 -87
  13. data/Rakefile +2 -10
  14. data/http.gemspec +3 -3
  15. data/lib/http/chainable.rb +15 -14
  16. data/lib/http/client.rb +26 -15
  17. data/lib/http/connection.rb +7 -3
  18. data/lib/http/content_type.rb +10 -5
  19. data/lib/http/feature.rb +1 -1
  20. data/lib/http/features/auto_inflate.rb +0 -2
  21. data/lib/http/features/instrumentation.rb +1 -1
  22. data/lib/http/features/logging.rb +19 -21
  23. data/lib/http/headers.rb +3 -3
  24. data/lib/http/mime_type/adapter.rb +2 -0
  25. data/lib/http/options.rb +2 -2
  26. data/lib/http/redirector.rb +1 -1
  27. data/lib/http/request/writer.rb +6 -2
  28. data/lib/http/request.rb +22 -5
  29. data/lib/http/response/body.rb +5 -4
  30. data/lib/http/response/inflater.rb +1 -1
  31. data/lib/http/response/parser.rb +72 -64
  32. data/lib/http/response/status.rb +2 -2
  33. data/lib/http/response.rb +24 -6
  34. data/lib/http/timeout/global.rb +18 -30
  35. data/lib/http/timeout/null.rb +2 -1
  36. data/lib/http/timeout/per_operation.rb +31 -55
  37. data/lib/http/version.rb +1 -1
  38. data/spec/lib/http/client_spec.rb +109 -41
  39. data/spec/lib/http/features/auto_inflate_spec.rb +0 -1
  40. data/spec/lib/http/features/instrumentation_spec.rb +21 -16
  41. data/spec/lib/http/features/logging_spec.rb +2 -5
  42. data/spec/lib/http/headers_spec.rb +3 -3
  43. data/spec/lib/http/redirector_spec.rb +44 -0
  44. data/spec/lib/http/request/body_spec.rb +3 -3
  45. data/spec/lib/http/request/writer_spec.rb +12 -1
  46. data/spec/lib/http/response/body_spec.rb +5 -5
  47. data/spec/lib/http/response/parser_spec.rb +5 -5
  48. data/spec/lib/http/response_spec.rb +62 -10
  49. data/spec/lib/http_spec.rb +20 -2
  50. data/spec/spec_helper.rb +21 -21
  51. data/spec/support/black_hole.rb +1 -1
  52. data/spec/support/dummy_server/servlet.rb +14 -2
  53. data/spec/support/dummy_server.rb +1 -1
  54. data/spec/support/fuubar.rb +21 -0
  55. data/spec/support/simplecov.rb +19 -0
  56. metadata +23 -18
  57. data/.coveralls.yml +0 -1
  58. data/.travis.yml +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d09142fafcb9b5715621ad330639c7c03ea5b280d6a7d1024029bb1125d1db1e
4
- data.tar.gz: 48d33d13b9009d302de0b7cefa097e2891032ac8b961a803441776908b707531
3
+ metadata.gz: 07b34c228e87205e026b3e446bb870391df41188fa7d97438c863825819a6694
4
+ data.tar.gz: 4892ec252ec9f4fff897bd3860af14b6379fc97363f916b225d337dd000af343
5
5
  SHA512:
6
- metadata.gz: 9e446e54d2066969541b1ef5593aed989d1ff0b0d7228bf56ab61483dab1e52374bca34792c616930b689d1c684ab09694e49b07dce0b6e2bdc2d82de3504ebc
7
- data.tar.gz: bc2877d15a9e06c3b105aa542da78f0497eee9bc81f26fd07867cef3f4be3d1b005060ff4e4d95133442cbd6b5edefb6adc39a4c04cb54fdcb8b91852de3036b
6
+ metadata.gz: 4b3f3261bf7215369f88c06a2147eeb0b1811aeb76aba86b59c2def09cdbc8e5b5b53197f4124af9de032a11e8786060957cb684dc03c52c35425e5f967b1ac8
7
+ data.tar.gz: 7dc0afcf98bbe98da6c769e9d5eb30dd84a82e9095e3191840f3063099317fe37559c8e09282ff56c0cf39e77f70179e6605651c196198b1c8f4a49cf6b8a851
@@ -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.5, ruby-2.6, ruby-2.7, ruby-3.0 ]
20
+ os: [ ubuntu-latest ]
21
+
22
+ steps:
23
+ - uses: actions/checkout@v2
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@v2
56
+
57
+ - uses: ruby/setup-ruby@v1
58
+ with:
59
+ ruby-version: 2.5
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,127 +1,10 @@
1
- require: rubocop-performance
1
+ inherit_from:
2
+ - .rubocop_todo.yml
3
+ - .rubocop/layout.yml
4
+ - .rubocop/style.yml
2
5
 
3
6
  AllCops:
4
- TargetRubyVersion: 2.3
7
+ DefaultFormatter: fuubar
5
8
  DisplayCopNames: true
6
-
7
- ## Layout ######################################################################
8
-
9
- Layout/AlignHash:
10
- EnforcedColonStyle: table
11
- EnforcedHashRocketStyle: table
12
-
13
- Layout/DotPosition:
14
- EnforcedStyle: trailing
15
-
16
- Layout/SpaceAroundOperators:
17
- AllowForAlignment: true
18
-
19
- Layout/SpaceInsideHashLiteralBraces:
20
- EnforcedStyle: no_space
21
-
22
- ## Metrics #####################################################################
23
-
24
- Metrics/AbcSize:
25
- Enabled: false
26
-
27
- Metrics/BlockLength:
28
- Exclude:
29
- - "spec/**/*"
30
- - "**/*.gemspec"
31
-
32
- Metrics/BlockNesting:
33
- Max: 2
34
-
35
- Metrics/ClassLength:
36
- CountComments: false
37
- Max: 125
38
-
39
- # TODO: Lower to 6
40
- Metrics/CyclomaticComplexity:
41
- Max: 8
42
-
43
- Metrics/PerceivedComplexity:
44
- Max: 8
45
-
46
- # TODO: Lower to 80
47
- Metrics/LineLength:
48
- AllowURI: true
49
- Max: 143
50
-
51
- # TODO: Lower to 15
52
- Metrics/MethodLength:
53
- CountComments: false
54
- Max: 25
55
-
56
- Metrics/ModuleLength:
57
- CountComments: false
58
- Max: 120
59
-
60
- Metrics/ParameterLists:
61
- Max: 5
62
- CountKeywordArgs: true
63
-
64
- ## Performance #################################################################
65
-
66
- # XXX: requires ruby 2.4+
67
- Performance/RegexpMatch:
68
- Enabled: false
69
-
70
- Performance/UnfreezeString:
71
- Enabled: false
72
-
73
- ## Style #######################################################################
74
-
75
- Style/CollectionMethods:
76
- PreferredMethods:
77
- collect: 'map'
78
- reduce: 'inject'
79
- find: 'detect'
80
- find_all: 'select'
81
-
82
- Style/Documentation:
83
- Enabled: false
84
-
85
- Style/DoubleNegation:
86
- Enabled: false
87
-
88
- Style/EachWithObject:
89
- Enabled: false
90
-
91
- Style/Encoding:
92
- Enabled: false
93
-
94
- Style/EmptyCaseCondition:
95
- Enabled: false
96
-
97
- # XXX: Lots of times it suggests making code terrible to read.
98
- Style/GuardClause:
99
- Enabled: false
100
-
101
- Style/HashSyntax:
102
- EnforcedStyle: hash_rockets
103
-
104
- Style/Lambda:
105
- Enabled: false
106
-
107
- Style/OptionHash:
108
- Enabled: true
109
-
110
- # XXX: requires ruby 2.3+
111
- Style/SafeNavigation:
112
- Enabled: false
113
-
114
- Style/StringLiterals:
115
- EnforcedStyle: double_quotes
116
-
117
- Style/TrivialAccessors:
118
- Enabled: false
119
-
120
- Style/YodaCondition:
121
- Enabled: false
122
-
123
- Style/FormatStringToken:
124
- EnforcedStyle: unannotated
125
-
126
- Style/RescueStandardError:
127
- EnforcedStyle: implicit
9
+ NewCops: enable
10
+ TargetRubyVersion: 2.5
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,192 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 42`
3
+ # on 2021-04-10 09:49:03 UTC using RuboCop version 1.12.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: 53
10
+ # Cop supports --auto-correct.
11
+ # Configuration parameters: EnforcedStyle.
12
+ # SupportedStyles: leading, trailing
13
+ Layout/DotPosition:
14
+ Exclude:
15
+ - 'lib/http/options.rb'
16
+ - 'spec/lib/http/client_spec.rb'
17
+ - 'spec/lib/http/features/auto_deflate_spec.rb'
18
+ - 'spec/lib/http/headers_spec.rb'
19
+ - 'spec/lib/http/options/features_spec.rb'
20
+ - 'spec/lib/http/redirector_spec.rb'
21
+ - 'spec/lib/http/response/body_spec.rb'
22
+ - 'spec/lib/http_spec.rb'
23
+ - 'spec/support/http_handling_shared.rb'
24
+
25
+ # Offense count: 174
26
+ # Cop supports --auto-correct.
27
+ # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces.
28
+ # SupportedStyles: space, no_space, compact
29
+ # SupportedStylesForEmptyBraces: space, no_space
30
+ Layout/SpaceInsideHashLiteralBraces:
31
+ Exclude:
32
+ - 'lib/http/chainable.rb'
33
+ - 'spec/lib/http/client_spec.rb'
34
+ - 'spec/lib/http/features/auto_inflate_spec.rb'
35
+ - 'spec/lib/http/features/instrumentation_spec.rb'
36
+ - 'spec/lib/http/features/logging_spec.rb'
37
+ - 'spec/lib/http/headers_spec.rb'
38
+ - 'spec/lib/http/options/features_spec.rb'
39
+ - 'spec/lib/http/options/merge_spec.rb'
40
+ - 'spec/lib/http/options/new_spec.rb'
41
+ - 'spec/lib/http/redirector_spec.rb'
42
+ - 'spec/lib/http/request_spec.rb'
43
+ - 'spec/lib/http/response_spec.rb'
44
+ - 'spec/lib/http_spec.rb'
45
+ - 'spec/support/dummy_server/servlet.rb'
46
+ - 'spec/support/http_handling_shared.rb'
47
+ - 'spec/support/ssl_helper.rb'
48
+
49
+ # Offense count: 4
50
+ Lint/MissingSuper:
51
+ Exclude:
52
+ - 'lib/http/features/auto_deflate.rb'
53
+ - 'lib/http/features/instrumentation.rb'
54
+ - 'lib/http/features/logging.rb'
55
+ - 'lib/http/features/normalize_uri.rb'
56
+
57
+ # Offense count: 8
58
+ # Configuration parameters: IgnoredMethods, CountRepeatedAttributes, Max.
59
+ Metrics/AbcSize:
60
+ Exclude:
61
+ - 'lib/http/chainable.rb'
62
+ - 'lib/http/client.rb'
63
+ - 'lib/http/connection.rb'
64
+ - 'lib/http/features/auto_deflate.rb'
65
+ - 'lib/http/redirector.rb'
66
+ - 'lib/http/request.rb'
67
+ - 'lib/http/response.rb'
68
+
69
+ # Offense count: 66
70
+ # Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods.
71
+ # IgnoredMethods: refine
72
+ Metrics/BlockLength:
73
+ Exclude:
74
+ - '**/*.gemspec'
75
+ - 'spec/lib/http/client_spec.rb'
76
+ - 'spec/lib/http/connection_spec.rb'
77
+ - 'spec/lib/http/content_type_spec.rb'
78
+ - 'spec/lib/http/features/auto_deflate_spec.rb'
79
+ - 'spec/lib/http/features/auto_inflate_spec.rb'
80
+ - 'spec/lib/http/features/instrumentation_spec.rb'
81
+ - 'spec/lib/http/features/logging_spec.rb'
82
+ - 'spec/lib/http/headers/mixin_spec.rb'
83
+ - 'spec/lib/http/headers_spec.rb'
84
+ - 'spec/lib/http/options/merge_spec.rb'
85
+ - 'spec/lib/http/redirector_spec.rb'
86
+ - 'spec/lib/http/request/body_spec.rb'
87
+ - 'spec/lib/http/request/writer_spec.rb'
88
+ - 'spec/lib/http/request_spec.rb'
89
+ - 'spec/lib/http/response/body_spec.rb'
90
+ - 'spec/lib/http/response/parser_spec.rb'
91
+ - 'spec/lib/http/response/status_spec.rb'
92
+ - 'spec/lib/http/response_spec.rb'
93
+ - 'spec/lib/http_spec.rb'
94
+ - 'spec/support/http_handling_shared.rb'
95
+
96
+ # Offense count: 4
97
+ # Configuration parameters: CountComments, Max, CountAsOne.
98
+ Metrics/ClassLength:
99
+ Exclude:
100
+ - 'lib/http/client.rb'
101
+ - 'lib/http/connection.rb'
102
+ - 'lib/http/headers.rb'
103
+ - 'lib/http/request.rb'
104
+
105
+ # Offense count: 2
106
+ # Configuration parameters: IgnoredMethods, Max.
107
+ Metrics/CyclomaticComplexity:
108
+ Exclude:
109
+ - 'lib/http/chainable.rb'
110
+ - 'lib/http/client.rb'
111
+
112
+ # Offense count: 19
113
+ # Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods.
114
+ Metrics/MethodLength:
115
+ Exclude:
116
+ - 'lib/http/chainable.rb'
117
+ - 'lib/http/client.rb'
118
+ - 'lib/http/connection.rb'
119
+ - 'lib/http/features/auto_deflate.rb'
120
+ - 'lib/http/features/auto_inflate.rb'
121
+ - 'lib/http/headers.rb'
122
+ - 'lib/http/options.rb'
123
+ - 'lib/http/redirector.rb'
124
+ - 'lib/http/request.rb'
125
+ - 'lib/http/response.rb'
126
+ - 'lib/http/response/body.rb'
127
+ - 'lib/http/timeout/global.rb'
128
+
129
+ # Offense count: 1
130
+ # Configuration parameters: CountComments, Max, CountAsOne.
131
+ Metrics/ModuleLength:
132
+ Exclude:
133
+ - 'lib/http/chainable.rb'
134
+
135
+ # Offense count: 2
136
+ # Cop supports --auto-correct.
137
+ # Configuration parameters: EnforcedStyle.
138
+ # SupportedStyles: separated, grouped
139
+ Style/AccessorGrouping:
140
+ Exclude:
141
+ - 'lib/http/request.rb'
142
+
143
+ # Offense count: 4
144
+ # Cop supports --auto-correct.
145
+ Style/EmptyCaseCondition:
146
+ Exclude:
147
+ - 'lib/http/client.rb'
148
+ - 'lib/http/headers.rb'
149
+ - 'lib/http/options.rb'
150
+ - 'lib/http/response/status.rb'
151
+
152
+ # Offense count: 5
153
+ # Cop supports --auto-correct.
154
+ Style/Encoding:
155
+ Exclude:
156
+ - 'spec/lib/http/client_spec.rb'
157
+ - 'spec/lib/http/request/writer_spec.rb'
158
+ - 'spec/lib/http/request_spec.rb'
159
+ - 'spec/lib/http_spec.rb'
160
+ - 'spec/support/dummy_server/servlet.rb'
161
+
162
+ # Offense count: 17
163
+ # Configuration parameters: SuspiciousParamNames.
164
+ # SuspiciousParamNames: options, opts, args, params, parameters
165
+ Style/OptionHash:
166
+ Exclude:
167
+ - 'lib/http/chainable.rb'
168
+ - 'lib/http/client.rb'
169
+ - 'lib/http/feature.rb'
170
+ - 'lib/http/options.rb'
171
+ - 'lib/http/redirector.rb'
172
+ - 'lib/http/timeout/null.rb'
173
+ - 'spec/support/dummy_server.rb'
174
+
175
+ # Offense count: 4
176
+ # Configuration parameters: AllowedMethods.
177
+ # AllowedMethods: respond_to_missing?
178
+ Style/OptionalBooleanParameter:
179
+ Exclude:
180
+ - 'lib/http/timeout/global.rb'
181
+ - 'lib/http/timeout/null.rb'
182
+ - 'lib/http/timeout/per_operation.rb'
183
+ - 'lib/http/uri.rb'
184
+
185
+ # Offense count: 3
186
+ # Cop supports --auto-correct.
187
+ # Configuration parameters: AutoCorrect, Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
188
+ # URISchemes: http, https
189
+ Layout/LineLength:
190
+ Exclude:
191
+ - 'lib/http/chainable.rb'
192
+ - 'spec/lib/http/options/proxy_spec.rb'
data/CHANGES.md CHANGED
@@ -1,4 +1,84 @@
1
- ## future is unwritten (master)
1
+ ## 5.0.3 (2021-10-06)
2
+
3
+ * [#695](https://github.com/httprb/http/pull/695)
4
+ Revert DNS resolving feature.
5
+ ([@PhilCoggins])
6
+
7
+ * [#694](https://github.com/httprb/http/pull/694)
8
+ Fix cookies extraction.
9
+ ([@flosacca])
10
+
11
+ ## 5.0.2 (2021-09-10)
12
+
13
+ * [#686](https://github.com/httprb/http/pull/686)
14
+ Correctly reset the parser.
15
+ ([@bryanp])
16
+
17
+ * [#684](https://github.com/httprb/http/pull/684)
18
+ Don't set Content-Length for GET, HEAD, DELETE, or CONNECT requests without a BODY.
19
+ ([@jyn514])
20
+
21
+ * [#679](https://github.com/httprb/http/pull/679)
22
+ Use features on redirected requests.
23
+ ([@nomis])
24
+
25
+ * [#678](https://github.com/schwern)
26
+ Restore `HTTP::Response` `:uri` option for backwards compatibility.
27
+ ([@schwern])
28
+
29
+ * [#676](https://github.com/httprb/http/pull/676)
30
+ Update addressable because of CVE-2021-32740.
31
+ ([@matheussilvasantos])
32
+
33
+ * [#653](https://github.com/httprb/http/pull/653)
34
+ Avoid force encodings on frozen strings.
35
+ ([@bvicenzo])
36
+
37
+ * [#638](https://github.com/httprb/http/pull/638)
38
+ DNS failover handling.
39
+ ([@midnight-wonderer])
40
+
41
+
42
+ ## 5.0.1 (2021-06-26)
43
+
44
+ * [#670](https://github.com/httprb/http/pull/670)
45
+ Revert `Response#parse` behavior introduced in [#540].
46
+ ([@DannyBen])
47
+
48
+ * [#669](https://github.com/httprb/http/pull/669)
49
+ Prevent bodies from being resubmitted when following unsafe redirects.
50
+ ([@odinhb])
51
+
52
+ * [#664](https://github.com/httprb/http/pull/664)
53
+ Bump llhttp-ffi to 0.3.0.
54
+ ([@bryanp])
55
+
56
+
57
+ ## 5.0.0 (2021-05-12)
58
+
59
+ * [#656](https://github.com/httprb/http/pull/656)
60
+ Handle connection timeouts in `Features`
61
+ ([@semenyukdmitry])
62
+
63
+ * [#651](https://github.com/httprb/http/pull/651)
64
+ Replace `http-parser` with `llhttp`
65
+ ([@bryanp])
66
+
67
+ * [#647](https://github.com/httprb/http/pull/647)
68
+ Add support for `MKCALENDAR` HTTP verb
69
+ ([@meanphil])
70
+
71
+ * [#632](https://github.com/httprb/http/pull/632)
72
+ Respect the SSL context's `verify_hostname` value
73
+ ([@colemannugent])
74
+
75
+ * [#625](https://github.com/httprb/http/pull/625)
76
+ Fix inflator with empty responses
77
+ ([@LukaszMaslej])
78
+
79
+ * [#599](https://github.com/httprb/http/pull/599)
80
+ Allow passing `HTTP::FormData::{Multipart,UrlEncoded}` object directly.
81
+ ([@ixti])
2
82
 
3
83
  * [#593](https://github.com/httprb/http/pull/593)
4
84
  [#592](https://github.com/httprb/http/issues/592)
@@ -29,6 +109,12 @@
29
109
  Preserve header names casing.
30
110
  ([@joshuaflanagan])
31
111
 
112
+ * [#540](https://github.com/httprb/http/pull/540)
113
+ [#538](https://github.com/httprb/http/issues/538)
114
+ **BREAKING CHANGE**
115
+ Require explicit MIME type for Response#parse
116
+ ([@ixti])
117
+
32
118
  * [#532](https://github.com/httprb/http/pull/532)
33
119
  Fix pipes support in request bodies.
34
120
  ([@ixti])
@@ -55,6 +141,27 @@
55
141
  Drop Ruby 2.3.x support.
56
142
  ([@ixti])
57
143
 
144
+ * [3ed0c31](https://github.com/httprb/http/commit/3ed0c318eab6a8c390654cda17bf6df9e963c7d6)
145
+ Drop Ruby 2.4.x support.
146
+
147
+
148
+ ## 4.4.0 (2020-03-25)
149
+
150
+ * Backport [#587](https://github.com/httprb/http/pull/587)
151
+ Fix redirections when server responds with multiple Location headers.
152
+ ([@ixti])
153
+
154
+ * Backport [#599](https://github.com/httprb/http/pull/599)
155
+ Allow passing HTTP::FormData::{Multipart,UrlEncoded} object directly.
156
+ ([@ixti])
157
+
158
+
159
+ ## 4.3.0 (2020-01-09)
160
+
161
+ * Backport [#581](https://github.com/httprb/http/pull/581)
162
+ Add Ruby-2.7 compatibility.
163
+ ([@ixti], [@janko])
164
+
58
165
 
59
166
  ## 4.2.0 (2019-10-22)
60
167
 
@@ -840,3 +947,18 @@ end
840
947
  [@mamoonraja]: https://github.com/mamoonraja
841
948
  [@joshuaflanagan]: https://github.com/joshuaflanagan
842
949
  [@antonvolkoff]: https://github.com/antonvolkoff
950
+ [@LukaszMaslej]: https://github.com/LukaszMaslej
951
+ [@colemannugent]: https://github.com/colemannugent
952
+ [@semenyukdmitry]: https://github.com/semenyukdmitry
953
+ [@bryanp]: https://github.com/bryanp
954
+ [@meanphil]: https://github.com/meanphil
955
+ [@odinhb]: https://github.com/odinhb
956
+ [@DannyBen]: https://github.com/DannyBen
957
+ [@jyn514]: https://github.com/jyn514
958
+ [@bvicenzo]: https://github.com/bvicenzo
959
+ [@nomis]: https://github.com/nomis
960
+ [@midnight-wonderer]: https://github.com/midnight-wonderer
961
+ [@schwern]: https://github.com/schwern
962
+ [@matheussilvasantos]: https://github.com/matheussilvasantos
963
+ [@PhilCoggins]: https://github.com/PhilCoggins
964
+ [@flosacca]: https://github.com/flosacca
data/Gemfile CHANGED
@@ -5,32 +5,39 @@ ruby RUBY_VERSION
5
5
 
6
6
  gem "rake"
7
7
 
8
+ # Ruby 3.0 does not ship it anymore.
9
+ # TODO: We should probably refactor specs to avoid need for it.
10
+ gem "webrick"
11
+
8
12
  group :development do
9
13
  gem "guard-rspec", :require => false
10
14
  gem "nokogiri", :require => false
11
15
  gem "pry", :require => false
12
16
 
13
- platform :ruby_20 do
14
- gem "pry-debugger", :require => false
15
- gem "pry-stack_explorer", :require => false
17
+ # RSpec formatter
18
+ gem "fuubar", :require => false
19
+
20
+ platform :mri do
21
+ gem "pry-byebug"
16
22
  end
17
23
  end
18
24
 
19
25
  group :test do
20
- gem "activemodel", :require => false # Used by certificate_authority
21
- gem "certificate_authority", :require => false
26
+ gem "certificate_authority", "~> 1.0", :require => false
22
27
 
23
28
  gem "backports"
24
29
 
25
- gem "coveralls", :require => false
26
- gem "simplecov", ">= 0.9"
30
+ gem "rubocop", "~> 1.21"
31
+ gem "rubocop-performance"
32
+ gem "rubocop-rake"
33
+ gem "rubocop-rspec"
34
+
35
+ gem "simplecov", :require => false
36
+ gem "simplecov-lcov", :require => false
27
37
 
28
- gem "rspec", "~> 3.0"
38
+ gem "rspec", "~> 3.10"
29
39
  gem "rspec-its"
30
40
 
31
- gem "rubocop", "= 0.68.1"
32
- gem "rubocop-performance"
33
-
34
41
  gem "yardstick"
35
42
  end
36
43
 
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-2016 Tony Arcieri, Erik Michaels-Ober, Alexey V. Zapparov, Zachary Anker
1
+ Copyright (c) 2011-2021 Tony Arcieri, Erik Michaels-Ober, Alexey V. Zapparov, Zachary Anker
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the