wip respond.ml

This commit is contained in:
swrup 2026-02-12 12:13:30 +01:00
parent 059c5d796f
commit 3c8e139d24
3 changed files with 41 additions and 57 deletions

View file

@ -1,31 +1,5 @@
(* /terms + /privacy *)
(* TODO response *)
module Respond_with = struct
open Vif.Response
open Syntax
open struct
let error_detail ?hint _status =
let open Api in
let code = -1 in
let err = ErrorDetail.make ?hint code in
let s = encode_exn ErrorDetail.jsont err in
Logs.err (fun m -> m "ErrorDetail: `%s`" s);
s
end
let bad_request ?hint req =
let body = error_detail ?hint `Bad_request in
let* () = add ~field:"content-type" "application/json" in
let* () = with_string ?compression:None req body in
respond `Bad_request
let not_modified () =
let* () = empty in
respond `Not_modified
end
let aux asset req _server _env =
let etag = Assets.etag asset in
let headers = Vif.Request.headers req in
@ -37,12 +11,8 @@ let aux asset req _server _env =
|> Result.map (Headers_lib.If_none_match.evaluate etag)
in
match has_matching_etag with
| Error e ->
Logs.err (fun m -> m "bad request");
Respond_with.bad_request ~hint:e req
| Ok true ->
Logs.err (fun m -> m "not modified");
Respond_with.not_modified ()
| Error e -> Respond_util.bad_request ~hint:e req
| Ok true -> Respond_util.not_modified ()
| Ok false ->
let mime = Headers.select_mimetype headers in
let lang = Headers.select_language headers in