HTTP::Headers
Inherits Enumerable / Struct / Value / Object
A Hash-like object that holds HTTP headers.
Two headers are considered the same if their downcase representation is the same
(in which _ is the downcase version of -).
NOTE: To use Headers, you must explicitly import it with require "http/headers"
Constructors
Instance methods
Equality operator.
Returns true if other is equal to self.
Keys are matched case-insensitive. String values are treated equal to an array values with the same string as single element.
HTTP::Headers{"Foo" => "bar"} == HTTP::Headers{"Foo" => "bar"} # => true
HTTP::Headers{"Foo" => "bar"} == HTTP::Headers{"foo" => "bar"} # => true
HTTP::Headers{"Foo" => "bar"} == HTTP::Headers{"Foo" => ["bar"]} # => true
HTTP::Headers{"Foo" => "bar"} == HTTP::Headers{"Foo" => "baz"} # => false
Adds a header with key and value to the header set. If a header with key already exists in the set, value is appended to the existing header.
require "http/headers"
headers = HTTP::Headers.new
headers.add("Connection", "keep-alive")
headers["Connection"] # => "keep-alive"
headers.add("Connection", "Upgrade")
headers["Connection"] # => "keep-alive,Upgrade"
Returns a shallow copy of this object.
Because Value is a value type, this method returns self,
which already involves a shallow copy of this object because
value types are passed by value.
Returns true if self does not contain any element.
([] of Int32).empty? # => true
([1]).empty? # => false
[nil, false].empty? # => false
#present?returns the inverse.
Returns if among the headers for key there is some that contains word as a value. The word is expected to match between word boundaries (i.e. non-alphanumeric chars).
require "http/headers"
headers = HTTP::Headers{"Connection" => "keep-alive, Upgrade"}
headers.includes_word?("Connection", "Upgrade") # => true
Appends this struct's name and instance variables names and values to the given IO.
struct Point
def initialize(@x : Int32, @y : Int32)
end
end
p1 = Point.new 1, 2
p1.to_s # "Point(@x=1, @y=2)"
p1.inspect # "Point(@x=1, @y=2)"
Serializes headers according to the HTTP protocol.
Prints a list of HTTP header fields in the format described in RFC 7230 §3.2,
with each field terminated by a CRLF sequence ("\r\n").
The serialization does not include a double CRLF sequence at the end.
headers = HTTP::Headers{"foo" => "bar", "baz" => %w[qux qox]}
headers.serialize # => "foo: bar\r\nbaz: qux\r\nbaz: qox\r\n"
Serializes headers according to the HTTP protocol.
Prints a list of HTTP header fields in the format described in RFC 7230 §3.2,
with each field terminated by a CRLF sequence ("\r\n").
The serialization does not include a double CRLF sequence at the end.
headers = HTTP::Headers{"foo" => "bar", "baz" => %w[qux qox]}
headers.serialize # => "foo: bar\r\nbaz: qux\r\nbaz: qox\r\n"