My agentic slop goes here. Not intended for anyone else!
at main 2.0 kB view raw
1(** JMAP JSON Parser Utilities *) 2 3(** Helper functions for working with ezjsonm values *) 4module Helpers : sig 5 (** Expect a JSON object and return field list *) 6 val expect_object : Ezjsonm.value -> (string * Ezjsonm.value) list 7 8 (** Expect a JSON array and return element list *) 9 val expect_array : Ezjsonm.value -> Ezjsonm.value list 10 11 (** Expect a JSON string *) 12 val expect_string : Ezjsonm.value -> string 13 14 (** Expect a JSON integer *) 15 val expect_int : Ezjsonm.value -> int 16 17 (** Expect a JSON boolean *) 18 val expect_bool : Ezjsonm.value -> bool 19 20 (** Find optional field in object *) 21 val find_field : string -> (string * Ezjsonm.value) list -> Ezjsonm.value option 22 23 (** Require field to be present *) 24 val require_field : string -> (string * Ezjsonm.value) list -> Ezjsonm.value 25 26 (** Get optional string field *) 27 val get_string_opt : string -> (string * Ezjsonm.value) list -> string option 28 29 (** Get required string field *) 30 val get_string : string -> (string * Ezjsonm.value) list -> string 31 32 (** Get optional boolean field with default *) 33 val get_bool_opt : string -> (string * Ezjsonm.value) list -> bool -> bool 34 35 (** Get required boolean field *) 36 val get_bool : string -> (string * Ezjsonm.value) list -> bool 37 38 (** Get optional int field *) 39 val get_int_opt : string -> (string * Ezjsonm.value) list -> int option 40 41 (** Get required int field *) 42 val get_int : string -> (string * Ezjsonm.value) list -> int 43 44 (** Parse a map with string keys *) 45 val parse_map : (Ezjsonm.value -> 'a) -> Ezjsonm.value -> (string * 'a) list 46 47 (** Parse an array *) 48 val parse_array : (Ezjsonm.value -> 'a) -> Ezjsonm.value -> 'a list 49 50 (** Parse optional array (null or array) *) 51 val parse_array_opt : (Ezjsonm.value -> 'a) -> Ezjsonm.value -> 'a list option 52end 53 54(** Parse JMAP Request *) 55val parse_request : Ezjsonm.value -> Jmap_request.t 56 57(** Parse JMAP Response *) 58val parse_response : Ezjsonm.value -> Jmap_response.t 59 60(** Parse JMAP Session *) 61val parse_session : Ezjsonm.value -> Jmap_session.t