abstract class Athena::Negotiation::AbstractNegotiator(HeaderType)
inherits Reference
#
Base negotiator type. Implements logic common to all negotiators.
Direct known subclasses
Athena::Negotiation::CharsetNegotiator
Athena::Negotiation::EncodingNegotiator
Athena::Negotiation::LanguageNegotiator
Athena::Negotiation::Negotiator
Methods#
#best(header : String, priorities : Indexable(String), strict : Bool = false) : HeaderType | Nil
#
Returns the best HeaderType
based on the provided header value and priorities.
If strict is true
, an ANG::Exceptions::Exception
will be raised if the header contains an invalid value, otherwise it is ignored.
See Athena::Negotiation
for examples.
#ordered_elements(header : String) : Array(HeaderType)
#
Returns an array of HeaderType
that the provided header allows, ordered so that the #best
match is first.
header = "text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5"
ordered_elements = ANG.negotiator.ordered_elements header
ordered_elements[0].media_range # => "text/html"
ordered_elements[1].media_range # => "text/html"
ordered_elements[2].media_range # => "*/*"
ordered_elements[3].media_range # => "text/html"
ordered_elements[4].media_range # => "text/*"