Source file version_error.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
open Import
open Types
type t =
{ payload : Csexp.t option
; message : string
}
let payload t = t.payload
let message t = t.message
let to_dyn { payload; message } =
Dyn.record
[ "message", Dyn.string message; "payload", Dyn.(option Sexp.to_dyn) payload ]
;;
let create ?payload ~message () = { payload; message }
exception E of t
let () =
Printexc.register_printer (function
| E { payload; message } ->
Some
(let messages =
match payload with
| None -> []
| Some payload -> [ Sexp.pp payload ]
in
Format.asprintf "%a@." Pp.to_fmt
@@ Pp.concat
@@ (Pp.textf "Version_error: %s" message :: messages))
| _ -> None)
;;
let to_response_error { payload; message } =
Response.Error.create ~kind:Invalid_request ?payload ~message ()
;;