Skip to content

Commit 65c937b

Browse files
committed
Remove Headers::Mixin and [] / []= delegators from Request and Response
Closes #537.
1 parent 83f4bf5 commit 65c937b

13 files changed

Lines changed: 53 additions & 139 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
5858
### Removed
5959

6060
- **BREAKING** Drop Ruby 2.x support
61+
- **BREAKING** Remove `Headers::Mixin` and the `[]`/`[]=` delegators on
62+
`Request` and `Response`. Use `request.headers["..."]` and
63+
`response.headers["..."]` instead (#537)
6164

6265
[unreleased]: https://github.com/httprb/http/compare/v5.3.0...main

lib/http/headers.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
require "forwardable"
44

55
require "http/errors"
6-
require "http/headers/mixin"
76
require "http/headers/normalizer"
87
require "http/headers/known"
98

lib/http/headers/mixin.rb

Lines changed: 0 additions & 54 deletions
This file was deleted.

lib/http/redirector.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ def cookie_jar
134134
# @api private
135135
# @return [void]
136136
def collect_cookies_from_request
137-
request_cookie_header = @request["Cookie"]
137+
request_cookie_header = @request.headers["Cookie"]
138138
cookies = Cookie.cookie_value_to_hash(request_cookie_header.to_s)
139139

140140
cookies.each do |key, value|

lib/http/request.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ class Request
1818
extend Forwardable
1919

2020
include HTTP::Base64
21-
include HTTP::Headers::Mixin
2221
include Proxy
2322

2423
# The method given was not understood
@@ -125,6 +124,15 @@ class UnsupportedSchemeError < RequestError; end
125124
# @api public
126125
attr_reader :body
127126

127+
# The HTTP headers collection
128+
#
129+
# @example
130+
# request.headers
131+
#
132+
# @return [HTTP::Headers]
133+
# @api public
134+
attr_reader :headers
135+
128136
# HTTP version string
129137
#
130138
# @example

lib/http/response.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ module HTTP
1616
class Response
1717
extend Forwardable
1818

19-
include HTTP::Headers::Mixin
20-
2119
# The response status
2220
#
2321
# @example
@@ -54,6 +52,15 @@ class Response
5452
# @api public
5553
attr_reader :request
5654

55+
# The HTTP headers collection
56+
#
57+
# @example
58+
# response.headers
59+
#
60+
# @return [HTTP::Headers] the response headers
61+
# @api public
62+
attr_reader :headers
63+
5764
# The proxy headers
5865
#
5966
# @example

sig/http.rbs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -185,14 +185,6 @@ module HTTP
185185
end
186186

187187
class Headers
188-
module Mixin
189-
extend Forwardable
190-
191-
attr_reader headers: Headers
192-
def []: (untyped name) -> (String | Array[String] | nil)
193-
def []=: (untyped name, untyped value) -> void
194-
end
195-
196188
class Normalizer
197189
CANONICAL_NAME_RE: Regexp
198190
COMPLIANT_NAME_RE: Regexp
@@ -558,7 +550,6 @@ module HTTP
558550

559551
class Request
560552
extend Forwardable
561-
include Headers::Mixin
562553
include Base64
563554
include Request::Proxy
564555

@@ -579,6 +570,7 @@ module HTTP
579570
attr_reader uri: URI
580571
attr_reader proxy: Hash[untyped, untyped]
581572
attr_reader body: Request::Body
573+
attr_reader headers: Headers
582574
attr_reader version: String
583575

584576
def initialize: (untyped opts) -> void
@@ -679,13 +671,13 @@ module HTTP
679671

680672
class Response
681673
extend Forwardable
682-
include Headers::Mixin
683674

684675
@content_type: ContentType
685676
@cookies: untyped
686677

687678
attr_reader status: Response::Status
688679
attr_reader version: String
680+
attr_reader headers: Headers
689681
attr_reader body: Response::Body
690682
attr_reader request: Request
691683
attr_reader proxy_headers: untyped

test/http/client_test.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ def parse_query(str)
255255
req = capture_request(client) { client.get("http://example.com/", json: { foo: :bar }) }
256256

257257
assert_equal '{"foo":"bar"}', req.body.source
258-
assert_equal "application/json; charset=utf-8", req["Content-Type"]
258+
assert_equal "application/json; charset=utf-8", req.headers["Content-Type"]
259259
end
260260
end
261261

@@ -279,7 +279,7 @@ def parse_query(str)
279279
it "keeps Host header as is" do
280280
req = capture_request(client) { client.request(:get, "http://example.com/") }
281281

282-
assert_equal "another.example.com", req["Host"]
282+
assert_equal "another.example.com", req.headers["Host"]
283283
end
284284
end
285285

@@ -290,13 +290,13 @@ def parse_query(str)
290290
it "deletes Content-Length header" do
291291
req = capture_request(client) { client.request(:get, "http://example.com/") }
292292

293-
assert_nil req["Content-Length"]
293+
assert_nil req.headers["Content-Length"]
294294
end
295295

296296
it "sets Content-Encoding header" do
297297
req = capture_request(client) { client.request(:get, "http://example.com/") }
298298

299-
assert_equal "gzip", req["Content-Encoding"]
299+
assert_equal "gzip", req.headers["Content-Encoding"]
300300
end
301301

302302
context "and there is no body" do

test/http/headers/mixin_test.rb

Lines changed: 0 additions & 41 deletions
This file was deleted.

test/http/redirector_test.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,7 @@ def empty_body
660660
]
661661

662662
redirector.perform(req, hops.shift) do |request|
663-
assert_equal "Bearer secret", request["Authorization"]
663+
assert_equal "Bearer secret", request.headers["Authorization"]
664664
hops.shift
665665
end
666666
end
@@ -674,7 +674,7 @@ def empty_body
674674
]
675675

676676
redirector.perform(req, hops.shift) do |request|
677-
assert_nil request["Authorization"]
677+
assert_nil request.headers["Authorization"]
678678
hops.shift
679679
end
680680
end
@@ -688,7 +688,7 @@ def empty_body
688688
]
689689

690690
redirector.perform(req, hops.shift) do |request|
691-
assert_nil request["Authorization"]
691+
assert_nil request.headers["Authorization"]
692692
hops.shift
693693
end
694694
end
@@ -702,7 +702,7 @@ def empty_body
702702
]
703703

704704
redirector.perform(req, hops.shift) do |request|
705-
assert_nil request["Authorization"]
705+
assert_nil request.headers["Authorization"]
706706
hops.shift
707707
end
708708
end

0 commit comments

Comments
 (0)