Source file utils_random_service.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module Sig = Utils_random_service_sig
module Make () : Sig.SERVICE = struct
let rec rand result n =
if n > 0 then rand Base.(result ^ Char.to_string (Random.ascii ())) (n - 1)
else result
let base64 ~bytes =
Base64.encode_string ~alphabet:Base64.uri_safe_alphabet @@ rand "" bytes
let lifecycle =
Core.Container.Lifecycle.make "random"
(fun ctx ->
Random.self_init ();
Lwt.return ctx)
(fun _ -> Lwt.return ())
end