~ Header_util
This commit is contained in:
parent
1cb610988f
commit
50b77108f1
1 changed files with 6 additions and 9 deletions
15
src/mte.ml
15
src/mte.ml
|
|
@ -15,14 +15,14 @@
|
|||
along with this program. If not, see <https://www.gnu.org/licenses/>. *)
|
||||
|
||||
module Header_util = struct
|
||||
let parse_accept_header =
|
||||
fun headers ->
|
||||
let select_extension headers =
|
||||
let accept = Vif.Headers.get headers "accept" in
|
||||
Cohttp.Accept.media_ranges accept
|
||||
|> Cohttp.Accept.qsort
|
||||
|> List.filter_map (fun (_q, (m, _p)) -> Util.media_to_extension m)
|
||||
|> List.find_opt Assets.is_supported_ext
|
||||
|
||||
let parse_accept_language_header headers =
|
||||
let select_language headers =
|
||||
let accept_language = Vif.Headers.get headers "accept-language" in
|
||||
Cohttp.Accept.languages accept_language
|
||||
|> Cohttp.Accept.qsort
|
||||
|
|
@ -34,6 +34,7 @@ module Header_util = struct
|
|||
match language_range with
|
||||
| [] -> assert false
|
||||
| primary_tag :: _ -> primary_tag))
|
||||
|> List.find_opt Assets.is_supported_lang
|
||||
|
||||
let select_encoding headers =
|
||||
Vif.Headers.get headers "accept-encoding"
|
||||
|
|
@ -74,15 +75,11 @@ module Static = struct
|
|||
let select_file headers kind =
|
||||
let open Syntax in
|
||||
let* ext =
|
||||
headers
|
||||
|> Header_util.parse_accept_header
|
||||
|> List.find_opt Assets.is_supported_ext
|
||||
Header_util.select_extension headers
|
||||
|> Option.to_result ~none:"no acceptable mimetype"
|
||||
in
|
||||
let* lang =
|
||||
headers
|
||||
|> Header_util.parse_accept_language_header
|
||||
|> List.find_opt Assets.is_supported_lang
|
||||
Header_util.select_language headers
|
||||
|> Option.to_result ~none:"no acceptable language"
|
||||
in
|
||||
let content = Assets.get_content ~lang ~ext kind in
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue