diff --git a/src/management.ml b/src/management.ml index 7e21f511..30562e7d 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 = { v: string } + +let foo_jsont = + let open Jsont in + let enc foo = foo.v in + let make v = { v } in + Object.map ~kind:"foo" make |> Object.mem "v" 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.v 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..c2bc7ef8 100644 --- a/src/mte.ml +++ b/src/mte.ml @@ -24,16 +24,16 @@ let routes = let open Vif.Uri in let open Vif.Route in let open Vif.Type in - (* just for alignement *) - let get_ = get in - let post = Fun.flip post in [ - get_ (rel /?? nil) --> hello; - get_ (rel / "terms" /?? nil) --> Static.terms; - 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; + get (rel /?? nil) --> hello; + get (rel / "terms" /?? nil) --> Static.terms; + get (rel / "privacy" /?? nil) --> Static.privacy; + get (rel / "test" /?? nil) --> Database.test_activate; + get (rel / "management" / "keys" /?? nil) --> Management.keys_get; + post + (json_encoding Management.foo_jsont) + (rel / "management" / "keys" /?? nil) + --> Management.keys_post; ] let () =