+ wip tos
This commit is contained in:
parent
98ba917cfb
commit
7ccd0ac600
2 changed files with 25 additions and 15 deletions
|
|
@ -16,10 +16,10 @@ type t =
|
|||
| Terms
|
||||
| Privacy
|
||||
|
||||
(* TODO etag = filename *)
|
||||
let etag k =
|
||||
Result.get_ok
|
||||
@@ Headers_lib.Etag.of_crockford32
|
||||
@@ match k with Terms -> "0" | Privacy -> "0"
|
||||
let etag = match k with Terms -> "0" | Privacy -> "0" in
|
||||
etag |> Headers_lib.Etag.of_crockford32 |> Result.get_ok
|
||||
|
||||
let legal_version = function
|
||||
| Terms -> terms_legal_version
|
||||
|
|
@ -107,30 +107,40 @@ module Mimetype = struct
|
|||
(("image", "gif"), ".gif");
|
||||
]
|
||||
|
||||
let all_supported, _ = List.split assoc
|
||||
let all_supported =
|
||||
let all_supported, all_supported_ext = List.split assoc in
|
||||
match
|
||||
Array.find_opt
|
||||
(fun ext -> not @@ List.exists (( = ) ext) all_supported_ext)
|
||||
supported_ext_arr
|
||||
with
|
||||
| Some ext -> Fmt.failwith "extension `%s` unsupported" ext
|
||||
| None -> all_supported
|
||||
|
||||
let of_cohttp_media = function
|
||||
let default = default_mimetype
|
||||
|
||||
let of_cohttp = function
|
||||
| Cohttp.Accept.MediaType (m, m_sub) ->
|
||||
List.find_opt (( = ) (m, m_sub)) all_supported
|
||||
| AnyMediaSubtype m ->
|
||||
List.find_opt (fun (m', _) -> String.equal m m') all_supported
|
||||
| AnyMedia -> Some default_mimetype
|
||||
| AnyMedia -> Some default
|
||||
|
||||
let to_extension t =
|
||||
let to_extension_exn t =
|
||||
match List.assoc_opt t assoc with
|
||||
| None ->
|
||||
Fmt.failwith "Mimetype.to_extension failure: `%s/%s` unknown" (fst t)
|
||||
(snd t)
|
||||
| Some ext -> ext
|
||||
|
||||
let is_supported mime = List.mem mime all_supported
|
||||
end
|
||||
|
||||
module Language = struct
|
||||
type t = string
|
||||
|
||||
let of_cohttp_language = function
|
||||
| Cohttp.Accept.AnyLanguage -> Some default_lang
|
||||
let default = default_lang
|
||||
|
||||
let of_cohttp = function
|
||||
| Cohttp.Accept.AnyLanguage -> Some default
|
||||
| Language language_range -> (
|
||||
(* ignore language subtags (e.g. "en-US" -> "en") *)
|
||||
match language_range with
|
||||
|
|
@ -142,7 +152,7 @@ end
|
|||
(* ! lang and mime must be supported *)
|
||||
let get_content ~lang ~mime t =
|
||||
let etag = Headers_lib.Etag.to_raw_string (etag t) in
|
||||
let ext = Mimetype.to_extension mime in
|
||||
let ext = Mimetype.to_extension_exn mime in
|
||||
let path = Fpath.to_string Fpath.((v (base_dir t) / lang / etag) + ext) in
|
||||
match Assets_crunch.read path with
|
||||
| None -> Fmt.failwith "static file not found: `%s`" path
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue