From 16819f83dab8a852771c16102c4c7e652aad632e Mon Sep 17 00:00:00 2001 From: swrup Date: Sun, 30 Nov 2025 14:23:55 +0100 Subject: [PATCH] wip post json --- src/management.ml | 26 +++++++++++++++++++++++--- src/mte.ml | 5 ++++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/management.ml b/src/management.ml index 7e21f511..5e37c9b8 100644 --- a/src/management.ml +++ b/src/management.ml @@ -110,9 +110,29 @@ let keys_get req server _env = let* () = add ~field:"content-type" "application/json" in respond `OK +type foo = { key: string } + +let foo_jsont = + let open Jsont in + let enc foo = foo.key in + let make key = { key } in + Object.map ~kind:"foo" make |> Object.mem "key" string ~enc |> Object.finish + let keys_post req _server _env = let open Vif.Response in let open Syntax in - let* () = with_string req {||} in - let* () = add ~field:"content-type" "application/json" in - respond `OK + match Vif.Request.of_json req with + | Ok (foo : foo) -> + let str = Fmt.str "key: %s@." foo.key in + let* () = + Vif.Response.add ~field:"content-type" "text/plain; charset=utf-8" + in + let* () = Vif.Response.with_string req str in + Vif.Response.respond `OK + | Error (`Msg msg) -> + Logs.err (fun m -> m "Invalid JSON: %s" msg); + let* () = + Vif.Response.add ~field:"content-type" "text/plain; charset=utf-8" + in + let* () = Vif.Response.with_string req msg in + Vif.Response.respond (`Code 422) diff --git a/src/mte.ml b/src/mte.ml index 8439cdb0..9f8d5949 100644 --- a/src/mte.ml +++ b/src/mte.ml @@ -33,7 +33,10 @@ let routes = get_ (rel / "privacy" /?? nil) --> Static.privacy; get_ (rel / "test" /?? nil) --> Database.test_activate; get_ (rel / "management" / "keys" /?? nil) --> Management.keys_get; - post (rel / "management" / "keys" /?? nil) any --> Management.keys_post; + post + (rel / "management" / "keys" /?? nil) + (json_encoding Management.foo_jsont) + --> Management.keys_post; ] let () =