add unsupported media type response
This commit is contained in:
parent
305818ae4a
commit
86b03e6985
2 changed files with 26 additions and 21 deletions
|
|
@ -83,32 +83,36 @@ let get_content t accept accept_language =
|
||||||
| AnyMediaSubtype m ->
|
| AnyMediaSubtype m ->
|
||||||
Array.find_index (fun (m', _) -> m = m') supported_mimetypes
|
Array.find_index (fun (m', _) -> m = m') supported_mimetypes
|
||||||
in
|
in
|
||||||
let i = List.find_map find_lang_index accept_language in
|
let i_opt = List.find_map find_lang_index accept_language in
|
||||||
let j = List.find_map find_mime_index accept in
|
let j_opt = List.find_map find_mime_index accept in
|
||||||
(* TODO *)
|
match (i_opt, j_opt) with
|
||||||
let i = Option.get i in
|
| None, _ | _, None -> None
|
||||||
let j = Option.get j in
|
| Some i, Some j ->
|
||||||
(supported_languages.(i), supported_mimetypes.(j), content_matrix.(i).(j))
|
Some
|
||||||
|
( supported_languages.(i),
|
||||||
|
supported_mimetypes.(j),
|
||||||
|
content_matrix.(i).(j) )
|
||||||
|
|
||||||
let aux t req _server _env =
|
let aux t req _server _env =
|
||||||
let headers = Vifu.Request.headers req in
|
let headers = Vifu.Request.headers req in
|
||||||
if has_matching_etag (asset_etag t) headers then Respond.not_modified ()
|
if has_matching_etag (asset_etag t) headers then Respond.not_modified ()
|
||||||
else
|
else
|
||||||
let compression = select_encoding headers in
|
match get_content t (get_accept headers) (get_accept_language headers) with
|
||||||
let language, mimetype, content =
|
| None -> Respond.unsupported_media_type ()
|
||||||
get_content t (get_accept headers) (get_accept_language headers)
|
| Some (language, mimetype, content) ->
|
||||||
in
|
let open Vifu.Response in
|
||||||
(* -- *)
|
let open Syntax in
|
||||||
let open Vifu.Response in
|
let compression = select_encoding headers in
|
||||||
let open Syntax in
|
let* () = with_string ?compression req content in
|
||||||
let* () = with_string ?compression req content in
|
let* () = add ~field:"etag" (asset_etag t) in
|
||||||
let* () = add ~field:"etag" (asset_etag t) in
|
let* () = add ~field:"taler-terms-version" Cfg.terms_legal_version in
|
||||||
let* () = add ~field:"taler-terms-version" Cfg.terms_legal_version in
|
let* () = add ~field:"accept" (accept t) in
|
||||||
let* () = add ~field:"accept" (accept t) in
|
let* () = add ~field:"avail-languages" (avail_languages t) in
|
||||||
let* () = add ~field:"avail-languages" (avail_languages t) in
|
let* () =
|
||||||
let* () = add ~field:"content-type" (Fmt.str "%a" pp_mimetype mimetype) in
|
add ~field:"content-type" (Fmt.str "%a" pp_mimetype mimetype)
|
||||||
let* () = add ~field:"content-language" language in
|
in
|
||||||
respond `OK
|
let* () = add ~field:"content-language" language in
|
||||||
|
respond `OK
|
||||||
|
|
||||||
let terms req _server _env =
|
let terms req _server _env =
|
||||||
Logs.info (fun m -> m "GET /terms");
|
Logs.info (fun m -> m "GET /terms");
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ let bad_request () = empty `Bad_request
|
||||||
let no_content () = empty `No_content
|
let no_content () = empty `No_content
|
||||||
let not_modified () = empty `Not_modified
|
let not_modified () = empty `Not_modified
|
||||||
let not_implemented () = empty `Not_implemented
|
let not_implemented () = empty `Not_implemented
|
||||||
|
let unsupported_media_type () = empty `Unsupported_media_type
|
||||||
|
|
||||||
let respond_json req jsont status body =
|
let respond_json req jsont status body =
|
||||||
Logs.info (fun m -> m "%a" pp_status status);
|
Logs.info (fun m -> m "%a" pp_status status);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue