Class: Protocol::HTTP::Header::Priority
- Defined in:
- lib/protocol/http/header/priority.rb
Overview
Represents the priority header, used to indicate the relative importance of an HTTP request.
The priority header allows clients to express their preference for how resources should be prioritized by the server. It supports directives like u= to specify the urgency level of a request, and i to indicate whether a response can be delivered incrementally. The urgency levels range from 0 (highest priority) to 7 (lowest priority), while the i directive is a boolean flag.
Constant Summary collapse
- DEFAULT_URGENCY =
The default urgency level if not specified.
3
Constants inherited from Split
Class Method Summary collapse
-
.coerce(value) ⇒ Object
Coerces a value into a parsed header object.
-
.parse(value) ⇒ Object
Parses a raw header value.
Instance Method Summary collapse
-
#<<(value) ⇒ Object
Add a value to the priority header.
-
#incremental? ⇒ Boolean
Checks if the response should be delivered incrementally.
-
#urgency(default = DEFAULT_URGENCY) ⇒ Object
The urgency level, if specified using
u=.
Methods inherited from Split
Constructor Details
This class inherits a constructor from Protocol::HTTP::Header::Split
Class Method Details
.coerce(value) ⇒ Object
Coerces a value into a parsed header object.
27 28 29 30 31 32 33 34 |
# File 'lib/protocol/http/header/priority.rb', line 27 def self.coerce(value) case value when Array self.new(value.map(&:downcase)) else self.parse(value.to_s) end end |
.parse(value) ⇒ Object
Parses a raw header value.
19 20 21 |
# File 'lib/protocol/http/header/priority.rb', line 19 def self.parse(value) self.new(value.downcase.split(COMMA)) end |
Instance Method Details
#<<(value) ⇒ Object
Add a value to the priority header.
39 40 41 |
# File 'lib/protocol/http/header/priority.rb', line 39 def << value super(value.downcase) end |
#incremental? ⇒ Boolean
Checks if the response should be delivered incrementally.
The i directive, when present, indicates that the response can be delivered incrementally as data becomes available.
65 66 67 |
# File 'lib/protocol/http/header/priority.rb', line 65 def incremental? self.include?("i") end |
#urgency(default = DEFAULT_URGENCY) ⇒ Object
The urgency level, if specified using u=. 0 is the highest priority, and 7 is the lowest.
Note that when duplicate Dictionary keys are encountered, all but the last instance are ignored.
51 52 53 54 55 56 57 58 |
# File 'lib/protocol/http/header/priority.rb', line 51 def urgency(default = DEFAULT_URGENCY) if value = self.reverse_find{|value| value.start_with?("u=")} _, level = value.split("=", 2) return Integer(level) end return default end |