vif/examples/08-digest/main.ml

33 lines
766 B
OCaml
Raw Normal View History

2025-02-14 15:16:23 +00:00
#require "vif" ;;
#require "digestif.c" ;;
open Vif ;;
let sha1 =
let open Stream in
let init () = Digestif.SHA1.empty in
let push ctx str = Digestif.SHA1.feed_string ctx str in
let full = Fun.const false in
let stop = Digestif.SHA1.get in
Sink { init; push; full; stop }
;;
2025-02-18 18:25:30 +00:00
let default req server () =
2025-02-14 15:16:23 +00:00
let stream = Request.stream req in
let hash = Stream.Stream.into sha1 stream in
let field = "content-type" in
let* () = Response.add ~field "text/plain; charset=utf-8" in
let* () = Response.with_string req (Digestif.SHA1.to_hex hash) in
Response.respond `OK
;;
2025-02-18 18:25:30 +00:00
let routes =
let open Vif.U in
let open Vif.R in
2025-02-21 09:33:20 +00:00
let open Vif.T in
2025-02-18 18:25:30 +00:00
[ post any (rel /?? nil) --> default ]
2025-02-14 15:16:23 +00:00
let () = Miou_unix.run @@ fun () ->
2025-02-18 18:25:30 +00:00
Vif.run routes ()
;;