package sihl

  1. Overview
  2. Docs

Source file web_id.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
let key : string Opium.Context.key =
  Opium.Context.Key.create ("id", Sexplib.Std.sexp_of_string)
;;

let find req = Opium.Context.find key req.Opium.Request.env

let set id req =
  let env = req.Opium.Request.env in
  let env = Opium.Context.add key id env in
  { req with env }
;;

let middleware () =
  let filter handler req =
    match Opium.Request.header "x-request-id" req with
    | Some request_id -> handler (set request_id req)
    | None ->
      let request_id = Core_random.base64 64 in
      handler (set request_id req)
  in
  Rock.Middleware.create ~name:"id" ~filter
;;
OCaml

Innovation. Community. Security.