Name

http_accept — Parse HTTP Accept header lines

Synopsis

::rivet::http_accept ?-zeroweight? ?-default? ?-list? http_accept_line

Description

Command for parsing HTTP Accept header lines that tell the server about preferences and/or capabilities of the browser (e.g. content language,media type, etc.). The following script

::rivet::http_accept returns a dictionary value in which every content preference is matched to its precedence value

load_headers
set language_precedence [::rivet::http_accept $headers(Accept-Language)]
foreach lan [dict keys $language_precedence] {
                puts "$lan -> [dict get $language_precedence $lan]"
}

when run from a browser where 5 languages were chosen would output

en-us -> 1
en -> 0.8
it -> 0.6
de-de -> 0.4
fr-fr -> 0.2

The -list switch would suppress the precedence values and the accepted fields are returned listed with decreasing precedence order.

 puts [::rivet::http_accept -list $headers(Accept-Language)]
text/html application/xhtml+xml application/xml */*