diff options
| author | Adelyn Breedlove <[email protected]> | 2018-12-13 16:44:32 -0700 |
|---|---|---|
| committer | Adelyn Breedlove <[email protected]> | 2018-12-13 16:44:32 -0700 |
| commit | c6463e5ca9c557c7e8ecd05e71d37f237bc59da6 (patch) | |
| tree | df4b700a4c039e34bbee401250281a6c1814d4ca /lib/models | |
| parent | Merge branch 'dev' of https://gitlab.com/Mishio595/disml into dev (diff) | |
| parent | Fix more dispatch issues (diff) | |
| download | disml-c6463e5ca9c557c7e8ecd05e71d37f237bc59da6.tar.xz disml-c6463e5ca9c557c7e8ecd05e71d37f237bc59da6.zip | |
Merge branch 'dev' of https://gitlab.com/Mishio595/disml into dev
Diffstat (limited to 'lib/models')
83 files changed, 12747 insertions, 182 deletions
diff --git a/lib/models/activity.atd b/lib/models/activity.atd new file mode 100644 index 0000000..8e02191 --- /dev/null +++ b/lib/models/activity.atd @@ -0,0 +1,5 @@ +type t = { + name: string; + kind <json name="type">: int; + ?url: string option; +}
\ No newline at end of file diff --git a/lib/models/activity.ml b/lib/models/activity.ml deleted file mode 100644 index 80f1049..0000000 --- a/lib/models/activity.ml +++ /dev/null @@ -1,4 +0,0 @@ -type t = { - id: Snowflake.t; -} -[@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/activity_j.ml b/lib/models/activity_j.ml new file mode 100644 index 0000000..eb1a62e --- /dev/null +++ b/lib/models/activity_j.ml @@ -0,0 +1,274 @@ +(* Auto-generated from "activity.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type t = Activity_t.t = { name: string; kind: int; url: string option } + +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_string + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"name\":"; + ( + Yojson.Safe.write_string + ) + ob x.name; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"type\":"; + ( + Yojson.Safe.write_int + ) + ob x.kind; + (match x.url with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"url\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_kind = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_url = ref (None) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 2 + ) + else ( + -1 + ) + ) + | 4 -> ( + match String.unsafe_get s pos with + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 0 + ) + else ( + -1 + ) + ) + | 't' -> ( + if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_name := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_kind := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 2 + ) + else ( + -1 + ) + ) + | 4 -> ( + match String.unsafe_get s pos with + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 0 + ) + else ( + -1 + ) + ) + | 't' -> ( + if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_name := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_kind := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x3 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "name"; "kind" |]; + ( + { + name = !field_name; + kind = !field_kind; + url = !field_url; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/activity_j.mli b/lib/models/activity_j.mli new file mode 100644 index 0000000..c179efb --- /dev/null +++ b/lib/models/activity_j.mli @@ -0,0 +1,25 @@ +(* Auto-generated from "activity.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type t = Activity_t.t = { name: string; kind: int; url: string option } + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/activity_t.ml b/lib/models/activity_t.ml new file mode 100644 index 0000000..6bb2049 --- /dev/null +++ b/lib/models/activity_t.ml @@ -0,0 +1,4 @@ +(* Auto-generated from "activity.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type t = { name: string; kind: int; url: string option } diff --git a/lib/models/activity_t.mli b/lib/models/activity_t.mli new file mode 100644 index 0000000..6bb2049 --- /dev/null +++ b/lib/models/activity_t.mli @@ -0,0 +1,4 @@ +(* Auto-generated from "activity.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type t = { name: string; kind: int; url: string option } diff --git a/lib/models/attachment.atd b/lib/models/attachment.atd new file mode 100644 index 0000000..9757b49 --- /dev/null +++ b/lib/models/attachment.atd @@ -0,0 +1,11 @@ +type snowflake <ocaml from="Snowflake" t="t"> = abstract + +type t = { + id: snowflake; + filename: string; + size: int; + url: string; + proxy_url: string; + ?height: int option; + ?width: int option; +}
\ No newline at end of file diff --git a/lib/models/attachment.ml b/lib/models/attachment.ml deleted file mode 100644 index 595aa45..0000000 --- a/lib/models/attachment.ml +++ /dev/null @@ -1,9 +0,0 @@ -type t = { - id: Snowflake.t; - filename: string; - size: int; - url: string; - proxy_url: string; - height: int option; - width: int option; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/attachment_j.ml b/lib/models/attachment_j.ml new file mode 100644 index 0000000..28f909d --- /dev/null +++ b/lib/models/attachment_j.ml @@ -0,0 +1,456 @@ +(* Auto-generated from "attachment.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = Attachment_t.t = { + id: snowflake; + filename: string; + size: int; + url: string; + proxy_url: string; + height: int option; + width: int option +} + +let write_snowflake = ( + Snowflake_j.write_t +) +let string_of_snowflake ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_snowflake ob x; + Bi_outbuf.contents ob +let read_snowflake = ( + Snowflake_j.read_t +) +let snowflake_of_string s = + read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_int + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_int + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_int + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"id\":"; + ( + write_snowflake + ) + ob x.id; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"filename\":"; + ( + Yojson.Safe.write_string + ) + ob x.filename; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"size\":"; + ( + Yojson.Safe.write_int + ) + ob x.size; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"url\":"; + ( + Yojson.Safe.write_string + ) + ob x.url; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"proxy_url\":"; + ( + Yojson.Safe.write_string + ) + ob x.proxy_url; + (match x.height with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"height\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + (match x.width with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"width\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_filename = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_size = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_url = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_proxy_url = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_height = ref (None) in + let field_width = ref (None) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 3 + ) + else ( + -1 + ) + ) + | 4 -> ( + if String.unsafe_get s pos = 's' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'z' && String.unsafe_get s (pos+3) = 'e' then ( + 2 + ) + else ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then ( + 6 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then ( + 5 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'f' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'a' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'u' && String.unsafe_get s (pos+7) = 'r' && String.unsafe_get s (pos+8) = 'l' then ( + 4 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_filename := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + field_size := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 3 -> + field_url := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 4 -> + field_proxy_url := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x10; + | 5 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_height := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 6 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_width := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 3 + ) + else ( + -1 + ) + ) + | 4 -> ( + if String.unsafe_get s pos = 's' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'z' && String.unsafe_get s (pos+3) = 'e' then ( + 2 + ) + else ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then ( + 6 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then ( + 5 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'f' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'a' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'u' && String.unsafe_get s (pos+7) = 'r' && String.unsafe_get s (pos+8) = 'l' then ( + 4 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_filename := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + field_size := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 3 -> + field_url := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 4 -> + field_proxy_url := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x10; + | 5 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_height := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 6 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_width := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "filename"; "size"; "url"; "proxy_url" |]; + ( + { + id = !field_id; + filename = !field_filename; + size = !field_size; + url = !field_url; + proxy_url = !field_proxy_url; + height = !field_height; + width = !field_width; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/attachment_j.mli b/lib/models/attachment_j.mli new file mode 100644 index 0000000..6b11b08 --- /dev/null +++ b/lib/models/attachment_j.mli @@ -0,0 +1,55 @@ +(* Auto-generated from "attachment.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = Attachment_t.t = { + id: snowflake; + filename: string; + size: int; + url: string; + proxy_url: string; + height: int option; + width: int option +} + +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) + +val string_of_snowflake : + ?len:int -> snowflake -> string + (** Serialize a value of type {!snowflake} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) + +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/attachment_t.ml b/lib/models/attachment_t.ml new file mode 100644 index 0000000..0485dcc --- /dev/null +++ b/lib/models/attachment_t.ml @@ -0,0 +1,14 @@ +(* Auto-generated from "attachment.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = { + id: snowflake; + filename: string; + size: int; + url: string; + proxy_url: string; + height: int option; + width: int option +} diff --git a/lib/models/attachment_t.mli b/lib/models/attachment_t.mli new file mode 100644 index 0000000..0485dcc --- /dev/null +++ b/lib/models/attachment_t.mli @@ -0,0 +1,14 @@ +(* Auto-generated from "attachment.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = { + id: snowflake; + filename: string; + size: int; + url: string; + proxy_url: string; + height: int option; + width: int option +} diff --git a/lib/models/ban.atd b/lib/models/ban.atd new file mode 100644 index 0000000..0a87338 --- /dev/null +++ b/lib/models/ban.atd @@ -0,0 +1,6 @@ +type user <ocaml from="User" t="t"> = abstract + +type t = { + ?reason: string option; + user: user; +}
\ No newline at end of file diff --git a/lib/models/ban.ml b/lib/models/ban.ml deleted file mode 100644 index ff0fb67..0000000 --- a/lib/models/ban.ml +++ /dev/null @@ -1,4 +0,0 @@ -type t = { - id: Snowflake.t; - user: User.t; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/ban_j.ml b/lib/models/ban_j.ml new file mode 100644 index 0000000..e608f67 --- /dev/null +++ b/lib/models/ban_j.ml @@ -0,0 +1,235 @@ +(* Auto-generated from "ban.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type t = Ban_t.t = { reason: string option; user: user } + +let write_user = ( + User_j.write_t +) +let string_of_user ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_user ob x; + Bi_outbuf.contents ob +let read_user = ( + User_j.read_t +) +let user_of_string s = + read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_string + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + (match x.reason with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"reason\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"user\":"; + ( + write_user + ) + ob x.user; + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_reason = ref (None) in + let field_user = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then ( + 1 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 's' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'n' then ( + 0 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_reason := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + field_user := ( + ( + read_user + ) p lb + ); + bits0 := !bits0 lor 0x1; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then ( + 1 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 's' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'n' then ( + 0 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_reason := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + field_user := ( + ( + read_user + ) p lb + ); + bits0 := !bits0 lor 0x1; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "user" |]; + ( + { + reason = !field_reason; + user = !field_user; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/ban_j.mli b/lib/models/ban_j.mli new file mode 100644 index 0000000..9449b5c --- /dev/null +++ b/lib/models/ban_j.mli @@ -0,0 +1,47 @@ +(* Auto-generated from "ban.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type t = Ban_t.t = { reason: string option; user: user } + +val write_user : + Bi_outbuf.t -> user -> unit + (** Output a JSON value of type {!user}. *) + +val string_of_user : + ?len:int -> user -> string + (** Serialize a value of type {!user} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> user + (** Input JSON data of type {!user}. *) + +val user_of_string : + string -> user + (** Deserialize JSON data of type {!user}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/ban_t.ml b/lib/models/ban_t.ml new file mode 100644 index 0000000..7d9c5a0 --- /dev/null +++ b/lib/models/ban_t.ml @@ -0,0 +1,6 @@ +(* Auto-generated from "ban.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type t = { reason: string option; user: user } diff --git a/lib/models/ban_t.mli b/lib/models/ban_t.mli new file mode 100644 index 0000000..7d9c5a0 --- /dev/null +++ b/lib/models/ban_t.mli @@ -0,0 +1,6 @@ +(* Auto-generated from "ban.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type t = { reason: string option; user: user } diff --git a/lib/models/channel.atd b/lib/models/channel.atd new file mode 100644 index 0000000..6ab58cf --- /dev/null +++ b/lib/models/channel.atd @@ -0,0 +1,19 @@ +type snowflake <ocaml from="Snowflake" t="t"> = abstract +type user <ocaml from="User" t="t"> = abstract + +type t = { + id: snowflake; + kind <json name="type">: int; + ?guild_id: snowflake option; + ?position: int option; + ?name: string option; + ?topic: string option; + ?nsfw: bool option; + ?bitrate: int option; + ?user_limit: int option; + ?recipients: user list option; + ?icon: string option; + ?owner_id: snowflake option; + ?application_id: snowflake option; + ?parent_id: snowflake option; +}
\ No newline at end of file diff --git a/lib/models/channel.ml b/lib/models/channel.ml deleted file mode 100644 index ac3e596..0000000 --- a/lib/models/channel.ml +++ /dev/null @@ -1,17 +0,0 @@ -type t = { - id: Snowflake.t; - kind: int; - (* guild: Guild.t option; *) - position: int option; - permission_overwrites: (int list) option; - name: string option; - topic: string option; - nsfw: bool option; - bitrate: int option; - user_limit: int option; - recipients: (User.t list) option; - icon: string option; - owner_id: Snowflake.t option; - application_id: Snowflake.t option; - parent_id: Snowflake.t option; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/channel_j.ml b/lib/models/channel_j.ml new file mode 100644 index 0000000..7369230 --- /dev/null +++ b/lib/models/channel_j.ml @@ -0,0 +1,1136 @@ +(* Auto-generated from "channel.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = Channel_t.t = { + id: snowflake; + kind: int; + guild_id: snowflake option; + position: int option; + name: string option; + topic: string option; + nsfw: bool option; + bitrate: int option; + user_limit: int option; + recipients: user list option; + icon: string option; + owner_id: snowflake option; + application_id: snowflake option; + parent_id: snowflake option +} + +let write_user = ( + User_j.write_t +) +let string_of_user ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_user ob x; + Bi_outbuf.contents ob +let read_user = ( + User_j.read_t +) +let user_of_string s = + read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_snowflake = ( + Snowflake_j.write_t +) +let string_of_snowflake ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_snowflake ob x; + Bi_outbuf.contents ob +let read_snowflake = ( + Snowflake_j.read_t +) +let snowflake_of_string s = + read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__5 = ( + Atdgen_runtime.Oj_run.write_list ( + write_user + ) +) +let string_of__5 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__5 ob x; + Bi_outbuf.contents ob +let read__5 = ( + Atdgen_runtime.Oj_run.read_list ( + read_user + ) +) +let _5_of_string s = + read__5 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__6 = ( + Atdgen_runtime.Oj_run.write_option ( + write__5 + ) +) +let string_of__6 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__6 ob x; + Bi_outbuf.contents ob +let read__6 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read__5 + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read__5 + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _6_of_string s = + read__6 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__4 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_bool + ) +) +let string_of__4 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__4 ob x; + Bi_outbuf.contents ob +let read__4 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _4_of_string s = + read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__3 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_string + ) +) +let string_of__3 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__3 ob x; + Bi_outbuf.contents ob +let read__3 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _3_of_string s = + read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__2 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_int + ) +) +let string_of__2 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__2 ob x; + Bi_outbuf.contents ob +let read__2 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_int + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_int + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _2_of_string s = + read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + write_snowflake + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_snowflake + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_snowflake + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"id\":"; + ( + write_snowflake + ) + ob x.id; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"type\":"; + ( + Yojson.Safe.write_int + ) + ob x.kind; + (match x.guild_id with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"guild_id\":"; + ( + write_snowflake + ) + ob x; + ); + (match x.position with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"position\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + (match x.name with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"name\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.topic with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"topic\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.nsfw with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"nsfw\":"; + ( + Yojson.Safe.write_bool + ) + ob x; + ); + (match x.bitrate with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"bitrate\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + (match x.user_limit with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"user_limit\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + (match x.recipients with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"recipients\":"; + ( + write__5 + ) + ob x; + ); + (match x.icon with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"icon\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.owner_id with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"owner_id\":"; + ( + write_snowflake + ) + ob x; + ); + (match x.application_id with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"application_id\":"; + ( + write_snowflake + ) + ob x; + ); + (match x.parent_id with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"parent_id\":"; + ( + write_snowflake + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_kind = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_guild_id = ref (None) in + let field_position = ref (None) in + let field_name = ref (None) in + let field_topic = ref (None) in + let field_nsfw = ref (None) in + let field_bitrate = ref (None) in + let field_user_limit = ref (None) in + let field_recipients = ref (None) in + let field_icon = ref (None) in + let field_owner_id = ref (None) in + let field_application_id = ref (None) in + let field_parent_id = ref (None) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 4 -> ( + match String.unsafe_get s pos with + | 'i' -> ( + if String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' then ( + 10 + ) + else ( + -1 + ) + ) + | 'n' -> ( + match String.unsafe_get s (pos+1) with + | 'a' -> ( + if String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 4 + ) + else ( + -1 + ) + ) + | 's' -> ( + if String.unsafe_get s (pos+2) = 'f' && String.unsafe_get s (pos+3) = 'w' then ( + 6 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 't' -> ( + if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'c' then ( + 5 + ) + else ( + -1 + ) + ) + | 7 -> ( + if String.unsafe_get s pos = 'b' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'e' then ( + 7 + ) + else ( + -1 + ) + ) + | 8 -> ( + match String.unsafe_get s pos with + | 'g' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 2 + ) + else ( + -1 + ) + ) + | 'o' -> ( + if String.unsafe_get s (pos+1) = 'w' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 11 + ) + else ( + -1 + ) + ) + | 'p' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' then ( + 3 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'd' then ( + 13 + ) + else ( + -1 + ) + ) + | 10 -> ( + match String.unsafe_get s pos with + | 'r' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'p' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 's' then ( + 9 + ) + else ( + -1 + ) + ) + | 'u' -> ( + if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'l' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 't' then ( + 8 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 14 -> ( + if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'p' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then ( + 12 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_kind := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_guild_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_position := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 4 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_name := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 5 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_topic := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 6 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nsfw := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 7 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_bitrate := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 8 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_user_limit := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 9 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_recipients := ( + Some ( + ( + read__5 + ) p lb + ) + ); + ) + | 10 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_icon := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 11 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_owner_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 12 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_application_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 13 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_parent_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 4 -> ( + match String.unsafe_get s pos with + | 'i' -> ( + if String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' then ( + 10 + ) + else ( + -1 + ) + ) + | 'n' -> ( + match String.unsafe_get s (pos+1) with + | 'a' -> ( + if String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 4 + ) + else ( + -1 + ) + ) + | 's' -> ( + if String.unsafe_get s (pos+2) = 'f' && String.unsafe_get s (pos+3) = 'w' then ( + 6 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 't' -> ( + if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'c' then ( + 5 + ) + else ( + -1 + ) + ) + | 7 -> ( + if String.unsafe_get s pos = 'b' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'e' then ( + 7 + ) + else ( + -1 + ) + ) + | 8 -> ( + match String.unsafe_get s pos with + | 'g' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 2 + ) + else ( + -1 + ) + ) + | 'o' -> ( + if String.unsafe_get s (pos+1) = 'w' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 11 + ) + else ( + -1 + ) + ) + | 'p' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' then ( + 3 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'd' then ( + 13 + ) + else ( + -1 + ) + ) + | 10 -> ( + match String.unsafe_get s pos with + | 'r' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'p' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 's' then ( + 9 + ) + else ( + -1 + ) + ) + | 'u' -> ( + if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'l' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 't' then ( + 8 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 14 -> ( + if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'p' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then ( + 12 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_kind := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_guild_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_position := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 4 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_name := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 5 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_topic := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 6 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nsfw := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 7 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_bitrate := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 8 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_user_limit := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 9 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_recipients := ( + Some ( + ( + read__5 + ) p lb + ) + ); + ) + | 10 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_icon := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 11 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_owner_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 12 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_application_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 13 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_parent_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x3 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "kind" |]; + ( + { + id = !field_id; + kind = !field_kind; + guild_id = !field_guild_id; + position = !field_position; + name = !field_name; + topic = !field_topic; + nsfw = !field_nsfw; + bitrate = !field_bitrate; + user_limit = !field_user_limit; + recipients = !field_recipients; + icon = !field_icon; + owner_id = !field_owner_id; + application_id = !field_application_id; + parent_id = !field_parent_id; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/channel_j.mli b/lib/models/channel_j.mli new file mode 100644 index 0000000..ec4048c --- /dev/null +++ b/lib/models/channel_j.mli @@ -0,0 +1,84 @@ +(* Auto-generated from "channel.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = Channel_t.t = { + id: snowflake; + kind: int; + guild_id: snowflake option; + position: int option; + name: string option; + topic: string option; + nsfw: bool option; + bitrate: int option; + user_limit: int option; + recipients: user list option; + icon: string option; + owner_id: snowflake option; + application_id: snowflake option; + parent_id: snowflake option +} + +val write_user : + Bi_outbuf.t -> user -> unit + (** Output a JSON value of type {!user}. *) + +val string_of_user : + ?len:int -> user -> string + (** Serialize a value of type {!user} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> user + (** Input JSON data of type {!user}. *) + +val user_of_string : + string -> user + (** Deserialize JSON data of type {!user}. *) + +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) + +val string_of_snowflake : + ?len:int -> snowflake -> string + (** Serialize a value of type {!snowflake} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) + +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/channel_t.ml b/lib/models/channel_t.ml new file mode 100644 index 0000000..a5c9ce4 --- /dev/null +++ b/lib/models/channel_t.ml @@ -0,0 +1,23 @@ +(* Auto-generated from "channel.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = { + id: snowflake; + kind: int; + guild_id: snowflake option; + position: int option; + name: string option; + topic: string option; + nsfw: bool option; + bitrate: int option; + user_limit: int option; + recipients: user list option; + icon: string option; + owner_id: snowflake option; + application_id: snowflake option; + parent_id: snowflake option +} diff --git a/lib/models/channel_t.mli b/lib/models/channel_t.mli new file mode 100644 index 0000000..a5c9ce4 --- /dev/null +++ b/lib/models/channel_t.mli @@ -0,0 +1,23 @@ +(* Auto-generated from "channel.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = { + id: snowflake; + kind: int; + guild_id: snowflake option; + position: int option; + name: string option; + topic: string option; + nsfw: bool option; + bitrate: int option; + user_limit: int option; + recipients: user list option; + icon: string option; + owner_id: snowflake option; + application_id: snowflake option; + parent_id: snowflake option +} diff --git a/lib/models/embed.atd b/lib/models/embed.atd new file mode 100644 index 0000000..0d3aed4 --- /dev/null +++ b/lib/models/embed.atd @@ -0,0 +1,44 @@ +type footer = { + text: string; + ?icon_url: string option; + ?proxy_icon_url: string option; +} + +type image = { + ?url: string option; + ?proxy_url: string option; + ?height: int option; + ?width: int option; +} + +type video = { + ?url: string option; + ?height: int option; + ?width: int option; +} + +type provider = { + ?name: string option; + ?url: string option; +} + +type field = { + name: string; + value: string; + ?inline: bool option; +} + +type t = { + ?title: string option; + ?kind: string option; + ?description: string option; + ?url: string option; + ?timestamp: string option; + ?colour: int option; + ?footer: footer option; + ?image: image option; + ?thumbnail: image option; + ?video: video option; + ?provider: provider option; + ?fields: field list option; +}
\ No newline at end of file diff --git a/lib/models/embed.ml b/lib/models/embed.ml deleted file mode 100644 index b4dc143..0000000 --- a/lib/models/embed.ml +++ /dev/null @@ -1,44 +0,0 @@ -type footer = { - text: string; - icon_url: string option; - proxy_icon_url: string option; -} [@@deriving yojson] - -type image = { - url: string option; - proxy_url: string option; - height: int option; - width: int option; -} [@@deriving yojson] - -type video = { - url: string option; - height: int option; - width: int option; -} [@@deriving yojson] - -type provider = { - name: string option; - url: string option; -} [@@deriving yojson] - -type field = { - name: string; - value: string; - inline: bool option; -} [@@deriving yojson] - -type t = { - title: string option; - kind: string option; - description: string option; - url: string option; - timestamp: string option; - colour: int option; - footer: footer option; - image: image option; - thumbnail: image option; - video: video option; - provider: provider option; - fields: (field list) option; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/embed_j.ml b/lib/models/embed_j.ml new file mode 100644 index 0000000..560c517 --- /dev/null +++ b/lib/models/embed_j.ml @@ -0,0 +1,2283 @@ +(* Auto-generated from "embed.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type video = Embed_t.video = { + url: string option; + height: int option; + width: int option +} + +type provider = Embed_t.provider = { + name: string option; + url: string option +} + +type image = Embed_t.image = { + url: string option; + proxy_url: string option; + height: int option; + width: int option +} + +type footer = Embed_t.footer = { + text: string; + icon_url: string option; + proxy_icon_url: string option +} + +type field = Embed_t.field = { + name: string; + value: string; + inline: bool option +} + +type t = Embed_t.t = { + title: string option; + kind: string option; + description: string option; + url: string option; + timestamp: string option; + colour: int option; + footer: footer option; + image: image option; + thumbnail: image option; + video: video option; + provider: provider option; + fields: field list option +} + +let write__2 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_int + ) +) +let string_of__2 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__2 ob x; + Bi_outbuf.contents ob +let read__2 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_int + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_int + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _2_of_string s = + read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_string + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_video : _ -> video -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + (match x.url with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"url\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.height with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"height\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + (match x.width with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"width\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_video ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_video ob x; + Bi_outbuf.contents ob +let read_video = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_url = ref (None) in + let field_height = ref (None) in + let field_width = ref (None) in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 0 + ) + else ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then ( + 2 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_height := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_width := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 0 + ) + else ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then ( + 2 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_height := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_width := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + ( + { + url = !field_url; + height = !field_height; + width = !field_width; + } + : video) + ) +) +let video_of_string s = + read_video (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_provider : _ -> provider -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + (match x.name with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"name\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.url with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"url\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_provider ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_provider ob x; + Bi_outbuf.contents ob +let read_provider = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_name = ref (None) in + let field_url = ref (None) in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 1 + ) + else ( + -1 + ) + ) + | 4 -> ( + if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 0 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_name := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 1 + ) + else ( + -1 + ) + ) + | 4 -> ( + if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 0 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_name := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + ( + { + name = !field_name; + url = !field_url; + } + : provider) + ) +) +let provider_of_string s = + read_provider (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_image : _ -> image -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + (match x.url with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"url\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.proxy_url with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"proxy_url\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.height with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"height\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + (match x.width with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"width\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_image ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_image ob x; + Bi_outbuf.contents ob +let read_image = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_url = ref (None) in + let field_proxy_url = ref (None) in + let field_height = ref (None) in + let field_width = ref (None) in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 0 + ) + else ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then ( + 3 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then ( + 2 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'u' && String.unsafe_get s (pos+7) = 'r' && String.unsafe_get s (pos+8) = 'l' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_proxy_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_height := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_width := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 0 + ) + else ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then ( + 3 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then ( + 2 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'u' && String.unsafe_get s (pos+7) = 'r' && String.unsafe_get s (pos+8) = 'l' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_proxy_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_height := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_width := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + ( + { + url = !field_url; + proxy_url = !field_proxy_url; + height = !field_height; + width = !field_width; + } + : image) + ) +) +let image_of_string s = + read_image (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_footer : _ -> footer -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"text\":"; + ( + Yojson.Safe.write_string + ) + ob x.text; + (match x.icon_url with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"icon_url\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.proxy_icon_url with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"proxy_icon_url\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_footer ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_footer ob x; + Bi_outbuf.contents ob +let read_footer = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_text = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_icon_url = ref (None) in + let field_proxy_icon_url = ref (None) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'x' && String.unsafe_get s (pos+3) = 't' then ( + 0 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'u' && String.unsafe_get s (pos+6) = 'r' && String.unsafe_get s (pos+7) = 'l' then ( + 1 + ) + else ( + -1 + ) + ) + | 14 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = '_' && String.unsafe_get s (pos+11) = 'u' && String.unsafe_get s (pos+12) = 'r' && String.unsafe_get s (pos+13) = 'l' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_text := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_icon_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_proxy_icon_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'x' && String.unsafe_get s (pos+3) = 't' then ( + 0 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'u' && String.unsafe_get s (pos+6) = 'r' && String.unsafe_get s (pos+7) = 'l' then ( + 1 + ) + else ( + -1 + ) + ) + | 14 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = '_' && String.unsafe_get s (pos+11) = 'u' && String.unsafe_get s (pos+12) = 'r' && String.unsafe_get s (pos+13) = 'l' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_text := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_icon_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_proxy_icon_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "text" |]; + ( + { + text = !field_text; + icon_url = !field_icon_url; + proxy_icon_url = !field_proxy_icon_url; + } + : footer) + ) +) +let footer_of_string s = + read_footer (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__3 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_bool + ) +) +let string_of__3 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__3 ob x; + Bi_outbuf.contents ob +let read__3 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _3_of_string s = + read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_field : _ -> field -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"name\":"; + ( + Yojson.Safe.write_string + ) + ob x.name; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"value\":"; + ( + Yojson.Safe.write_string + ) + ob x.value; + (match x.inline with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"inline\":"; + ( + Yojson.Safe.write_bool + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_field ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_field ob x; + Bi_outbuf.contents ob +let read_field = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_value = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_inline = ref (None) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 0 + ) + else ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'v' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'u' && String.unsafe_get s (pos+4) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_name := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_value := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_inline := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 0 + ) + else ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'v' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'u' && String.unsafe_get s (pos+4) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_name := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_value := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_inline := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x3 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "name"; "value" |]; + ( + { + name = !field_name; + value = !field_value; + inline = !field_inline; + } + : field) + ) +) +let field_of_string s = + read_field (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__8 = ( + Atdgen_runtime.Oj_run.write_list ( + write_field + ) +) +let string_of__8 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__8 ob x; + Bi_outbuf.contents ob +let read__8 = ( + Atdgen_runtime.Oj_run.read_list ( + read_field + ) +) +let _8_of_string s = + read__8 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__9 = ( + Atdgen_runtime.Oj_run.write_option ( + write__8 + ) +) +let string_of__9 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__9 ob x; + Bi_outbuf.contents ob +let read__9 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read__8 + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read__8 + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _9_of_string s = + read__9 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__7 = ( + Atdgen_runtime.Oj_run.write_option ( + write_provider + ) +) +let string_of__7 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__7 ob x; + Bi_outbuf.contents ob +let read__7 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_provider + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_provider + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _7_of_string s = + read__7 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__6 = ( + Atdgen_runtime.Oj_run.write_option ( + write_video + ) +) +let string_of__6 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__6 ob x; + Bi_outbuf.contents ob +let read__6 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_video + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_video + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _6_of_string s = + read__6 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__5 = ( + Atdgen_runtime.Oj_run.write_option ( + write_image + ) +) +let string_of__5 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__5 ob x; + Bi_outbuf.contents ob +let read__5 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_image + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_image + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _5_of_string s = + read__5 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__4 = ( + Atdgen_runtime.Oj_run.write_option ( + write_footer + ) +) +let string_of__4 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__4 ob x; + Bi_outbuf.contents ob +let read__4 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_footer + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_footer + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _4_of_string s = + read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + (match x.title with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"title\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.kind with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"kind\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.description with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"description\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.url with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"url\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.timestamp with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"timestamp\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.colour with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"colour\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + (match x.footer with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"footer\":"; + ( + write_footer + ) + ob x; + ); + (match x.image with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"image\":"; + ( + write_image + ) + ob x; + ); + (match x.thumbnail with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"thumbnail\":"; + ( + write_image + ) + ob x; + ); + (match x.video with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"video\":"; + ( + write_video + ) + ob x; + ); + (match x.provider with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"provider\":"; + ( + write_provider + ) + ob x; + ); + (match x.fields with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"fields\":"; + ( + write__8 + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_title = ref (None) in + let field_kind = ref (None) in + let field_description = ref (None) in + let field_url = ref (None) in + let field_timestamp = ref (None) in + let field_colour = ref (None) in + let field_footer = ref (None) in + let field_image = ref (None) in + let field_thumbnail = ref (None) in + let field_video = ref (None) in + let field_provider = ref (None) in + let field_fields = ref (None) in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 3 + ) + else ( + -1 + ) + ) + | 4 -> ( + if String.unsafe_get s pos = 'k' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'd' then ( + 1 + ) + else ( + -1 + ) + ) + | 5 -> ( + match String.unsafe_get s pos with + | 'i' -> ( + if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' then ( + 7 + ) + else ( + -1 + ) + ) + | 't' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'e' then ( + 0 + ) + else ( + -1 + ) + ) + | 'v' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'o' then ( + 9 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 6 -> ( + match String.unsafe_get s pos with + | 'c' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'o' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'r' then ( + 5 + ) + else ( + -1 + ) + ) + | 'f' -> ( + match String.unsafe_get s (pos+1) with + | 'i' -> ( + if String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = 's' then ( + 11 + ) + else ( + -1 + ) + ) + | 'o' -> ( + if String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' then ( + 6 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'v' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'r' then ( + 10 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 't' then ( + match String.unsafe_get s (pos+1) with + | 'h' -> ( + if String.unsafe_get s (pos+2) = 'u' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'b' && String.unsafe_get s (pos+5) = 'n' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'l' then ( + 8 + ) + else ( + -1 + ) + ) + | 'i' -> ( + if String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'p' then ( + 4 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + else ( + -1 + ) + ) + | 11 -> ( + if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'p' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_title := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_kind := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_description := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 4 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_timestamp := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 5 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_colour := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 6 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_footer := ( + Some ( + ( + read_footer + ) p lb + ) + ); + ) + | 7 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_image := ( + Some ( + ( + read_image + ) p lb + ) + ); + ) + | 8 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_thumbnail := ( + Some ( + ( + read_image + ) p lb + ) + ); + ) + | 9 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_video := ( + Some ( + ( + read_video + ) p lb + ) + ); + ) + | 10 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_provider := ( + Some ( + ( + read_provider + ) p lb + ) + ); + ) + | 11 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_fields := ( + Some ( + ( + read__8 + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 3 + ) + else ( + -1 + ) + ) + | 4 -> ( + if String.unsafe_get s pos = 'k' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'd' then ( + 1 + ) + else ( + -1 + ) + ) + | 5 -> ( + match String.unsafe_get s pos with + | 'i' -> ( + if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' then ( + 7 + ) + else ( + -1 + ) + ) + | 't' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'e' then ( + 0 + ) + else ( + -1 + ) + ) + | 'v' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'o' then ( + 9 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 6 -> ( + match String.unsafe_get s pos with + | 'c' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'o' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'r' then ( + 5 + ) + else ( + -1 + ) + ) + | 'f' -> ( + match String.unsafe_get s (pos+1) with + | 'i' -> ( + if String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = 's' then ( + 11 + ) + else ( + -1 + ) + ) + | 'o' -> ( + if String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' then ( + 6 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'v' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'r' then ( + 10 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 't' then ( + match String.unsafe_get s (pos+1) with + | 'h' -> ( + if String.unsafe_get s (pos+2) = 'u' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'b' && String.unsafe_get s (pos+5) = 'n' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'l' then ( + 8 + ) + else ( + -1 + ) + ) + | 'i' -> ( + if String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'p' then ( + 4 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + else ( + -1 + ) + ) + | 11 -> ( + if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'p' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_title := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_kind := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_description := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 4 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_timestamp := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 5 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_colour := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 6 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_footer := ( + Some ( + ( + read_footer + ) p lb + ) + ); + ) + | 7 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_image := ( + Some ( + ( + read_image + ) p lb + ) + ); + ) + | 8 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_thumbnail := ( + Some ( + ( + read_image + ) p lb + ) + ); + ) + | 9 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_video := ( + Some ( + ( + read_video + ) p lb + ) + ); + ) + | 10 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_provider := ( + Some ( + ( + read_provider + ) p lb + ) + ); + ) + | 11 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_fields := ( + Some ( + ( + read__8 + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + ( + { + title = !field_title; + kind = !field_kind; + description = !field_description; + url = !field_url; + timestamp = !field_timestamp; + colour = !field_colour; + footer = !field_footer; + image = !field_image; + thumbnail = !field_thumbnail; + video = !field_video; + provider = !field_provider; + fields = !field_fields; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/embed_j.mli b/lib/models/embed_j.mli new file mode 100644 index 0000000..8872d89 --- /dev/null +++ b/lib/models/embed_j.mli @@ -0,0 +1,168 @@ +(* Auto-generated from "embed.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type video = Embed_t.video = { + url: string option; + height: int option; + width: int option +} + +type provider = Embed_t.provider = { + name: string option; + url: string option +} + +type image = Embed_t.image = { + url: string option; + proxy_url: string option; + height: int option; + width: int option +} + +type footer = Embed_t.footer = { + text: string; + icon_url: string option; + proxy_icon_url: string option +} + +type field = Embed_t.field = { + name: string; + value: string; + inline: bool option +} + +type t = Embed_t.t = { + title: string option; + kind: string option; + description: string option; + url: string option; + timestamp: string option; + colour: int option; + footer: footer option; + image: image option; + thumbnail: image option; + video: video option; + provider: provider option; + fields: field list option +} + +val write_video : + Bi_outbuf.t -> video -> unit + (** Output a JSON value of type {!video}. *) + +val string_of_video : + ?len:int -> video -> string + (** Serialize a value of type {!video} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_video : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> video + (** Input JSON data of type {!video}. *) + +val video_of_string : + string -> video + (** Deserialize JSON data of type {!video}. *) + +val write_provider : + Bi_outbuf.t -> provider -> unit + (** Output a JSON value of type {!provider}. *) + +val string_of_provider : + ?len:int -> provider -> string + (** Serialize a value of type {!provider} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_provider : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> provider + (** Input JSON data of type {!provider}. *) + +val provider_of_string : + string -> provider + (** Deserialize JSON data of type {!provider}. *) + +val write_image : + Bi_outbuf.t -> image -> unit + (** Output a JSON value of type {!image}. *) + +val string_of_image : + ?len:int -> image -> string + (** Serialize a value of type {!image} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_image : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> image + (** Input JSON data of type {!image}. *) + +val image_of_string : + string -> image + (** Deserialize JSON data of type {!image}. *) + +val write_footer : + Bi_outbuf.t -> footer -> unit + (** Output a JSON value of type {!footer}. *) + +val string_of_footer : + ?len:int -> footer -> string + (** Serialize a value of type {!footer} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_footer : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> footer + (** Input JSON data of type {!footer}. *) + +val footer_of_string : + string -> footer + (** Deserialize JSON data of type {!footer}. *) + +val write_field : + Bi_outbuf.t -> field -> unit + (** Output a JSON value of type {!field}. *) + +val string_of_field : + ?len:int -> field -> string + (** Serialize a value of type {!field} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_field : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> field + (** Input JSON data of type {!field}. *) + +val field_of_string : + string -> field + (** Deserialize JSON data of type {!field}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/embed_t.ml b/lib/models/embed_t.ml new file mode 100644 index 0000000..9eb5059 --- /dev/null +++ b/lib/models/embed_t.ml @@ -0,0 +1,36 @@ +(* Auto-generated from "embed.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type video = { url: string option; height: int option; width: int option } + +type provider = { name: string option; url: string option } + +type image = { + url: string option; + proxy_url: string option; + height: int option; + width: int option +} + +type footer = { + text: string; + icon_url: string option; + proxy_icon_url: string option +} + +type field = { name: string; value: string; inline: bool option } + +type t = { + title: string option; + kind: string option; + description: string option; + url: string option; + timestamp: string option; + colour: int option; + footer: footer option; + image: image option; + thumbnail: image option; + video: video option; + provider: provider option; + fields: field list option +} diff --git a/lib/models/embed_t.mli b/lib/models/embed_t.mli new file mode 100644 index 0000000..9eb5059 --- /dev/null +++ b/lib/models/embed_t.mli @@ -0,0 +1,36 @@ +(* Auto-generated from "embed.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type video = { url: string option; height: int option; width: int option } + +type provider = { name: string option; url: string option } + +type image = { + url: string option; + proxy_url: string option; + height: int option; + width: int option +} + +type footer = { + text: string; + icon_url: string option; + proxy_icon_url: string option +} + +type field = { name: string; value: string; inline: bool option } + +type t = { + title: string option; + kind: string option; + description: string option; + url: string option; + timestamp: string option; + colour: int option; + footer: footer option; + image: image option; + thumbnail: image option; + video: video option; + provider: provider option; + fields: field list option +} diff --git a/lib/models/emoji.atd b/lib/models/emoji.atd new file mode 100644 index 0000000..877323b --- /dev/null +++ b/lib/models/emoji.atd @@ -0,0 +1,12 @@ +type snowflake <ocaml from="Snowflake" t="t"> = abstract +type user <ocaml from="User" t="t"> = abstract + +type t = { + ?id: snowflake option; + name: string; + ?roles: snowflake list option; + ?user: user option; + ?require_colons: bool option; + ?managed: bool option; + ?animated: bool option; +}
\ No newline at end of file diff --git a/lib/models/emoji.ml b/lib/models/emoji.ml deleted file mode 100644 index cfbfe64..0000000 --- a/lib/models/emoji.ml +++ /dev/null @@ -1,9 +0,0 @@ -type t = { - id: Snowflake.t; - name: string; - roles: (Role.t list) option; - user: User.t option; - require_colons: bool option; - managed: bool; - animated: bool; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/emoji_j.ml b/lib/models/emoji_j.ml new file mode 100644 index 0000000..d621de2 --- /dev/null +++ b/lib/models/emoji_j.ml @@ -0,0 +1,701 @@ +(* Auto-generated from "emoji.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = Emoji_t.t = { + id: snowflake option; + name: string; + roles: snowflake list option; + user: user option; + require_colons: bool option; + managed: bool option; + animated: bool option +} + +let write_user = ( + User_j.write_t +) +let string_of_user ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_user ob x; + Bi_outbuf.contents ob +let read_user = ( + User_j.read_t +) +let user_of_string s = + read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_snowflake = ( + Snowflake_j.write_t +) +let string_of_snowflake ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_snowflake ob x; + Bi_outbuf.contents ob +let read_snowflake = ( + Snowflake_j.read_t +) +let snowflake_of_string s = + read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__5 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_bool + ) +) +let string_of__5 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__5 ob x; + Bi_outbuf.contents ob +let read__5 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _5_of_string s = + read__5 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__4 = ( + Atdgen_runtime.Oj_run.write_option ( + write_user + ) +) +let string_of__4 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__4 ob x; + Bi_outbuf.contents ob +let read__4 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_user + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_user + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _4_of_string s = + read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__2 = ( + Atdgen_runtime.Oj_run.write_list ( + write_snowflake + ) +) +let string_of__2 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__2 ob x; + Bi_outbuf.contents ob +let read__2 = ( + Atdgen_runtime.Oj_run.read_list ( + read_snowflake + ) +) +let _2_of_string s = + read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__3 = ( + Atdgen_runtime.Oj_run.write_option ( + write__2 + ) +) +let string_of__3 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__3 ob x; + Bi_outbuf.contents ob +let read__3 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read__2 + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read__2 + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _3_of_string s = + read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + write_snowflake + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_snowflake + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_snowflake + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + (match x.id with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"id\":"; + ( + write_snowflake + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"name\":"; + ( + Yojson.Safe.write_string + ) + ob x.name; + (match x.roles with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"roles\":"; + ( + write__2 + ) + ob x; + ); + (match x.user with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"user\":"; + ( + write_user + ) + ob x; + ); + (match x.require_colons with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"require_colons\":"; + ( + Yojson.Safe.write_bool + ) + ob x; + ); + (match x.managed with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"managed\":"; + ( + Yojson.Safe.write_bool + ) + ob x; + ); + (match x.animated with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"animated\":"; + ( + Yojson.Safe.write_bool + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_id = ref (None) in + let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_roles = ref (None) in + let field_user = ref (None) in + let field_require_colons = ref (None) in + let field_managed = ref (None) in + let field_animated = ref (None) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 4 -> ( + match String.unsafe_get s pos with + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | 'u' -> ( + if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then ( + 3 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 2 + ) + else ( + -1 + ) + ) + | 7 -> ( + if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'g' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'd' then ( + 5 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'd' then ( + 6 + ) + else ( + -1 + ) + ) + | 14 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'q' && String.unsafe_get s (pos+3) = 'u' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'c' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = 'o' && String.unsafe_get s (pos+12) = 'n' && String.unsafe_get s (pos+13) = 's' then ( + 4 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 1 -> + field_name := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_roles := ( + Some ( + ( + read__2 + ) p lb + ) + ); + ) + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_user := ( + Some ( + ( + read_user + ) p lb + ) + ); + ) + | 4 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_require_colons := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 5 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_managed := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 6 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_animated := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 4 -> ( + match String.unsafe_get s pos with + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | 'u' -> ( + if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then ( + 3 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 2 + ) + else ( + -1 + ) + ) + | 7 -> ( + if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'g' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'd' then ( + 5 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'd' then ( + 6 + ) + else ( + -1 + ) + ) + | 14 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'q' && String.unsafe_get s (pos+3) = 'u' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'c' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = 'o' && String.unsafe_get s (pos+12) = 'n' && String.unsafe_get s (pos+13) = 's' then ( + 4 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 1 -> + field_name := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_roles := ( + Some ( + ( + read__2 + ) p lb + ) + ); + ) + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_user := ( + Some ( + ( + read_user + ) p lb + ) + ); + ) + | 4 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_require_colons := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 5 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_managed := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 6 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_animated := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "name" |]; + ( + { + id = !field_id; + name = !field_name; + roles = !field_roles; + user = !field_user; + require_colons = !field_require_colons; + managed = !field_managed; + animated = !field_animated; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/emoji_j.mli b/lib/models/emoji_j.mli new file mode 100644 index 0000000..596deeb --- /dev/null +++ b/lib/models/emoji_j.mli @@ -0,0 +1,77 @@ +(* Auto-generated from "emoji.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = Emoji_t.t = { + id: snowflake option; + name: string; + roles: snowflake list option; + user: user option; + require_colons: bool option; + managed: bool option; + animated: bool option +} + +val write_user : + Bi_outbuf.t -> user -> unit + (** Output a JSON value of type {!user}. *) + +val string_of_user : + ?len:int -> user -> string + (** Serialize a value of type {!user} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> user + (** Input JSON data of type {!user}. *) + +val user_of_string : + string -> user + (** Deserialize JSON data of type {!user}. *) + +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) + +val string_of_snowflake : + ?len:int -> snowflake -> string + (** Serialize a value of type {!snowflake} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) + +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/emoji_t.ml b/lib/models/emoji_t.ml new file mode 100644 index 0000000..333939d --- /dev/null +++ b/lib/models/emoji_t.ml @@ -0,0 +1,16 @@ +(* Auto-generated from "emoji.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = { + id: snowflake option; + name: string; + roles: snowflake list option; + user: user option; + require_colons: bool option; + managed: bool option; + animated: bool option +} diff --git a/lib/models/emoji_t.mli b/lib/models/emoji_t.mli new file mode 100644 index 0000000..333939d --- /dev/null +++ b/lib/models/emoji_t.mli @@ -0,0 +1,16 @@ +(* Auto-generated from "emoji.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = { + id: snowflake option; + name: string; + roles: snowflake list option; + user: user option; + require_colons: bool option; + managed: bool option; + animated: bool option +} diff --git a/lib/models/guild.atd b/lib/models/guild.atd new file mode 100644 index 0000000..c622eea --- /dev/null +++ b/lib/models/guild.atd @@ -0,0 +1,36 @@ +type snowflake <ocaml from="Snowflake" t="t"> = abstract +type user <ocaml from="User" t="t"> = abstract +type member <ocaml from="Member" t="t"> = abstract +type role <ocaml from="Role" t="t"> = abstract +type channel <ocaml from="Channel" t="t"> = abstract +type emoji <ocaml from="Emoji" t="t"> = abstract + + +type t = { + id: snowflake; + name: string; + ?icon: string option; + ?splash: string option; + owner_id: snowflake; + region: string; + ?afk_channel_id: snowflake option; + afk_timeout: int; + ?embed_enabled: bool option; + ?embed_channel_id: snowflake option; + verification_level: int; + default_message_notifications: int; + explicit_content_filter: int; + roles: role list; + emojis: emoji list; + features: string list; + mfa_level: int; + ?application_id: snowflake option; + ?widget_enabled: bool option; + ?widget_channel: channel option; + ?system_channel: channel option; + ?large: bool option; + ?unavailable: bool option; + ?member_count: int option; + ?members: member list option; + ?channels: channel list option; +}
\ No newline at end of file diff --git a/lib/models/guild.ml b/lib/models/guild.ml deleted file mode 100644 index 5f5855b..0000000 --- a/lib/models/guild.ml +++ /dev/null @@ -1,28 +0,0 @@ -type t = { - id: Snowflake.t; - name: string; - icon: string; - splash: string; - owner: User.t; - region: string; - afk_channel: Channel.t option; - afk_timeout: int; - embed_enabled: bool; - embed_channel: Channel.t; - verification_level: int; - default_message_notifications: int; - explicit_content_filter: int; - roles: Role.t list; - emojis: Emoji.t list; - features: string list; - mfa_level: int; - application_id: Snowflake.t option; - widget_enabled: bool option; - widget_channel: Channel.t option; - system_channel: Channel.t option; - large: bool; - unavailable: bool; - member_count: int; - members: Member.t list; - channels: Channel.t list; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/guild_j.ml b/lib/models/guild_j.ml new file mode 100644 index 0000000..9f7b069 --- /dev/null +++ b/lib/models/guild_j.ml @@ -0,0 +1,1948 @@ +(* Auto-generated from "guild.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type role = Role_t.t + +type member = Member_t.t + +type emoji = Emoji_t.t + +type channel = Channel_t.t + +type t = Guild_t.t = { + id: snowflake; + name: string; + icon: string option; + splash: string option; + owner_id: snowflake; + region: string; + afk_channel_id: snowflake option; + afk_timeout: int; + embed_enabled: bool option; + embed_channel_id: snowflake option; + verification_level: int; + default_message_notifications: int; + explicit_content_filter: int; + roles: role list; + emojis: emoji list; + features: string list; + mfa_level: int; + application_id: snowflake option; + widget_enabled: bool option; + widget_channel: channel option; + system_channel: channel option; + large: bool option; + unavailable: bool option; + member_count: int option; + members: member list option; + channels: channel list option +} + +let write_user = ( + User_j.write_t +) +let string_of_user ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_user ob x; + Bi_outbuf.contents ob +let read_user = ( + User_j.read_t +) +let user_of_string s = + read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_snowflake = ( + Snowflake_j.write_t +) +let string_of_snowflake ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_snowflake ob x; + Bi_outbuf.contents ob +let read_snowflake = ( + Snowflake_j.read_t +) +let snowflake_of_string s = + read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_role = ( + Role_j.write_t +) +let string_of_role ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_role ob x; + Bi_outbuf.contents ob +let read_role = ( + Role_j.read_t +) +let role_of_string s = + read_role (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_member = ( + Member_j.write_t +) +let string_of_member ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_member ob x; + Bi_outbuf.contents ob +let read_member = ( + Member_j.read_t +) +let member_of_string s = + read_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_emoji = ( + Emoji_j.write_t +) +let string_of_emoji ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_emoji ob x; + Bi_outbuf.contents ob +let read_emoji = ( + Emoji_j.read_t +) +let emoji_of_string s = + read_emoji (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_channel = ( + Channel_j.write_t +) +let string_of_channel ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_channel ob x; + Bi_outbuf.contents ob +let read_channel = ( + Channel_j.read_t +) +let channel_of_string s = + read_channel (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__9 = ( + Atdgen_runtime.Oj_run.write_list ( + write_member + ) +) +let string_of__9 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__9 ob x; + Bi_outbuf.contents ob +let read__9 = ( + Atdgen_runtime.Oj_run.read_list ( + read_member + ) +) +let _9_of_string s = + read__9 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__8 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_int + ) +) +let string_of__8 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__8 ob x; + Bi_outbuf.contents ob +let read__8 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_int + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_int + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _8_of_string s = + read__8 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__7 = ( + Atdgen_runtime.Oj_run.write_option ( + write_channel + ) +) +let string_of__7 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__7 ob x; + Bi_outbuf.contents ob +let read__7 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_channel + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_channel + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _7_of_string s = + read__7 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__6 = ( + Atdgen_runtime.Oj_run.write_list ( + Yojson.Safe.write_string + ) +) +let string_of__6 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__6 ob x; + Bi_outbuf.contents ob +let read__6 = ( + Atdgen_runtime.Oj_run.read_list ( + Atdgen_runtime.Oj_run.read_string + ) +) +let _6_of_string s = + read__6 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__5 = ( + Atdgen_runtime.Oj_run.write_list ( + write_emoji + ) +) +let string_of__5 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__5 ob x; + Bi_outbuf.contents ob +let read__5 = ( + Atdgen_runtime.Oj_run.read_list ( + read_emoji + ) +) +let _5_of_string s = + read__5 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__4 = ( + Atdgen_runtime.Oj_run.write_list ( + write_role + ) +) +let string_of__4 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__4 ob x; + Bi_outbuf.contents ob +let read__4 = ( + Atdgen_runtime.Oj_run.read_list ( + read_role + ) +) +let _4_of_string s = + read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__3 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_bool + ) +) +let string_of__3 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__3 ob x; + Bi_outbuf.contents ob +let read__3 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _3_of_string s = + read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__2 = ( + Atdgen_runtime.Oj_run.write_option ( + write_snowflake + ) +) +let string_of__2 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__2 ob x; + Bi_outbuf.contents ob +let read__2 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_snowflake + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_snowflake + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _2_of_string s = + read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__11 = ( + Atdgen_runtime.Oj_run.write_list ( + write_channel + ) +) +let string_of__11 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__11 ob x; + Bi_outbuf.contents ob +let read__11 = ( + Atdgen_runtime.Oj_run.read_list ( + read_channel + ) +) +let _11_of_string s = + read__11 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__12 = ( + Atdgen_runtime.Oj_run.write_option ( + write__11 + ) +) +let string_of__12 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__12 ob x; + Bi_outbuf.contents ob +let read__12 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read__11 + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read__11 + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _12_of_string s = + read__12 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__10 = ( + Atdgen_runtime.Oj_run.write_option ( + write__9 + ) +) +let string_of__10 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__10 ob x; + Bi_outbuf.contents ob +let read__10 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read__9 + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read__9 + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _10_of_string s = + read__10 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_string + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"id\":"; + ( + write_snowflake + ) + ob x.id; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"name\":"; + ( + Yojson.Safe.write_string + ) + ob x.name; + (match x.icon with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"icon\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + (match x.splash with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"splash\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"owner_id\":"; + ( + write_snowflake + ) + ob x.owner_id; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"region\":"; + ( + Yojson.Safe.write_string + ) + ob x.region; + (match x.afk_channel_id with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"afk_channel_id\":"; + ( + write_snowflake + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"afk_timeout\":"; + ( + Yojson.Safe.write_int + ) + ob x.afk_timeout; + (match x.embed_enabled with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"embed_enabled\":"; + ( + Yojson.Safe.write_bool + ) + ob x; + ); + (match x.embed_channel_id with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"embed_channel_id\":"; + ( + write_snowflake + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"verification_level\":"; + ( + Yojson.Safe.write_int + ) + ob x.verification_level; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"default_message_notifications\":"; + ( + Yojson.Safe.write_int + ) + ob x.default_message_notifications; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"explicit_content_filter\":"; + ( + Yojson.Safe.write_int + ) + ob x.explicit_content_filter; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"roles\":"; + ( + write__4 + ) + ob x.roles; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"emojis\":"; + ( + write__5 + ) + ob x.emojis; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"features\":"; + ( + write__6 + ) + ob x.features; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"mfa_level\":"; + ( + Yojson.Safe.write_int + ) + ob x.mfa_level; + (match x.application_id with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"application_id\":"; + ( + write_snowflake + ) + ob x; + ); + (match x.widget_enabled with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"widget_enabled\":"; + ( + Yojson.Safe.write_bool + ) + ob x; + ); + (match x.widget_channel with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"widget_channel\":"; + ( + write_channel + ) + ob x; + ); + (match x.system_channel with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"system_channel\":"; + ( + write_channel + ) + ob x; + ); + (match x.large with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"large\":"; + ( + Yojson.Safe.write_bool + ) + ob x; + ); + (match x.unavailable with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"unavailable\":"; + ( + Yojson.Safe.write_bool + ) + ob x; + ); + (match x.member_count with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"member_count\":"; + ( + Yojson.Safe.write_int + ) + ob x; + ); + (match x.members with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"members\":"; + ( + write__9 + ) + ob x; + ); + (match x.channels with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"channels\":"; + ( + write__11 + ) + ob x; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_icon = ref (None) in + let field_splash = ref (None) in + let field_owner_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_region = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_afk_channel_id = ref (None) in + let field_afk_timeout = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_embed_enabled = ref (None) in + let field_embed_channel_id = ref (None) in + let field_verification_level = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_default_message_notifications = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_explicit_content_filter = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_emojis = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_features = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_mfa_level = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_application_id = ref (None) in + let field_widget_enabled = ref (None) in + let field_widget_channel = ref (None) in + let field_system_channel = ref (None) in + let field_large = ref (None) in + let field_unavailable = ref (None) in + let field_member_count = ref (None) in + let field_members = ref (None) in + let field_channels = ref (None) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 4 -> ( + match String.unsafe_get s pos with + | 'i' -> ( + if String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' then ( + 2 + ) + else ( + -1 + ) + ) + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + match String.unsafe_get s pos with + | 'l' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' then ( + 21 + ) + else ( + -1 + ) + ) + | 'r' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 13 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 6 -> ( + match String.unsafe_get s pos with + | 'e' -> ( + if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'j' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 's' then ( + 14 + ) + else ( + -1 + ) + ) + | 'r' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'g' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'n' then ( + 5 + ) + else ( + -1 + ) + ) + | 's' -> ( + if String.unsafe_get s (pos+1) = 'p' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 'h' then ( + 3 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 7 -> ( + if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 's' then ( + 24 + ) + else ( + -1 + ) + ) + | 8 -> ( + match String.unsafe_get s pos with + | 'c' -> ( + if String.unsafe_get s (pos+1) = 'h' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = 's' then ( + 25 + ) + else ( + -1 + ) + ) + | 'f' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 's' then ( + 15 + ) + else ( + -1 + ) + ) + | 'o' -> ( + if String.unsafe_get s (pos+1) = 'w' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 4 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'f' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 'l' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'v' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'l' then ( + 16 + ) + else ( + -1 + ) + ) + | 11 -> ( + match String.unsafe_get s pos with + | 'a' -> ( + if String.unsafe_get s (pos+1) = 'f' && String.unsafe_get s (pos+2) = 'k' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'u' && String.unsafe_get s (pos+10) = 't' then ( + 7 + ) + else ( + -1 + ) + ) + | 'u' -> ( + if String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'v' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 'b' && String.unsafe_get s (pos+9) = 'l' && String.unsafe_get s (pos+10) = 'e' then ( + 22 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 12 -> ( + if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'u' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 't' then ( + 23 + ) + else ( + -1 + ) + ) + | 13 -> ( + if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 'a' && String.unsafe_get s (pos+9) = 'b' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = 'e' && String.unsafe_get s (pos+12) = 'd' then ( + 8 + ) + else ( + -1 + ) + ) + | 14 -> ( + match String.unsafe_get s pos with + | 'a' -> ( + match String.unsafe_get s (pos+1) with + | 'f' -> ( + if String.unsafe_get s (pos+2) = 'k' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 'c' && String.unsafe_get s (pos+5) = 'h' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'e' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then ( + 6 + ) + else ( + -1 + ) + ) + | 'p' -> ( + if String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then ( + 17 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 's' -> ( + if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'm' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'h' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'l' then ( + 20 + ) + else ( + -1 + ) + ) + | 'w' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = '_' then ( + match String.unsafe_get s (pos+7) with + | 'c' -> ( + if String.unsafe_get s (pos+8) = 'h' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'l' then ( + 19 + ) + else ( + -1 + ) + ) + | 'e' -> ( + if String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'b' && String.unsafe_get s (pos+11) = 'l' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'd' then ( + 18 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 16 -> ( + if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'c' && String.unsafe_get s (pos+7) = 'h' && String.unsafe_get s (pos+8) = 'a' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'e' && String.unsafe_get s (pos+12) = 'l' && String.unsafe_get s (pos+13) = '_' && String.unsafe_get s (pos+14) = 'i' && String.unsafe_get s (pos+15) = 'd' then ( + 9 + ) + else ( + -1 + ) + ) + | 18 -> ( + if String.unsafe_get s pos = 'v' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'f' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'c' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 'i' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = '_' && String.unsafe_get s (pos+13) = 'l' && String.unsafe_get s (pos+14) = 'e' && String.unsafe_get s (pos+15) = 'v' && String.unsafe_get s (pos+16) = 'e' && String.unsafe_get s (pos+17) = 'l' then ( + 10 + ) + else ( + -1 + ) + ) + | 23 -> ( + if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'x' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = '_' && String.unsafe_get s (pos+9) = 'c' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 't' && String.unsafe_get s (pos+13) = 'e' && String.unsafe_get s (pos+14) = 'n' && String.unsafe_get s (pos+15) = 't' && String.unsafe_get s (pos+16) = '_' && String.unsafe_get s (pos+17) = 'f' && String.unsafe_get s (pos+18) = 'i' && String.unsafe_get s (pos+19) = 'l' && String.unsafe_get s (pos+20) = 't' && String.unsafe_get s (pos+21) = 'e' && String.unsafe_get s (pos+22) = 'r' then ( + 12 + ) + else ( + -1 + ) + ) + | 29 -> ( + if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'f' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'l' && String.unsafe_get s (pos+6) = 't' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'm' && String.unsafe_get s (pos+9) = 'e' && String.unsafe_get s (pos+10) = 's' && String.unsafe_get s (pos+11) = 's' && String.unsafe_get s (pos+12) = 'a' && String.unsafe_get s (pos+13) = 'g' && String.unsafe_get s (pos+14) = 'e' && String.unsafe_get s (pos+15) = '_' && String.unsafe_get s (pos+16) = 'n' && String.unsafe_get s (pos+17) = 'o' && String.unsafe_get s (pos+18) = 't' && String.unsafe_get s (pos+19) = 'i' && String.unsafe_get s (pos+20) = 'f' && String.unsafe_get s (pos+21) = 'i' && String.unsafe_get s (pos+22) = 'c' && String.unsafe_get s (pos+23) = 'a' && String.unsafe_get s (pos+24) = 't' && String.unsafe_get s (pos+25) = 'i' && String.unsafe_get s (pos+26) = 'o' && String.unsafe_get s (pos+27) = 'n' && String.unsafe_get s (pos+28) = 's' then ( + 11 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_name := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_icon := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_splash := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 4 -> + field_owner_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 5 -> + field_region := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 6 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_afk_channel_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 7 -> + field_afk_timeout := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x10; + | 8 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_embed_enabled := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 9 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_embed_channel_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 10 -> + field_verification_level := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x20; + | 11 -> + field_default_message_notifications := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x40; + | 12 -> + field_explicit_content_filter := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x80; + | 13 -> + field_roles := ( + ( + read__4 + ) p lb + ); + bits0 := !bits0 lor 0x100; + | 14 -> + field_emojis := ( + ( + read__5 + ) p lb + ); + bits0 := !bits0 lor 0x200; + | 15 -> + field_features := ( + ( + read__6 + ) p lb + ); + bits0 := !bits0 lor 0x400; + | 16 -> + field_mfa_level := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x800; + | 17 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_application_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 18 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_widget_enabled := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 19 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_widget_channel := ( + Some ( + ( + read_channel + ) p lb + ) + ); + ) + | 20 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_system_channel := ( + Some ( + ( + read_channel + ) p lb + ) + ); + ) + | 21 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_large := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 22 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_unavailable := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 23 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_member_count := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 24 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_members := ( + Some ( + ( + read__9 + ) p lb + ) + ); + ) + | 25 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_channels := ( + Some ( + ( + read__11 + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 4 -> ( + match String.unsafe_get s pos with + | 'i' -> ( + if String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' then ( + 2 + ) + else ( + -1 + ) + ) + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + match String.unsafe_get s pos with + | 'l' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' then ( + 21 + ) + else ( + -1 + ) + ) + | 'r' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 13 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 6 -> ( + match String.unsafe_get s pos with + | 'e' -> ( + if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'j' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 's' then ( + 14 + ) + else ( + -1 + ) + ) + | 'r' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'g' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'n' then ( + 5 + ) + else ( + -1 + ) + ) + | 's' -> ( + if String.unsafe_get s (pos+1) = 'p' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 'h' then ( + 3 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 7 -> ( + if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 's' then ( + 24 + ) + else ( + -1 + ) + ) + | 8 -> ( + match String.unsafe_get s pos with + | 'c' -> ( + if String.unsafe_get s (pos+1) = 'h' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = 's' then ( + 25 + ) + else ( + -1 + ) + ) + | 'f' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 's' then ( + 15 + ) + else ( + -1 + ) + ) + | 'o' -> ( + if String.unsafe_get s (pos+1) = 'w' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 4 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'f' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 'l' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'v' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'l' then ( + 16 + ) + else ( + -1 + ) + ) + | 11 -> ( + match String.unsafe_get s pos with + | 'a' -> ( + if String.unsafe_get s (pos+1) = 'f' && String.unsafe_get s (pos+2) = 'k' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'u' && String.unsafe_get s (pos+10) = 't' then ( + 7 + ) + else ( + -1 + ) + ) + | 'u' -> ( + if String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'v' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 'b' && String.unsafe_get s (pos+9) = 'l' && String.unsafe_get s (pos+10) = 'e' then ( + 22 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 12 -> ( + if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'u' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 't' then ( + 23 + ) + else ( + -1 + ) + ) + | 13 -> ( + if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 'a' && String.unsafe_get s (pos+9) = 'b' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = 'e' && String.unsafe_get s (pos+12) = 'd' then ( + 8 + ) + else ( + -1 + ) + ) + | 14 -> ( + match String.unsafe_get s pos with + | 'a' -> ( + match String.unsafe_get s (pos+1) with + | 'f' -> ( + if String.unsafe_get s (pos+2) = 'k' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 'c' && String.unsafe_get s (pos+5) = 'h' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'e' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then ( + 6 + ) + else ( + -1 + ) + ) + | 'p' -> ( + if String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then ( + 17 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 's' -> ( + if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'm' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'h' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'l' then ( + 20 + ) + else ( + -1 + ) + ) + | 'w' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = '_' then ( + match String.unsafe_get s (pos+7) with + | 'c' -> ( + if String.unsafe_get s (pos+8) = 'h' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'l' then ( + 19 + ) + else ( + -1 + ) + ) + | 'e' -> ( + if String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'b' && String.unsafe_get s (pos+11) = 'l' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'd' then ( + 18 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 16 -> ( + if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'c' && String.unsafe_get s (pos+7) = 'h' && String.unsafe_get s (pos+8) = 'a' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'e' && String.unsafe_get s (pos+12) = 'l' && String.unsafe_get s (pos+13) = '_' && String.unsafe_get s (pos+14) = 'i' && String.unsafe_get s (pos+15) = 'd' then ( + 9 + ) + else ( + -1 + ) + ) + | 18 -> ( + if String.unsafe_get s pos = 'v' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'f' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'c' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 'i' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = '_' && String.unsafe_get s (pos+13) = 'l' && String.unsafe_get s (pos+14) = 'e' && String.unsafe_get s (pos+15) = 'v' && String.unsafe_get s (pos+16) = 'e' && String.unsafe_get s (pos+17) = 'l' then ( + 10 + ) + else ( + -1 + ) + ) + | 23 -> ( + if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'x' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = '_' && String.unsafe_get s (pos+9) = 'c' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 't' && String.unsafe_get s (pos+13) = 'e' && String.unsafe_get s (pos+14) = 'n' && String.unsafe_get s (pos+15) = 't' && String.unsafe_get s (pos+16) = '_' && String.unsafe_get s (pos+17) = 'f' && String.unsafe_get s (pos+18) = 'i' && String.unsafe_get s (pos+19) = 'l' && String.unsafe_get s (pos+20) = 't' && String.unsafe_get s (pos+21) = 'e' && String.unsafe_get s (pos+22) = 'r' then ( + 12 + ) + else ( + -1 + ) + ) + | 29 -> ( + if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'f' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'l' && String.unsafe_get s (pos+6) = 't' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'm' && String.unsafe_get s (pos+9) = 'e' && String.unsafe_get s (pos+10) = 's' && String.unsafe_get s (pos+11) = 's' && String.unsafe_get s (pos+12) = 'a' && String.unsafe_get s (pos+13) = 'g' && String.unsafe_get s (pos+14) = 'e' && String.unsafe_get s (pos+15) = '_' && String.unsafe_get s (pos+16) = 'n' && String.unsafe_get s (pos+17) = 'o' && String.unsafe_get s (pos+18) = 't' && String.unsafe_get s (pos+19) = 'i' && String.unsafe_get s (pos+20) = 'f' && String.unsafe_get s (pos+21) = 'i' && String.unsafe_get s (pos+22) = 'c' && String.unsafe_get s (pos+23) = 'a' && String.unsafe_get s (pos+24) = 't' && String.unsafe_get s (pos+25) = 'i' && String.unsafe_get s (pos+26) = 'o' && String.unsafe_get s (pos+27) = 'n' && String.unsafe_get s (pos+28) = 's' then ( + 11 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_name := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_icon := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_splash := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 4 -> + field_owner_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 5 -> + field_region := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 6 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_afk_channel_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 7 -> + field_afk_timeout := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x10; + | 8 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_embed_enabled := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 9 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_embed_channel_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 10 -> + field_verification_level := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x20; + | 11 -> + field_default_message_notifications := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x40; + | 12 -> + field_explicit_content_filter := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x80; + | 13 -> + field_roles := ( + ( + read__4 + ) p lb + ); + bits0 := !bits0 lor 0x100; + | 14 -> + field_emojis := ( + ( + read__5 + ) p lb + ); + bits0 := !bits0 lor 0x200; + | 15 -> + field_features := ( + ( + read__6 + ) p lb + ); + bits0 := !bits0 lor 0x400; + | 16 -> + field_mfa_level := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x800; + | 17 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_application_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 18 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_widget_enabled := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 19 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_widget_channel := ( + Some ( + ( + read_channel + ) p lb + ) + ); + ) + | 20 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_system_channel := ( + Some ( + ( + read_channel + ) p lb + ) + ); + ) + | 21 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_large := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 22 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_unavailable := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ) + ); + ) + | 23 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_member_count := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ) + ); + ) + | 24 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_members := ( + Some ( + ( + read__9 + ) p lb + ) + ); + ) + | 25 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_channels := ( + Some ( + ( + read__11 + ) p lb + ) + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0xfff then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "name"; "owner_id"; "region"; "afk_timeout"; "verification_level"; "default_message_notifications"; "explicit_content_filter"; "roles"; "emojis"; "features"; "mfa_level" |]; + ( + { + id = !field_id; + name = !field_name; + icon = !field_icon; + splash = !field_splash; + owner_id = !field_owner_id; + region = !field_region; + afk_channel_id = !field_afk_channel_id; + afk_timeout = !field_afk_timeout; + embed_enabled = !field_embed_enabled; + embed_channel_id = !field_embed_channel_id; + verification_level = !field_verification_level; + default_message_notifications = !field_default_message_notifications; + explicit_content_filter = !field_explicit_content_filter; + roles = !field_roles; + emojis = !field_emojis; + features = !field_features; + mfa_level = !field_mfa_level; + application_id = !field_application_id; + widget_enabled = !field_widget_enabled; + widget_channel = !field_widget_channel; + system_channel = !field_system_channel; + large = !field_large; + unavailable = !field_unavailable; + member_count = !field_member_count; + members = !field_members; + channels = !field_channels; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/guild_j.mli b/lib/models/guild_j.mli new file mode 100644 index 0000000..d430b2a --- /dev/null +++ b/lib/models/guild_j.mli @@ -0,0 +1,184 @@ +(* Auto-generated from "guild.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type role = Role_t.t + +type member = Member_t.t + +type emoji = Emoji_t.t + +type channel = Channel_t.t + +type t = Guild_t.t = { + id: snowflake; + name: string; + icon: string option; + splash: string option; + owner_id: snowflake; + region: string; + afk_channel_id: snowflake option; + afk_timeout: int; + embed_enabled: bool option; + embed_channel_id: snowflake option; + verification_level: int; + default_message_notifications: int; + explicit_content_filter: int; + roles: role list; + emojis: emoji list; + features: string list; + mfa_level: int; + application_id: snowflake option; + widget_enabled: bool option; + widget_channel: channel option; + system_channel: channel option; + large: bool option; + unavailable: bool option; + member_count: int option; + members: member list option; + channels: channel list option +} + +val write_user : + Bi_outbuf.t -> user -> unit + (** Output a JSON value of type {!user}. *) + +val string_of_user : + ?len:int -> user -> string + (** Serialize a value of type {!user} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> user + (** Input JSON data of type {!user}. *) + +val user_of_string : + string -> user + (** Deserialize JSON data of type {!user}. *) + +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) + +val string_of_snowflake : + ?len:int -> snowflake -> string + (** Serialize a value of type {!snowflake} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) + +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) + +val write_role : + Bi_outbuf.t -> role -> unit + (** Output a JSON value of type {!role}. *) + +val string_of_role : + ?len:int -> role -> string + (** Serialize a value of type {!role} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_role : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> role + (** Input JSON data of type {!role}. *) + +val role_of_string : + string -> role + (** Deserialize JSON data of type {!role}. *) + +val write_member : + Bi_outbuf.t -> member -> unit + (** Output a JSON value of type {!member}. *) + +val string_of_member : + ?len:int -> member -> string + (** Serialize a value of type {!member} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_member : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> member + (** Input JSON data of type {!member}. *) + +val member_of_string : + string -> member + (** Deserialize JSON data of type {!member}. *) + +val write_emoji : + Bi_outbuf.t -> emoji -> unit + (** Output a JSON value of type {!emoji}. *) + +val string_of_emoji : + ?len:int -> emoji -> string + (** Serialize a value of type {!emoji} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_emoji : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> emoji + (** Input JSON data of type {!emoji}. *) + +val emoji_of_string : + string -> emoji + (** Deserialize JSON data of type {!emoji}. *) + +val write_channel : + Bi_outbuf.t -> channel -> unit + (** Output a JSON value of type {!channel}. *) + +val string_of_channel : + ?len:int -> channel -> string + (** Serialize a value of type {!channel} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_channel : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> channel + (** Input JSON data of type {!channel}. *) + +val channel_of_string : + string -> channel + (** Deserialize JSON data of type {!channel}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/guild_t.ml b/lib/models/guild_t.ml new file mode 100644 index 0000000..9ffe83f --- /dev/null +++ b/lib/models/guild_t.ml @@ -0,0 +1,43 @@ +(* Auto-generated from "guild.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type role = Role_t.t + +type member = Member_t.t + +type emoji = Emoji_t.t + +type channel = Channel_t.t + +type t = { + id: snowflake; + name: string; + icon: string option; + splash: string option; + owner_id: snowflake; + region: string; + afk_channel_id: snowflake option; + afk_timeout: int; + embed_enabled: bool option; + embed_channel_id: snowflake option; + verification_level: int; + default_message_notifications: int; + explicit_content_filter: int; + roles: role list; + emojis: emoji list; + features: string list; + mfa_level: int; + application_id: snowflake option; + widget_enabled: bool option; + widget_channel: channel option; + system_channel: channel option; + large: bool option; + unavailable: bool option; + member_count: int option; + members: member list option; + channels: channel list option +} diff --git a/lib/models/guild_t.mli b/lib/models/guild_t.mli new file mode 100644 index 0000000..9ffe83f --- /dev/null +++ b/lib/models/guild_t.mli @@ -0,0 +1,43 @@ +(* Auto-generated from "guild.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type role = Role_t.t + +type member = Member_t.t + +type emoji = Emoji_t.t + +type channel = Channel_t.t + +type t = { + id: snowflake; + name: string; + icon: string option; + splash: string option; + owner_id: snowflake; + region: string; + afk_channel_id: snowflake option; + afk_timeout: int; + embed_enabled: bool option; + embed_channel_id: snowflake option; + verification_level: int; + default_message_notifications: int; + explicit_content_filter: int; + roles: role list; + emojis: emoji list; + features: string list; + mfa_level: int; + application_id: snowflake option; + widget_enabled: bool option; + widget_channel: channel option; + system_channel: channel option; + large: bool option; + unavailable: bool option; + member_count: int option; + members: member list option; + channels: channel list option +} diff --git a/lib/models/member.atd b/lib/models/member.atd new file mode 100644 index 0000000..11d8b62 --- /dev/null +++ b/lib/models/member.atd @@ -0,0 +1,15 @@ +type snowflake <ocaml from="Snowflake" t="t"> = abstract +type user <ocaml from="User" t="t"> = abstract + +type partial_member = { + ?nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool; +} + +type t = { + inherit partial_member; + user: user; +}
\ No newline at end of file diff --git a/lib/models/member.ml b/lib/models/member.ml deleted file mode 100644 index 4621902..0000000 --- a/lib/models/member.ml +++ /dev/null @@ -1,8 +0,0 @@ -type t = { - user: User.t; - nick: string option; - roles: Role.t list; - joined_at: string; - deaf: bool; - mute: bool; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/member_j.ml b/lib/models/member_j.ml new file mode 100644 index 0000000..7fd4aec --- /dev/null +++ b/lib/models/member_j.ml @@ -0,0 +1,750 @@ +(* Auto-generated from "member.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = Member_t.t = { + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool; + user: user +} + +type partial_member = Member_t.partial_member = { + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool +} + +let write_user = ( + User_j.write_t +) +let string_of_user ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_user ob x; + Bi_outbuf.contents ob +let read_user = ( + User_j.read_t +) +let user_of_string s = + read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_snowflake = ( + Snowflake_j.write_t +) +let string_of_snowflake ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_snowflake ob x; + Bi_outbuf.contents ob +let read_snowflake = ( + Snowflake_j.read_t +) +let snowflake_of_string s = + read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__2 = ( + Atdgen_runtime.Oj_run.write_list ( + write_snowflake + ) +) +let string_of__2 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__2 ob x; + Bi_outbuf.contents ob +let read__2 = ( + Atdgen_runtime.Oj_run.read_list ( + read_snowflake + ) +) +let _2_of_string s = + read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_string + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + (match x.nick with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"nick\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"roles\":"; + ( + write__2 + ) + ob x.roles; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"joined_at\":"; + ( + Yojson.Safe.write_string + ) + ob x.joined_at; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"deaf\":"; + ( + Yojson.Safe.write_bool + ) + ob x.deaf; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"mute\":"; + ( + Yojson.Safe.write_bool + ) + ob x.mute; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"user\":"; + ( + write_user + ) + ob x.user; + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_nick = ref (None) in + let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_joined_at = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_deaf = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_mute = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_user = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + match String.unsafe_get s pos with + | 'd' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then ( + 3 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then ( + 4 + ) + else ( + -1 + ) + ) + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then ( + 0 + ) + else ( + -1 + ) + ) + | 'u' -> ( + if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then ( + 5 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 1 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nick := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + field_roles := ( + ( + read__2 + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 2 -> + field_joined_at := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 3 -> + field_deaf := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 4 -> + field_mute := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 5 -> + field_user := ( + ( + read_user + ) p lb + ); + bits0 := !bits0 lor 0x10; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + match String.unsafe_get s pos with + | 'd' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then ( + 3 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then ( + 4 + ) + else ( + -1 + ) + ) + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then ( + 0 + ) + else ( + -1 + ) + ) + | 'u' -> ( + if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then ( + 5 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 1 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nick := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + field_roles := ( + ( + read__2 + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 2 -> + field_joined_at := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 3 -> + field_deaf := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 4 -> + field_mute := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 5 -> + field_user := ( + ( + read_user + ) p lb + ); + bits0 := !bits0 lor 0x10; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "roles"; "joined_at"; "deaf"; "mute"; "user" |]; + ( + { + nick = !field_nick; + roles = !field_roles; + joined_at = !field_joined_at; + deaf = !field_deaf; + mute = !field_mute; + user = !field_user; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_partial_member : _ -> partial_member -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + (match x.nick with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"nick\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"roles\":"; + ( + write__2 + ) + ob x.roles; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"joined_at\":"; + ( + Yojson.Safe.write_string + ) + ob x.joined_at; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"deaf\":"; + ( + Yojson.Safe.write_bool + ) + ob x.deaf; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"mute\":"; + ( + Yojson.Safe.write_bool + ) + ob x.mute; + Bi_outbuf.add_char ob '}'; +) +let string_of_partial_member ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_partial_member ob x; + Bi_outbuf.contents ob +let read_partial_member = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_nick = ref (None) in + let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_joined_at = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_deaf = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_mute = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + match String.unsafe_get s pos with + | 'd' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then ( + 3 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then ( + 4 + ) + else ( + -1 + ) + ) + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then ( + 0 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 1 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nick := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + field_roles := ( + ( + read__2 + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 2 -> + field_joined_at := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 3 -> + field_deaf := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 4 -> + field_mute := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x8; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + match String.unsafe_get s pos with + | 'd' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then ( + 3 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then ( + 4 + ) + else ( + -1 + ) + ) + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then ( + 0 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 1 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nick := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + field_roles := ( + ( + read__2 + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 2 -> + field_joined_at := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 3 -> + field_deaf := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 4 -> + field_mute := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x8; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0xf then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "roles"; "joined_at"; "deaf"; "mute" |]; + ( + { + nick = !field_nick; + roles = !field_roles; + joined_at = !field_joined_at; + deaf = !field_deaf; + mute = !field_mute; + } + : partial_member) + ) +) +let partial_member_of_string s = + read_partial_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/member_j.mli b/lib/models/member_j.mli new file mode 100644 index 0000000..f160b6d --- /dev/null +++ b/lib/models/member_j.mli @@ -0,0 +1,104 @@ +(* Auto-generated from "member.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = Member_t.t = { + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool; + user: user +} + +type partial_member = Member_t.partial_member = { + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool +} + +val write_user : + Bi_outbuf.t -> user -> unit + (** Output a JSON value of type {!user}. *) + +val string_of_user : + ?len:int -> user -> string + (** Serialize a value of type {!user} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> user + (** Input JSON data of type {!user}. *) + +val user_of_string : + string -> user + (** Deserialize JSON data of type {!user}. *) + +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) + +val string_of_snowflake : + ?len:int -> snowflake -> string + (** Serialize a value of type {!snowflake} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) + +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + +val write_partial_member : + Bi_outbuf.t -> partial_member -> unit + (** Output a JSON value of type {!partial_member}. *) + +val string_of_partial_member : + ?len:int -> partial_member -> string + (** Serialize a value of type {!partial_member} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_partial_member : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_member + (** Input JSON data of type {!partial_member}. *) + +val partial_member_of_string : + string -> partial_member + (** Deserialize JSON data of type {!partial_member}. *) + diff --git a/lib/models/member_t.ml b/lib/models/member_t.ml new file mode 100644 index 0000000..6262e1b --- /dev/null +++ b/lib/models/member_t.ml @@ -0,0 +1,23 @@ +(* Auto-generated from "member.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = { + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool; + user: user +} + +type partial_member = { + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool +} diff --git a/lib/models/member_t.mli b/lib/models/member_t.mli new file mode 100644 index 0000000..6262e1b --- /dev/null +++ b/lib/models/member_t.mli @@ -0,0 +1,23 @@ +(* Auto-generated from "member.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = { + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool; + user: user +} + +type partial_member = { + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool +} diff --git a/lib/models/message.atd b/lib/models/message.atd new file mode 100644 index 0000000..1c90be9 --- /dev/null +++ b/lib/models/message.atd @@ -0,0 +1,30 @@ +type snowflake <ocaml from="Snowflake" t="t"> = abstract +type user <ocaml from="User" t="t"> = abstract +type member <ocaml from="Member" t="t"> = abstract +type partial_member <ocaml from="Member" t="partial_member"> = abstract +type role <ocaml from="Role" t="t"> = abstract +type attachment <ocaml from="Attachment" t="t"> = abstract +type embed <ocaml from="Embed" t="t"> = abstract +type reaction <ocaml from="Reaction" t="t"> = abstract + +type t = { + id: snowflake; + author: user; + channel_id: snowflake; + ?member: partial_member option; + ?guild_id: snowflake option; + content: string; + timestamp: string; + ?edited_timestamp: string option; + tts: bool; + mention_everyone: bool; + mentions: user list; + role_mentions: role list; + attachments: attachment list; + embeds: embed list; + reactions: reaction list; + ?nonce: snowflake option; + pinned: bool; + webhook_id: snowflake; + kind <json name="type">: int; +}
\ No newline at end of file diff --git a/lib/models/message.ml b/lib/models/message.ml deleted file mode 100644 index c578d9f..0000000 --- a/lib/models/message.ml +++ /dev/null @@ -1,21 +0,0 @@ -type t = { - id: Snowflake.t; - author: User.t; - channel: Channel.t; - member: Member.t option; - guild: Guild.t option; - content: string; - timestamp: string; - edited_timestamp: string option; - tts: bool; - mention_everyone: bool; - mentions: User.t list; - role_mentions: Role.t list; - attachments: Attachment.t list; - embeds: Embed.t list; - reactions: Reaction.t list; - nonce: Snowflake.t option; - pinned: bool; - webhook_id: Snowflake.t; - kind: int; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/message_j.ml b/lib/models/message_j.ml new file mode 100644 index 0000000..206d69c --- /dev/null +++ b/lib/models/message_j.ml @@ -0,0 +1,1328 @@ +(* Auto-generated from "message.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type role = Role_t.t + +type reaction = Reaction_t.t + +type partial_member = Member_t.partial_member + +type embed = Embed_t.t + +type attachment = Attachment_t.t + +type t = Message_t.t = { + id: snowflake; + author: user; + channel_id: snowflake; + member: partial_member option; + guild_id: snowflake option; + content: string; + timestamp: string; + edited_timestamp: string option; + tts: bool; + mention_everyone: bool; + mentions: user list; + role_mentions: role list; + attachments: attachment list; + embeds: embed list; + reactions: reaction list; + nonce: snowflake option; + pinned: bool; + webhook_id: snowflake; + kind: int +} + +type member = Member_t.t + +let write_user = ( + User_j.write_t +) +let string_of_user ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_user ob x; + Bi_outbuf.contents ob +let read_user = ( + User_j.read_t +) +let user_of_string s = + read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_snowflake = ( + Snowflake_j.write_t +) +let string_of_snowflake ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_snowflake ob x; + Bi_outbuf.contents ob +let read_snowflake = ( + Snowflake_j.read_t +) +let snowflake_of_string s = + read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_role = ( + Role_j.write_t +) +let string_of_role ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_role ob x; + Bi_outbuf.contents ob +let read_role = ( + Role_j.read_t +) +let role_of_string s = + read_role (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_reaction = ( + Reaction_j.write_t +) +let string_of_reaction ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_reaction ob x; + Bi_outbuf.contents ob +let read_reaction = ( + Reaction_j.read_t +) +let reaction_of_string s = + read_reaction (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_partial_member = ( + Member_j.write_partial_member +) +let string_of_partial_member ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_partial_member ob x; + Bi_outbuf.contents ob +let read_partial_member = ( + Member_j.read_partial_member +) +let partial_member_of_string s = + read_partial_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_embed = ( + Embed_j.write_t +) +let string_of_embed ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_embed ob x; + Bi_outbuf.contents ob +let read_embed = ( + Embed_j.read_t +) +let embed_of_string s = + read_embed (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_attachment = ( + Attachment_j.write_t +) +let string_of_attachment ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_attachment ob x; + Bi_outbuf.contents ob +let read_attachment = ( + Attachment_j.read_t +) +let attachment_of_string s = + read_attachment (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__8 = ( + Atdgen_runtime.Oj_run.write_list ( + write_reaction + ) +) +let string_of__8 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__8 ob x; + Bi_outbuf.contents ob +let read__8 = ( + Atdgen_runtime.Oj_run.read_list ( + read_reaction + ) +) +let _8_of_string s = + read__8 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__7 = ( + Atdgen_runtime.Oj_run.write_list ( + write_embed + ) +) +let string_of__7 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__7 ob x; + Bi_outbuf.contents ob +let read__7 = ( + Atdgen_runtime.Oj_run.read_list ( + read_embed + ) +) +let _7_of_string s = + read__7 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__6 = ( + Atdgen_runtime.Oj_run.write_list ( + write_attachment + ) +) +let string_of__6 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__6 ob x; + Bi_outbuf.contents ob +let read__6 = ( + Atdgen_runtime.Oj_run.read_list ( + read_attachment + ) +) +let _6_of_string s = + read__6 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__5 = ( + Atdgen_runtime.Oj_run.write_list ( + write_role + ) +) +let string_of__5 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__5 ob x; + Bi_outbuf.contents ob +let read__5 = ( + Atdgen_runtime.Oj_run.read_list ( + read_role + ) +) +let _5_of_string s = + read__5 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__4 = ( + Atdgen_runtime.Oj_run.write_list ( + write_user + ) +) +let string_of__4 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__4 ob x; + Bi_outbuf.contents ob +let read__4 = ( + Atdgen_runtime.Oj_run.read_list ( + read_user + ) +) +let _4_of_string s = + read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__3 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_string + ) +) +let string_of__3 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__3 ob x; + Bi_outbuf.contents ob +let read__3 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _3_of_string s = + read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__2 = ( + Atdgen_runtime.Oj_run.write_option ( + write_snowflake + ) +) +let string_of__2 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__2 ob x; + Bi_outbuf.contents ob +let read__2 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_snowflake + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_snowflake + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _2_of_string s = + read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + write_partial_member + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_partial_member + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_partial_member + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"id\":"; + ( + write_snowflake + ) + ob x.id; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"author\":"; + ( + write_user + ) + ob x.author; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"channel_id\":"; + ( + write_snowflake + ) + ob x.channel_id; + (match x.member with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"member\":"; + ( + write_partial_member + ) + ob x; + ); + (match x.guild_id with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"guild_id\":"; + ( + write_snowflake + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"content\":"; + ( + Yojson.Safe.write_string + ) + ob x.content; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"timestamp\":"; + ( + Yojson.Safe.write_string + ) + ob x.timestamp; + (match x.edited_timestamp with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"edited_timestamp\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"tts\":"; + ( + Yojson.Safe.write_bool + ) + ob x.tts; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"mention_everyone\":"; + ( + Yojson.Safe.write_bool + ) + ob x.mention_everyone; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"mentions\":"; + ( + write__4 + ) + ob x.mentions; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"role_mentions\":"; + ( + write__5 + ) + ob x.role_mentions; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"attachments\":"; + ( + write__6 + ) + ob x.attachments; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"embeds\":"; + ( + write__7 + ) + ob x.embeds; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"reactions\":"; + ( + write__8 + ) + ob x.reactions; + (match x.nonce with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"nonce\":"; + ( + write_snowflake + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"pinned\":"; + ( + Yojson.Safe.write_bool + ) + ob x.pinned; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"webhook_id\":"; + ( + write_snowflake + ) + ob x.webhook_id; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"type\":"; + ( + Yojson.Safe.write_int + ) + ob x.kind; + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_author = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_channel_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_member = ref (None) in + let field_guild_id = ref (None) in + let field_content = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_timestamp = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_edited_timestamp = ref (None) in + let field_tts = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_mention_everyone = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_mentions = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_role_mentions = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_attachments = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_embeds = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_reactions = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_nonce = ref (None) in + let field_pinned = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_webhook_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_kind = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 3 -> ( + if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 's' then ( + 8 + ) + else ( + -1 + ) + ) + | 4 -> ( + if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then ( + 18 + ) + else ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'e' then ( + 15 + ) + else ( + -1 + ) + ) + | 6 -> ( + match String.unsafe_get s pos with + | 'a' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'h' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'r' then ( + 1 + ) + else ( + -1 + ) + ) + | 'e' -> ( + if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = 's' then ( + 13 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' then ( + 3 + ) + else ( + -1 + ) + ) + | 'p' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' then ( + 16 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 7 -> ( + if String.unsafe_get s pos = 'c' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'n' && String.unsafe_get s (pos+6) = 't' then ( + 5 + ) + else ( + -1 + ) + ) + | 8 -> ( + match String.unsafe_get s pos with + | 'g' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 4 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = 's' then ( + 10 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 9 -> ( + match String.unsafe_get s pos with + | 'r' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 's' then ( + 14 + ) + else ( + -1 + ) + ) + | 't' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'p' then ( + 6 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 10 -> ( + match String.unsafe_get s pos with + | 'c' -> ( + if String.unsafe_get s (pos+1) = 'h' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'd' then ( + 2 + ) + else ( + -1 + ) + ) + | 'w' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'h' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'k' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'd' then ( + 17 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 11 -> ( + if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'c' && String.unsafe_get s (pos+5) = 'h' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 't' && String.unsafe_get s (pos+10) = 's' then ( + 12 + ) + else ( + -1 + ) + ) + | 13 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'm' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 'i' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 's' then ( + 11 + ) + else ( + -1 + ) + ) + | 16 -> ( + match String.unsafe_get s pos with + | 'e' -> ( + if String.unsafe_get s (pos+1) = 'd' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'm' && String.unsafe_get s (pos+10) = 'e' && String.unsafe_get s (pos+11) = 's' && String.unsafe_get s (pos+12) = 't' && String.unsafe_get s (pos+13) = 'a' && String.unsafe_get s (pos+14) = 'm' && String.unsafe_get s (pos+15) = 'p' then ( + 7 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'e' && String.unsafe_get s (pos+9) = 'v' && String.unsafe_get s (pos+10) = 'e' && String.unsafe_get s (pos+11) = 'r' && String.unsafe_get s (pos+12) = 'y' && String.unsafe_get s (pos+13) = 'o' && String.unsafe_get s (pos+14) = 'n' && String.unsafe_get s (pos+15) = 'e' then ( + 9 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_author := ( + ( + read_user + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + field_channel_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_member := ( + Some ( + ( + read_partial_member + ) p lb + ) + ); + ) + | 4 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_guild_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 5 -> + field_content := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 6 -> + field_timestamp := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x10; + | 7 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_edited_timestamp := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 8 -> + field_tts := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x20; + | 9 -> + field_mention_everyone := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x40; + | 10 -> + field_mentions := ( + ( + read__4 + ) p lb + ); + bits0 := !bits0 lor 0x80; + | 11 -> + field_role_mentions := ( + ( + read__5 + ) p lb + ); + bits0 := !bits0 lor 0x100; + | 12 -> + field_attachments := ( + ( + read__6 + ) p lb + ); + bits0 := !bits0 lor 0x200; + | 13 -> + field_embeds := ( + ( + read__7 + ) p lb + ); + bits0 := !bits0 lor 0x400; + | 14 -> + field_reactions := ( + ( + read__8 + ) p lb + ); + bits0 := !bits0 lor 0x800; + | 15 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nonce := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 16 -> + field_pinned := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x1000; + | 17 -> + field_webhook_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x2000; + | 18 -> + field_kind := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x4000; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 3 -> ( + if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 's' then ( + 8 + ) + else ( + -1 + ) + ) + | 4 -> ( + if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then ( + 18 + ) + else ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'e' then ( + 15 + ) + else ( + -1 + ) + ) + | 6 -> ( + match String.unsafe_get s pos with + | 'a' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'h' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'r' then ( + 1 + ) + else ( + -1 + ) + ) + | 'e' -> ( + if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = 's' then ( + 13 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' then ( + 3 + ) + else ( + -1 + ) + ) + | 'p' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' then ( + 16 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 7 -> ( + if String.unsafe_get s pos = 'c' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'n' && String.unsafe_get s (pos+6) = 't' then ( + 5 + ) + else ( + -1 + ) + ) + | 8 -> ( + match String.unsafe_get s pos with + | 'g' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 4 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = 's' then ( + 10 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 9 -> ( + match String.unsafe_get s pos with + | 'r' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 's' then ( + 14 + ) + else ( + -1 + ) + ) + | 't' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'p' then ( + 6 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 10 -> ( + match String.unsafe_get s pos with + | 'c' -> ( + if String.unsafe_get s (pos+1) = 'h' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'd' then ( + 2 + ) + else ( + -1 + ) + ) + | 'w' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'h' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'k' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'd' then ( + 17 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 11 -> ( + if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'c' && String.unsafe_get s (pos+5) = 'h' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 't' && String.unsafe_get s (pos+10) = 's' then ( + 12 + ) + else ( + -1 + ) + ) + | 13 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'm' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 'i' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 's' then ( + 11 + ) + else ( + -1 + ) + ) + | 16 -> ( + match String.unsafe_get s pos with + | 'e' -> ( + if String.unsafe_get s (pos+1) = 'd' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'm' && String.unsafe_get s (pos+10) = 'e' && String.unsafe_get s (pos+11) = 's' && String.unsafe_get s (pos+12) = 't' && String.unsafe_get s (pos+13) = 'a' && String.unsafe_get s (pos+14) = 'm' && String.unsafe_get s (pos+15) = 'p' then ( + 7 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'e' && String.unsafe_get s (pos+9) = 'v' && String.unsafe_get s (pos+10) = 'e' && String.unsafe_get s (pos+11) = 'r' && String.unsafe_get s (pos+12) = 'y' && String.unsafe_get s (pos+13) = 'o' && String.unsafe_get s (pos+14) = 'n' && String.unsafe_get s (pos+15) = 'e' then ( + 9 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_author := ( + ( + read_user + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + field_channel_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_member := ( + Some ( + ( + read_partial_member + ) p lb + ) + ); + ) + | 4 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_guild_id := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 5 -> + field_content := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 6 -> + field_timestamp := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x10; + | 7 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_edited_timestamp := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 8 -> + field_tts := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x20; + | 9 -> + field_mention_everyone := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x40; + | 10 -> + field_mentions := ( + ( + read__4 + ) p lb + ); + bits0 := !bits0 lor 0x80; + | 11 -> + field_role_mentions := ( + ( + read__5 + ) p lb + ); + bits0 := !bits0 lor 0x100; + | 12 -> + field_attachments := ( + ( + read__6 + ) p lb + ); + bits0 := !bits0 lor 0x200; + | 13 -> + field_embeds := ( + ( + read__7 + ) p lb + ); + bits0 := !bits0 lor 0x400; + | 14 -> + field_reactions := ( + ( + read__8 + ) p lb + ); + bits0 := !bits0 lor 0x800; + | 15 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nonce := ( + Some ( + ( + read_snowflake + ) p lb + ) + ); + ) + | 16 -> + field_pinned := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x1000; + | 17 -> + field_webhook_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x2000; + | 18 -> + field_kind := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x4000; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x7fff then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "author"; "channel_id"; "content"; "timestamp"; "tts"; "mention_everyone"; "mentions"; "role_mentions"; "attachments"; "embeds"; "reactions"; "pinned"; "webhook_id"; "kind" |]; + ( + { + id = !field_id; + author = !field_author; + channel_id = !field_channel_id; + member = !field_member; + guild_id = !field_guild_id; + content = !field_content; + timestamp = !field_timestamp; + edited_timestamp = !field_edited_timestamp; + tts = !field_tts; + mention_everyone = !field_mention_everyone; + mentions = !field_mentions; + role_mentions = !field_role_mentions; + attachments = !field_attachments; + embeds = !field_embeds; + reactions = !field_reactions; + nonce = !field_nonce; + pinned = !field_pinned; + webhook_id = !field_webhook_id; + kind = !field_kind; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_member = ( + Member_j.write_t +) +let string_of_member ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_member ob x; + Bi_outbuf.contents ob +let read_member = ( + Member_j.read_t +) +let member_of_string s = + read_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/message_j.mli b/lib/models/message_j.mli new file mode 100644 index 0000000..e3a3e5b --- /dev/null +++ b/lib/models/message_j.mli @@ -0,0 +1,221 @@ +(* Auto-generated from "message.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type role = Role_t.t + +type reaction = Reaction_t.t + +type partial_member = Member_t.partial_member + +type embed = Embed_t.t + +type attachment = Attachment_t.t + +type t = Message_t.t = { + id: snowflake; + author: user; + channel_id: snowflake; + member: partial_member option; + guild_id: snowflake option; + content: string; + timestamp: string; + edited_timestamp: string option; + tts: bool; + mention_everyone: bool; + mentions: user list; + role_mentions: role list; + attachments: attachment list; + embeds: embed list; + reactions: reaction list; + nonce: snowflake option; + pinned: bool; + webhook_id: snowflake; + kind: int +} + +type member = Member_t.t + +val write_user : + Bi_outbuf.t -> user -> unit + (** Output a JSON value of type {!user}. *) + +val string_of_user : + ?len:int -> user -> string + (** Serialize a value of type {!user} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> user + (** Input JSON data of type {!user}. *) + +val user_of_string : + string -> user + (** Deserialize JSON data of type {!user}. *) + +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) + +val string_of_snowflake : + ?len:int -> snowflake -> string + (** Serialize a value of type {!snowflake} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) + +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) + +val write_role : + Bi_outbuf.t -> role -> unit + (** Output a JSON value of type {!role}. *) + +val string_of_role : + ?len:int -> role -> string + (** Serialize a value of type {!role} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_role : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> role + (** Input JSON data of type {!role}. *) + +val role_of_string : + string -> role + (** Deserialize JSON data of type {!role}. *) + +val write_reaction : + Bi_outbuf.t -> reaction -> unit + (** Output a JSON value of type {!reaction}. *) + +val string_of_reaction : + ?len:int -> reaction -> string + (** Serialize a value of type {!reaction} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_reaction : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> reaction + (** Input JSON data of type {!reaction}. *) + +val reaction_of_string : + string -> reaction + (** Deserialize JSON data of type {!reaction}. *) + +val write_partial_member : + Bi_outbuf.t -> partial_member -> unit + (** Output a JSON value of type {!partial_member}. *) + +val string_of_partial_member : + ?len:int -> partial_member -> string + (** Serialize a value of type {!partial_member} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_partial_member : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_member + (** Input JSON data of type {!partial_member}. *) + +val partial_member_of_string : + string -> partial_member + (** Deserialize JSON data of type {!partial_member}. *) + +val write_embed : + Bi_outbuf.t -> embed -> unit + (** Output a JSON value of type {!embed}. *) + +val string_of_embed : + ?len:int -> embed -> string + (** Serialize a value of type {!embed} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_embed : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> embed + (** Input JSON data of type {!embed}. *) + +val embed_of_string : + string -> embed + (** Deserialize JSON data of type {!embed}. *) + +val write_attachment : + Bi_outbuf.t -> attachment -> unit + (** Output a JSON value of type {!attachment}. *) + +val string_of_attachment : + ?len:int -> attachment -> string + (** Serialize a value of type {!attachment} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_attachment : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> attachment + (** Input JSON data of type {!attachment}. *) + +val attachment_of_string : + string -> attachment + (** Deserialize JSON data of type {!attachment}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + +val write_member : + Bi_outbuf.t -> member -> unit + (** Output a JSON value of type {!member}. *) + +val string_of_member : + ?len:int -> member -> string + (** Serialize a value of type {!member} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_member : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> member + (** Input JSON data of type {!member}. *) + +val member_of_string : + string -> member + (** Deserialize JSON data of type {!member}. *) + diff --git a/lib/models/message_t.ml b/lib/models/message_t.ml new file mode 100644 index 0000000..2442d76 --- /dev/null +++ b/lib/models/message_t.ml @@ -0,0 +1,40 @@ +(* Auto-generated from "message.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type role = Role_t.t + +type reaction = Reaction_t.t + +type partial_member = Member_t.partial_member + +type embed = Embed_t.t + +type attachment = Attachment_t.t + +type t = { + id: snowflake; + author: user; + channel_id: snowflake; + member: partial_member option; + guild_id: snowflake option; + content: string; + timestamp: string; + edited_timestamp: string option; + tts: bool; + mention_everyone: bool; + mentions: user list; + role_mentions: role list; + attachments: attachment list; + embeds: embed list; + reactions: reaction list; + nonce: snowflake option; + pinned: bool; + webhook_id: snowflake; + kind: int +} + +type member = Member_t.t diff --git a/lib/models/message_t.mli b/lib/models/message_t.mli new file mode 100644 index 0000000..2442d76 --- /dev/null +++ b/lib/models/message_t.mli @@ -0,0 +1,40 @@ +(* Auto-generated from "message.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type role = Role_t.t + +type reaction = Reaction_t.t + +type partial_member = Member_t.partial_member + +type embed = Embed_t.t + +type attachment = Attachment_t.t + +type t = { + id: snowflake; + author: user; + channel_id: snowflake; + member: partial_member option; + guild_id: snowflake option; + content: string; + timestamp: string; + edited_timestamp: string option; + tts: bool; + mention_everyone: bool; + mentions: user list; + role_mentions: role list; + attachments: attachment list; + embeds: embed list; + reactions: reaction list; + nonce: snowflake option; + pinned: bool; + webhook_id: snowflake; + kind: int +} + +type member = Member_t.t diff --git a/lib/models/presence.atd b/lib/models/presence.atd new file mode 100644 index 0000000..da9b3fd --- /dev/null +++ b/lib/models/presence.atd @@ -0,0 +1,13 @@ +type snowflake <ocaml from="Snowflake" t="t"> = abstract +type user <ocaml from="User" t="t"> = abstract +type partial_user <ocaml from="User" t="partial_user"> = abstract +type activity <ocaml from="Activity" t="t"> = abstract + +type t = { + user: partial_user; + roles: snowflake list; + ?game: activity option; + guild_id: snowflake; + status: string; + activities: activity list; +}
\ No newline at end of file diff --git a/lib/models/presence.ml b/lib/models/presence.ml deleted file mode 100644 index ed1bdb6..0000000 --- a/lib/models/presence.ml +++ /dev/null @@ -1,8 +0,0 @@ -type t = { - user: User.t; - roles: Role.t list; - game: Activity.t option; - guild: Guild.t; - status: string; - activities: Activity.t list; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/presence_j.ml b/lib/models/presence_j.ml new file mode 100644 index 0000000..b4ea497 --- /dev/null +++ b/lib/models/presence_j.ml @@ -0,0 +1,492 @@ +(* Auto-generated from "presence.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type partial_user = User_t.partial_user + +type activity = Activity_t.t + +type t = Presence_t.t = { + user: partial_user; + roles: snowflake list; + game: activity option; + guild_id: snowflake; + status: string; + activities: activity list +} + +let write_user = ( + User_j.write_t +) +let string_of_user ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_user ob x; + Bi_outbuf.contents ob +let read_user = ( + User_j.read_t +) +let user_of_string s = + read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_snowflake = ( + Snowflake_j.write_t +) +let string_of_snowflake ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_snowflake ob x; + Bi_outbuf.contents ob +let read_snowflake = ( + Snowflake_j.read_t +) +let snowflake_of_string s = + read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_partial_user = ( + User_j.write_partial_user +) +let string_of_partial_user ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_partial_user ob x; + Bi_outbuf.contents ob +let read_partial_user = ( + User_j.read_partial_user +) +let partial_user_of_string s = + read_partial_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_activity = ( + Activity_j.write_t +) +let string_of_activity ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_activity ob x; + Bi_outbuf.contents ob +let read_activity = ( + Activity_j.read_t +) +let activity_of_string s = + read_activity (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__3 = ( + Atdgen_runtime.Oj_run.write_list ( + write_activity + ) +) +let string_of__3 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__3 ob x; + Bi_outbuf.contents ob +let read__3 = ( + Atdgen_runtime.Oj_run.read_list ( + read_activity + ) +) +let _3_of_string s = + read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__2 = ( + Atdgen_runtime.Oj_run.write_option ( + write_activity + ) +) +let string_of__2 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__2 ob x; + Bi_outbuf.contents ob +let read__2 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + read_activity + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + read_activity + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _2_of_string s = + read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__1 = ( + Atdgen_runtime.Oj_run.write_list ( + write_snowflake + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + Atdgen_runtime.Oj_run.read_list ( + read_snowflake + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"user\":"; + ( + write_partial_user + ) + ob x.user; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"roles\":"; + ( + write__1 + ) + ob x.roles; + (match x.game with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"game\":"; + ( + write_activity + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"guild_id\":"; + ( + write_snowflake + ) + ob x.guild_id; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"status\":"; + ( + Yojson.Safe.write_string + ) + ob x.status; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"activities\":"; + ( + write__3 + ) + ob x.activities; + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_user = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_game = ref (None) in + let field_guild_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_status = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_activities = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + match String.unsafe_get s pos with + | 'g' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 2 + ) + else ( + -1 + ) + ) + | 'u' -> ( + if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then ( + 0 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 1 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 's' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 's' then ( + 4 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'g' && String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 3 + ) + else ( + -1 + ) + ) + | 10 -> ( + if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'v' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 't' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'e' && String.unsafe_get s (pos+9) = 's' then ( + 5 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_user := ( + ( + read_partial_user + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_roles := ( + ( + read__1 + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_game := ( + Some ( + ( + read_activity + ) p lb + ) + ); + ) + | 3 -> + field_guild_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 4 -> + field_status := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 5 -> + field_activities := ( + ( + read__3 + ) p lb + ); + bits0 := !bits0 lor 0x10; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + match String.unsafe_get s pos with + | 'g' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 2 + ) + else ( + -1 + ) + ) + | 'u' -> ( + if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then ( + 0 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 1 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 's' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 's' then ( + 4 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'g' && String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 3 + ) + else ( + -1 + ) + ) + | 10 -> ( + if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'v' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 't' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'e' && String.unsafe_get s (pos+9) = 's' then ( + 5 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_user := ( + ( + read_partial_user + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_roles := ( + ( + read__1 + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_game := ( + Some ( + ( + read_activity + ) p lb + ) + ); + ) + | 3 -> + field_guild_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 4 -> + field_status := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 5 -> + field_activities := ( + ( + read__3 + ) p lb + ); + bits0 := !bits0 lor 0x10; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "user"; "roles"; "guild_id"; "status"; "activities" |]; + ( + { + user = !field_user; + roles = !field_roles; + game = !field_game; + guild_id = !field_guild_id; + status = !field_status; + activities = !field_activities; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/presence_j.mli b/lib/models/presence_j.mli new file mode 100644 index 0000000..be68b3f --- /dev/null +++ b/lib/models/presence_j.mli @@ -0,0 +1,120 @@ +(* Auto-generated from "presence.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type partial_user = User_t.partial_user + +type activity = Activity_t.t + +type t = Presence_t.t = { + user: partial_user; + roles: snowflake list; + game: activity option; + guild_id: snowflake; + status: string; + activities: activity list +} + +val write_user : + Bi_outbuf.t -> user -> unit + (** Output a JSON value of type {!user}. *) + +val string_of_user : + ?len:int -> user -> string + (** Serialize a value of type {!user} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> user + (** Input JSON data of type {!user}. *) + +val user_of_string : + string -> user + (** Deserialize JSON data of type {!user}. *) + +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) + +val string_of_snowflake : + ?len:int -> snowflake -> string + (** Serialize a value of type {!snowflake} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) + +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) + +val write_partial_user : + Bi_outbuf.t -> partial_user -> unit + (** Output a JSON value of type {!partial_user}. *) + +val string_of_partial_user : + ?len:int -> partial_user -> string + (** Serialize a value of type {!partial_user} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_partial_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_user + (** Input JSON data of type {!partial_user}. *) + +val partial_user_of_string : + string -> partial_user + (** Deserialize JSON data of type {!partial_user}. *) + +val write_activity : + Bi_outbuf.t -> activity -> unit + (** Output a JSON value of type {!activity}. *) + +val string_of_activity : + ?len:int -> activity -> string + (** Serialize a value of type {!activity} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_activity : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> activity + (** Input JSON data of type {!activity}. *) + +val activity_of_string : + string -> activity + (** Deserialize JSON data of type {!activity}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/presence_t.ml b/lib/models/presence_t.ml new file mode 100644 index 0000000..940d986 --- /dev/null +++ b/lib/models/presence_t.ml @@ -0,0 +1,19 @@ +(* Auto-generated from "presence.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type partial_user = User_t.partial_user + +type activity = Activity_t.t + +type t = { + user: partial_user; + roles: snowflake list; + game: activity option; + guild_id: snowflake; + status: string; + activities: activity list +} diff --git a/lib/models/presence_t.mli b/lib/models/presence_t.mli new file mode 100644 index 0000000..940d986 --- /dev/null +++ b/lib/models/presence_t.mli @@ -0,0 +1,19 @@ +(* Auto-generated from "presence.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type partial_user = User_t.partial_user + +type activity = Activity_t.t + +type t = { + user: partial_user; + roles: snowflake list; + game: activity option; + guild_id: snowflake; + status: string; + activities: activity list +} diff --git a/lib/models/reaction.atd b/lib/models/reaction.atd new file mode 100644 index 0000000..aa41483 --- /dev/null +++ b/lib/models/reaction.atd @@ -0,0 +1,6 @@ +type emoji <ocaml from="Emoji" t="t"> = abstract + +type t = { + count: int; + emoji: emoji; +}
\ No newline at end of file diff --git a/lib/models/reaction.ml b/lib/models/reaction.ml deleted file mode 100644 index 00bebe6..0000000 --- a/lib/models/reaction.ml +++ /dev/null @@ -1,4 +0,0 @@ -type t = { - count: int; - emoji: Emoji.t; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/reaction_j.ml b/lib/models/reaction_j.ml new file mode 100644 index 0000000..fe91833 --- /dev/null +++ b/lib/models/reaction_j.ml @@ -0,0 +1,180 @@ +(* Auto-generated from "reaction.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type emoji = Emoji_t.t + +type t = Reaction_t.t = { count: int; emoji: emoji } + +let write_emoji = ( + Emoji_j.write_t +) +let string_of_emoji ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_emoji ob x; + Bi_outbuf.contents ob +let read_emoji = ( + Emoji_j.read_t +) +let emoji_of_string s = + read_emoji (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"count\":"; + ( + Yojson.Safe.write_int + ) + ob x.count; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"emoji\":"; + ( + write_emoji + ) + ob x.emoji; + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_count = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_emoji = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + if len = 5 then ( + match String.unsafe_get s pos with + | 'c' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'u' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 't' then ( + 0 + ) + else ( + -1 + ) + ) + | 'e' -> ( + if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'j' && String.unsafe_get s (pos+4) = 'i' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + else ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_count := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_emoji := ( + ( + read_emoji + ) p lb + ); + bits0 := !bits0 lor 0x2; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + if len = 5 then ( + match String.unsafe_get s pos with + | 'c' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'u' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 't' then ( + 0 + ) + else ( + -1 + ) + ) + | 'e' -> ( + if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'j' && String.unsafe_get s (pos+4) = 'i' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + else ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_count := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_emoji := ( + ( + read_emoji + ) p lb + ); + bits0 := !bits0 lor 0x2; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x3 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "count"; "emoji" |]; + ( + { + count = !field_count; + emoji = !field_emoji; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/reaction_j.mli b/lib/models/reaction_j.mli new file mode 100644 index 0000000..0d6a598 --- /dev/null +++ b/lib/models/reaction_j.mli @@ -0,0 +1,47 @@ +(* Auto-generated from "reaction.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type emoji = Emoji_t.t + +type t = Reaction_t.t = { count: int; emoji: emoji } + +val write_emoji : + Bi_outbuf.t -> emoji -> unit + (** Output a JSON value of type {!emoji}. *) + +val string_of_emoji : + ?len:int -> emoji -> string + (** Serialize a value of type {!emoji} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_emoji : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> emoji + (** Input JSON data of type {!emoji}. *) + +val emoji_of_string : + string -> emoji + (** Deserialize JSON data of type {!emoji}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/reaction_t.ml b/lib/models/reaction_t.ml new file mode 100644 index 0000000..666030b --- /dev/null +++ b/lib/models/reaction_t.ml @@ -0,0 +1,6 @@ +(* Auto-generated from "reaction.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type emoji = Emoji_t.t + +type t = { count: int; emoji: emoji } diff --git a/lib/models/reaction_t.mli b/lib/models/reaction_t.mli new file mode 100644 index 0000000..666030b --- /dev/null +++ b/lib/models/reaction_t.mli @@ -0,0 +1,6 @@ +(* Auto-generated from "reaction.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type emoji = Emoji_t.t + +type t = { count: int; emoji: emoji } diff --git a/lib/models/role.ml b/lib/models/role.atd index 0577342..a6bdcba 100644 --- a/lib/models/role.ml +++ b/lib/models/role.atd @@ -1,10 +1,12 @@ +type snowflake <ocaml from="Snowflake" t="t"> = abstract + type t = { - id: Snowflake.t; + id: snowflake; name: string; - colour: int; + colour <json name="color">: int; hoist: bool; position: int; permissions: int; managed: bool; mentionable: bool; -} [@@deriving yojson]
\ No newline at end of file +}
\ No newline at end of file diff --git a/lib/models/role_j.ml b/lib/models/role_j.ml new file mode 100644 index 0000000..a15b6cf --- /dev/null +++ b/lib/models/role_j.ml @@ -0,0 +1,449 @@ +(* Auto-generated from "role.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = Role_t.t = { + id: snowflake; + name: string; + colour: int; + hoist: bool; + position: int; + permissions: int; + managed: bool; + mentionable: bool +} + +let write_snowflake = ( + Snowflake_j.write_t +) +let string_of_snowflake ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_snowflake ob x; + Bi_outbuf.contents ob +let read_snowflake = ( + Snowflake_j.read_t +) +let snowflake_of_string s = + read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"id\":"; + ( + write_snowflake + ) + ob x.id; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"name\":"; + ( + Yojson.Safe.write_string + ) + ob x.name; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"color\":"; + ( + Yojson.Safe.write_int + ) + ob x.colour; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"hoist\":"; + ( + Yojson.Safe.write_bool + ) + ob x.hoist; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"position\":"; + ( + Yojson.Safe.write_int + ) + ob x.position; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"permissions\":"; + ( + Yojson.Safe.write_int + ) + ob x.permissions; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"managed\":"; + ( + Yojson.Safe.write_bool + ) + ob x.managed; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"mentionable\":"; + ( + Yojson.Safe.write_bool + ) + ob x.mentionable; + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_colour = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_hoist = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_position = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_permissions = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_managed = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_mentionable = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 4 -> ( + if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | 5 -> ( + match String.unsafe_get s pos with + | 'c' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'o' && String.unsafe_get s (pos+4) = 'r' then ( + 2 + ) + else ( + -1 + ) + ) + | 'h' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 's' && String.unsafe_get s (pos+4) = 't' then ( + 3 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 7 -> ( + if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'g' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'd' then ( + 6 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' then ( + 4 + ) + else ( + -1 + ) + ) + | 11 -> ( + match String.unsafe_get s pos with + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 'b' && String.unsafe_get s (pos+9) = 'l' && String.unsafe_get s (pos+10) = 'e' then ( + 7 + ) + else ( + -1 + ) + ) + | 'p' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 's' && String.unsafe_get s (pos+6) = 's' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = 's' then ( + 5 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_name := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + field_colour := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 3 -> + field_hoist := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 4 -> + field_position := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x10; + | 5 -> + field_permissions := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x20; + | 6 -> + field_managed := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x40; + | 7 -> + field_mentionable := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x80; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 4 -> ( + if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | 5 -> ( + match String.unsafe_get s pos with + | 'c' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'o' && String.unsafe_get s (pos+4) = 'r' then ( + 2 + ) + else ( + -1 + ) + ) + | 'h' -> ( + if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 's' && String.unsafe_get s (pos+4) = 't' then ( + 3 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 7 -> ( + if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'g' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'd' then ( + 6 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' then ( + 4 + ) + else ( + -1 + ) + ) + | 11 -> ( + match String.unsafe_get s pos with + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 'b' && String.unsafe_get s (pos+9) = 'l' && String.unsafe_get s (pos+10) = 'e' then ( + 7 + ) + else ( + -1 + ) + ) + | 'p' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 's' && String.unsafe_get s (pos+6) = 's' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = 's' then ( + 5 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_name := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + field_colour := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 3 -> + field_hoist := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 4 -> + field_position := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x10; + | 5 -> + field_permissions := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x20; + | 6 -> + field_managed := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x40; + | 7 -> + field_mentionable := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x80; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0xff then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "name"; "colour"; "hoist"; "position"; "permissions"; "managed"; "mentionable" |]; + ( + { + id = !field_id; + name = !field_name; + colour = !field_colour; + hoist = !field_hoist; + position = !field_position; + permissions = !field_permissions; + managed = !field_managed; + mentionable = !field_mentionable; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/role_j.mli b/lib/models/role_j.mli new file mode 100644 index 0000000..b4ea78c --- /dev/null +++ b/lib/models/role_j.mli @@ -0,0 +1,56 @@ +(* Auto-generated from "role.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = Role_t.t = { + id: snowflake; + name: string; + colour: int; + hoist: bool; + position: int; + permissions: int; + managed: bool; + mentionable: bool +} + +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) + +val string_of_snowflake : + ?len:int -> snowflake -> string + (** Serialize a value of type {!snowflake} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) + +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/role_t.ml b/lib/models/role_t.ml new file mode 100644 index 0000000..a4e83c5 --- /dev/null +++ b/lib/models/role_t.ml @@ -0,0 +1,15 @@ +(* Auto-generated from "role.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = { + id: snowflake; + name: string; + colour: int; + hoist: bool; + position: int; + permissions: int; + managed: bool; + mentionable: bool +} diff --git a/lib/models/role_t.mli b/lib/models/role_t.mli new file mode 100644 index 0000000..a4e83c5 --- /dev/null +++ b/lib/models/role_t.mli @@ -0,0 +1,15 @@ +(* Auto-generated from "role.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = { + id: snowflake; + name: string; + colour: int; + hoist: bool; + position: int; + permissions: int; + managed: bool; + mentionable: bool +} diff --git a/lib/models/snowflake.atd b/lib/models/snowflake.atd new file mode 100644 index 0000000..98dc032 --- /dev/null +++ b/lib/models/snowflake.atd @@ -0,0 +1 @@ +type t = int
\ No newline at end of file diff --git a/lib/models/snowflake.ml b/lib/models/snowflake.ml deleted file mode 100644 index ab723a7..0000000 --- a/lib/models/snowflake.ml +++ /dev/null @@ -1,16 +0,0 @@ -type t = { - id: int; - as_string: string; -} [@@deriving yojson] - -let to_int t = t.id -let to_string t = t.as_string - -let from_int i = { - id = i; - as_string = string_of_int i; -} -let from_string s = { - id = int_of_string s; - as_string = s; -}
\ No newline at end of file diff --git a/lib/models/snowflake_j.ml b/lib/models/snowflake_j.ml new file mode 100644 index 0000000..80f6f63 --- /dev/null +++ b/lib/models/snowflake_j.ml @@ -0,0 +1,17 @@ +(* Auto-generated from "snowflake.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type t = Snowflake_t.t + +let write_t = ( + Yojson.Safe.write_int +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + Atdgen_runtime.Oj_run.read_int +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/snowflake_j.mli b/lib/models/snowflake_j.mli new file mode 100644 index 0000000..fed97a4 --- /dev/null +++ b/lib/models/snowflake_j.mli @@ -0,0 +1,25 @@ +(* Auto-generated from "snowflake.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type t = Snowflake_t.t + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + diff --git a/lib/models/snowflake_t.ml b/lib/models/snowflake_t.ml new file mode 100644 index 0000000..a7bdb08 --- /dev/null +++ b/lib/models/snowflake_t.ml @@ -0,0 +1,4 @@ +(* Auto-generated from "snowflake.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type t = int diff --git a/lib/models/snowflake_t.mli b/lib/models/snowflake_t.mli new file mode 100644 index 0000000..a7bdb08 --- /dev/null +++ b/lib/models/snowflake_t.mli @@ -0,0 +1,4 @@ +(* Auto-generated from "snowflake.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type t = int diff --git a/lib/models/user.atd b/lib/models/user.atd new file mode 100644 index 0000000..106b3b0 --- /dev/null +++ b/lib/models/user.atd @@ -0,0 +1,13 @@ +type snowflake <ocaml from="Snowflake" t="t"> = abstract + +type t = { + id: snowflake; + username: string; + discriminator: string; + ?avatar: string option; + ~bot <ocaml default="false">: bool; +} + +type partial_user = { + id: snowflake; +}
\ No newline at end of file diff --git a/lib/models/user.ml b/lib/models/user.ml deleted file mode 100644 index e6c5c69..0000000 --- a/lib/models/user.ml +++ /dev/null @@ -1,7 +0,0 @@ -type t = { - id: Snowflake.t; - username: string; - discriminator: string; - avatar: string; - bot: bool; -} [@@deriving yojson]
\ No newline at end of file diff --git a/lib/models/user_j.ml b/lib/models/user_j.ml new file mode 100644 index 0000000..552a20d --- /dev/null +++ b/lib/models/user_j.ml @@ -0,0 +1,468 @@ +(* Auto-generated from "user.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = User_t.t = { + id: snowflake; + username: string; + discriminator: string; + avatar: string option; + bot: bool +} + +type partial_user = User_t.partial_user = { id: snowflake } + +let write_snowflake = ( + Snowflake_j.write_t +) +let string_of_snowflake ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_snowflake ob x; + Bi_outbuf.contents ob +let read_snowflake = ( + Snowflake_j.read_t +) +let snowflake_of_string s = + read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_string + ) +) +let string_of__1 ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write__1 ob x; + Bi_outbuf.contents ob +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) +) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_t : _ -> t -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"id\":"; + ( + write_snowflake + ) + ob x.id; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"username\":"; + ( + Yojson.Safe.write_string + ) + ob x.username; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"discriminator\":"; + ( + Yojson.Safe.write_string + ) + ob x.discriminator; + (match x.avatar with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"avatar\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + if x.bot <> false then ( + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"bot\":"; + ( + Yojson.Safe.write_bool + ) + ob x.bot; + ); + Bi_outbuf.add_char ob '}'; +) +let string_of_t ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_t ob x; + Bi_outbuf.contents ob +let read_t = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_username = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_discriminator = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_avatar = ref (None) in + let field_bot = ref (false) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 3 -> ( + if String.unsafe_get s pos = 'b' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 't' then ( + 4 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'v' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 'r' then ( + 3 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'a' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | 13 -> ( + if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 't' && String.unsafe_get s (pos+11) = 'o' && String.unsafe_get s (pos+12) = 'r' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_username := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + field_discriminator := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_avatar := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 4 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_bot := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 2 -> ( + if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + ) + | 3 -> ( + if String.unsafe_get s pos = 'b' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 't' then ( + 4 + ) + else ( + -1 + ) + ) + | 6 -> ( + if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'v' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 'r' then ( + 3 + ) + else ( + -1 + ) + ) + | 8 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'a' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | 13 -> ( + if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 't' && String.unsafe_get s (pos+11) = 'o' && String.unsafe_get s (pos+12) = 'r' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + field_username := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + field_discriminator := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 3 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_avatar := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 4 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_bot := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + ) + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x7 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "username"; "discriminator" |]; + ( + { + id = !field_id; + username = !field_username; + discriminator = !field_discriminator; + avatar = !field_avatar; + bot = !field_bot; + } + : t) + ) +) +let t_of_string s = + read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_partial_user : _ -> partial_user -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"id\":"; + ( + write_snowflake + ) + ob x.id; + Bi_outbuf.add_char ob '}'; +) +let string_of_partial_user ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_partial_user ob x; + Bi_outbuf.contents ob +let read_partial_user = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + if len = 2 && String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + if len = 2 && String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id" |]; + ( + { + id = !field_id; + } + : partial_user) + ) +) +let partial_user_of_string s = + read_partial_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/user_j.mli b/lib/models/user_j.mli new file mode 100644 index 0000000..576768e --- /dev/null +++ b/lib/models/user_j.mli @@ -0,0 +1,75 @@ +(* Auto-generated from "user.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = User_t.t = { + id: snowflake; + username: string; + discriminator: string; + avatar: string option; + bot: bool +} + +type partial_user = User_t.partial_user = { id: snowflake } + +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) + +val string_of_snowflake : + ?len:int -> snowflake -> string + (** Serialize a value of type {!snowflake} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) + +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) + +val write_t : + Bi_outbuf.t -> t -> unit + (** Output a JSON value of type {!t}. *) + +val string_of_t : + ?len:int -> t -> string + (** Serialize a value of type {!t} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_t : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> t + (** Input JSON data of type {!t}. *) + +val t_of_string : + string -> t + (** Deserialize JSON data of type {!t}. *) + +val write_partial_user : + Bi_outbuf.t -> partial_user -> unit + (** Output a JSON value of type {!partial_user}. *) + +val string_of_partial_user : + ?len:int -> partial_user -> string + (** Serialize a value of type {!partial_user} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_partial_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_user + (** Input JSON data of type {!partial_user}. *) + +val partial_user_of_string : + string -> partial_user + (** Deserialize JSON data of type {!partial_user}. *) + diff --git a/lib/models/user_t.ml b/lib/models/user_t.ml new file mode 100644 index 0000000..294cf0a --- /dev/null +++ b/lib/models/user_t.ml @@ -0,0 +1,14 @@ +(* Auto-generated from "user.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = { + id: snowflake; + username: string; + discriminator: string; + avatar: string option; + bot: bool +} + +type partial_user = { id: snowflake } diff --git a/lib/models/user_t.mli b/lib/models/user_t.mli new file mode 100644 index 0000000..294cf0a --- /dev/null +++ b/lib/models/user_t.mli @@ -0,0 +1,14 @@ +(* Auto-generated from "user.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = { + id: snowflake; + username: string; + discriminator: string; + avatar: string option; + bot: bool +} + +type partial_user = { id: snowflake } |