34 lines
693 B
OCaml
34 lines
693 B
OCaml
open Lwt.Syntax
|
|
|
|
let successful = ref 0
|
|
let failed = ref 0
|
|
|
|
(* middleware *)
|
|
let count_requests inner_handler request =
|
|
try%lwt
|
|
let* response = inner_handler request in
|
|
successful := !successful + 1;
|
|
Lwt.return response
|
|
|
|
with exn ->
|
|
failed := !failed + 1;
|
|
raise exn
|
|
|
|
let () =
|
|
Dream.run
|
|
@@ Dream.logger
|
|
@@ count_requests
|
|
@@ Dream.router [
|
|
Dream.get "/"
|
|
(fun _ ->
|
|
Dream.html "Hello, world!");
|
|
|
|
Dream.get "/count"
|
|
(fun _ ->
|
|
Dream.html (Printf.sprintf "%3i successful requests<br>%3i failed requests" !successful !failed));
|
|
|
|
Dream.get "/echo/:word"
|
|
(fun request ->
|
|
Dream.html (Dream.param request "word"));
|
|
]
|