class Connection
Represents the connection HTTP header, which controls options for the current connection.
The connection header is used to specify control options such as whether the connection should be kept alive, closed, or upgraded to a different protocol.
Definitions
KEEP_ALIVE = "keep-alive"
The keep-alive directive indicates that the connection should remain open for future requests or responses, avoiding the overhead of opening a new connection.
CLOSE = "close"
The close directive indicates that the connection should be closed after the current request and response are complete.
UPGRADE = "upgrade"
The upgrade directive indicates that the connection should be upgraded to a different protocol, as specified in the Upgrade header.
def self.parse(value)
Parses a raw header value.
Signature
-
parameter
valueString a raw header value containing comma-separated directives.
-
returns
Connection a new instance with normalized (lowercase) directives.
Implementation
def self.parse(value)
self.new(value.downcase.split(COMMA))
end
def self.coerce(value)
Coerces a value into a parsed header object.
Signature
-
parameter
valueString | Array the value to coerce.
-
returns
Connection a parsed header object with normalized values.
Implementation
def self.coerce(value)
case value
when Array
self.new(value.map(&:downcase))
else
self.parse(value.to_s)
end
end
def <<(value)
Adds a directive to the connection header. The value will be normalized to lowercase before being added.
Signature
-
parameter
valueString a raw header value containing directives to add.
Implementation
def << value
super(value.downcase)
end
def keep_alive?
Signature
-
returns
Boolean whether the
keep-alivedirective is present and the connection is not marked for closure with theclosedirective.
Implementation
def keep_alive?
self.include?(KEEP_ALIVE) && !close?
end
def close?
Signature
-
returns
Boolean whether the
closedirective is present, indicating that the connection should be closed after the current request and response.
Implementation
def close?
self.include?(CLOSE)
end
def upgrade?
Signature
-
returns
Boolean whether the
upgradedirective is present, indicating that the connection should be upgraded to a different protocol.
Implementation
def upgrade?
self.include?(UPGRADE)
end
def self.trailer?
Whether this header is acceptable in HTTP trailers. Connection headers control the current connection and must not appear in trailers.
Signature
-
returns
Boolean false, as connection headers are hop-by-hop and forbidden in trailers.
Implementation
def self.trailer?
false
end