From 73d115ce6260e97f5f7ee47f743d842ffd292662 Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Thu, 13 Dec 2018 14:11:54 -0700 Subject: Working on deriving types from json --- lib/models/activity.atd | 5 + lib/models/activity.ml | 4 - lib/models/activity_j.ml | 117 +++ lib/models/activity_j.mli | 47 + lib/models/activity_t.ml | 6 + lib/models/activity_t.mli | 6 + lib/models/attachment.atd | 11 + lib/models/attachment.ml | 9 - lib/models/attachment_j.ml | 456 +++++++++ lib/models/attachment_j.mli | 55 ++ lib/models/attachment_t.ml | 14 + lib/models/attachment_t.mli | 14 + lib/models/ban.atd | 6 + lib/models/ban.ml | 4 - lib/models/ban_j.ml | 235 +++++ lib/models/ban_j.mli | 47 + lib/models/ban_t.ml | 6 + lib/models/ban_t.mli | 6 + lib/models/channel.atd | 19 + lib/models/channel.ml | 17 - lib/models/channel_j.ml | 1136 +++++++++++++++++++++ lib/models/channel_j.mli | 84 ++ lib/models/channel_t.ml | 23 + lib/models/channel_t.mli | 23 + lib/models/embed.atd | 44 + lib/models/embed.ml | 44 - lib/models/embed_j.ml | 2283 +++++++++++++++++++++++++++++++++++++++++++ lib/models/embed_j.mli | 168 ++++ lib/models/embed_t.ml | 36 + lib/models/embed_t.mli | 36 + lib/models/emoji.atd | 12 + lib/models/emoji.ml | 9 - lib/models/emoji_j.ml | 701 +++++++++++++ lib/models/emoji_j.mli | 77 ++ lib/models/emoji_t.ml | 16 + lib/models/emoji_t.mli | 16 + lib/models/guild.atd | 36 + lib/models/guild.ml | 28 - lib/models/guild_j.ml | 1948 ++++++++++++++++++++++++++++++++++++ lib/models/guild_j.mli | 184 ++++ lib/models/guild_t.ml | 43 + lib/models/guild_t.mli | 43 + lib/models/member.atd | 11 + lib/models/member.ml | 8 - lib/models/member_j.ml | 448 +++++++++ lib/models/member_j.mli | 76 ++ lib/models/member_t.ml | 15 + lib/models/member_t.mli | 15 + lib/models/message.atd | 29 + lib/models/message.ml | 21 - lib/models/message_j.ml | 1314 +++++++++++++++++++++++++ lib/models/message_j.mli | 199 ++++ lib/models/message_t.ml | 38 + lib/models/message_t.mli | 38 + lib/models/presence.atd | 13 + lib/models/presence.ml | 8 - lib/models/presence_j.ml | 504 ++++++++++ lib/models/presence_j.mli | 120 +++ lib/models/presence_t.ml | 19 + lib/models/presence_t.mli | 19 + lib/models/reaction.atd | 6 + lib/models/reaction.ml | 4 - lib/models/reaction_j.ml | 180 ++++ lib/models/reaction_j.mli | 47 + lib/models/reaction_t.ml | 6 + lib/models/reaction_t.mli | 6 + lib/models/role.atd | 12 + lib/models/role.ml | 10 - lib/models/role_j.ml | 449 +++++++++ lib/models/role_j.mli | 56 ++ lib/models/role_t.ml | 15 + lib/models/role_t.mli | 15 + lib/models/snowflake.atd | 1 + lib/models/snowflake.ml | 16 - lib/models/snowflake_j.ml | 17 + lib/models/snowflake_j.mli | 25 + lib/models/snowflake_t.ml | 4 + lib/models/snowflake_t.mli | 4 + lib/models/user.atd | 9 + lib/models/user.ml | 7 - lib/models/user_j.ml | 368 +++++++ lib/models/user_j.mli | 53 + lib/models/user_t.ml | 12 + lib/models/user_t.mli | 12 + 84 files changed, 12114 insertions(+), 189 deletions(-) create mode 100644 lib/models/activity.atd delete mode 100644 lib/models/activity.ml create mode 100644 lib/models/activity_j.ml create mode 100644 lib/models/activity_j.mli create mode 100644 lib/models/activity_t.ml create mode 100644 lib/models/activity_t.mli create mode 100644 lib/models/attachment.atd delete mode 100644 lib/models/attachment.ml create mode 100644 lib/models/attachment_j.ml create mode 100644 lib/models/attachment_j.mli create mode 100644 lib/models/attachment_t.ml create mode 100644 lib/models/attachment_t.mli create mode 100644 lib/models/ban.atd delete mode 100644 lib/models/ban.ml create mode 100644 lib/models/ban_j.ml create mode 100644 lib/models/ban_j.mli create mode 100644 lib/models/ban_t.ml create mode 100644 lib/models/ban_t.mli create mode 100644 lib/models/channel.atd delete mode 100644 lib/models/channel.ml create mode 100644 lib/models/channel_j.ml create mode 100644 lib/models/channel_j.mli create mode 100644 lib/models/channel_t.ml create mode 100644 lib/models/channel_t.mli create mode 100644 lib/models/embed.atd delete mode 100644 lib/models/embed.ml create mode 100644 lib/models/embed_j.ml create mode 100644 lib/models/embed_j.mli create mode 100644 lib/models/embed_t.ml create mode 100644 lib/models/embed_t.mli create mode 100644 lib/models/emoji.atd delete mode 100644 lib/models/emoji.ml create mode 100644 lib/models/emoji_j.ml create mode 100644 lib/models/emoji_j.mli create mode 100644 lib/models/emoji_t.ml create mode 100644 lib/models/emoji_t.mli create mode 100644 lib/models/guild.atd delete mode 100644 lib/models/guild.ml create mode 100644 lib/models/guild_j.ml create mode 100644 lib/models/guild_j.mli create mode 100644 lib/models/guild_t.ml create mode 100644 lib/models/guild_t.mli create mode 100644 lib/models/member.atd delete mode 100644 lib/models/member.ml create mode 100644 lib/models/member_j.ml create mode 100644 lib/models/member_j.mli create mode 100644 lib/models/member_t.ml create mode 100644 lib/models/member_t.mli create mode 100644 lib/models/message.atd delete mode 100644 lib/models/message.ml create mode 100644 lib/models/message_j.ml create mode 100644 lib/models/message_j.mli create mode 100644 lib/models/message_t.ml create mode 100644 lib/models/message_t.mli create mode 100644 lib/models/presence.atd delete mode 100644 lib/models/presence.ml create mode 100644 lib/models/presence_j.ml create mode 100644 lib/models/presence_j.mli create mode 100644 lib/models/presence_t.ml create mode 100644 lib/models/presence_t.mli create mode 100644 lib/models/reaction.atd delete mode 100644 lib/models/reaction.ml create mode 100644 lib/models/reaction_j.ml create mode 100644 lib/models/reaction_j.mli create mode 100644 lib/models/reaction_t.ml create mode 100644 lib/models/reaction_t.mli create mode 100644 lib/models/role.atd delete mode 100644 lib/models/role.ml create mode 100644 lib/models/role_j.ml create mode 100644 lib/models/role_j.mli create mode 100644 lib/models/role_t.ml create mode 100644 lib/models/role_t.mli create mode 100644 lib/models/snowflake.atd delete mode 100644 lib/models/snowflake.ml create mode 100644 lib/models/snowflake_j.ml create mode 100644 lib/models/snowflake_j.mli create mode 100644 lib/models/snowflake_t.ml create mode 100644 lib/models/snowflake_t.mli create mode 100644 lib/models/user.atd delete mode 100644 lib/models/user.ml create mode 100644 lib/models/user_j.ml create mode 100644 lib/models/user_j.mli create mode 100644 lib/models/user_t.ml create mode 100644 lib/models/user_t.mli (limited to 'lib/models') diff --git a/lib/models/activity.atd b/lib/models/activity.atd new file mode 100644 index 0000000..94b4b3c --- /dev/null +++ b/lib/models/activity.atd @@ -0,0 +1,5 @@ +type snowflake = abstract + +type t = { + id: snowflake; +} \ 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..8a4eb2e --- /dev/null +++ b/lib/models/activity_j.ml @@ -0,0 +1,117 @@ +(* Auto-generated from "activity.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = Activity_t.t = { 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_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; + 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 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; + } + : 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..3c93cc1 --- /dev/null +++ b/lib/models/activity_j.mli @@ -0,0 +1,47 @@ +(* Auto-generated from "activity.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = Activity_t.t = { 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}. *) + diff --git a/lib/models/activity_t.ml b/lib/models/activity_t.ml new file mode 100644 index 0000000..f9ba6a6 --- /dev/null +++ b/lib/models/activity_t.ml @@ -0,0 +1,6 @@ +(* Auto-generated from "activity.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = { id: snowflake } diff --git a/lib/models/activity_t.mli b/lib/models/activity_t.mli new file mode 100644 index 0000000..f9ba6a6 --- /dev/null +++ b/lib/models/activity_t.mli @@ -0,0 +1,6 @@ +(* Auto-generated from "activity.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type snowflake = Snowflake_t.t + +type t = { id: snowflake } 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 = 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 = 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 = abstract +type user = abstract + +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; +} \ 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 = abstract +type user = 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 = abstract +type user = abstract +type member = abstract +type role = abstract +type channel = abstract +type emoji = 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..ea00032 --- /dev/null +++ b/lib/models/member.atd @@ -0,0 +1,11 @@ +type snowflake = abstract +type user = abstract + +type t = { + user: user; + ?nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool; +} \ 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..3826c93 --- /dev/null +++ b/lib/models/member_j.ml @@ -0,0 +1,448 @@ +(* 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 = { + user: user; + 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 + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"user\":"; + ( + write_user + ) + ob x.user; + (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_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_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 ( + 4 + ) + 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 ( + 5 + ) + 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 ( + 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 ( + 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 ( + 2 + ) + 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 ( + 3 + ) + 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_user + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nick := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 2 -> + field_roles := ( + ( + read__2 + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 3 -> + field_joined_at := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 4 -> + field_deaf := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 5 -> + field_mute := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) 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 ( + 4 + ) + 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 ( + 5 + ) + 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 ( + 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 ( + 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 ( + 2 + ) + 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 ( + 3 + ) + 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_user + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 1 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nick := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 2 -> + field_roles := ( + ( + read__2 + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 3 -> + field_joined_at := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 4 -> + field_deaf := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x8; + | 5 -> + field_mute := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) 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"; "joined_at"; "deaf"; "mute" |]; + ( + { + user = !field_user; + nick = !field_nick; + roles = !field_roles; + joined_at = !field_joined_at; + deaf = !field_deaf; + mute = !field_mute; + } + : t) + ) +) +let t_of_string s = + read_t (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..28c89fd --- /dev/null +++ b/lib/models/member_j.mli @@ -0,0 +1,76 @@ +(* 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 = { + user: user; + 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}. *) + diff --git a/lib/models/member_t.ml b/lib/models/member_t.ml new file mode 100644 index 0000000..1dd6ecd --- /dev/null +++ b/lib/models/member_t.ml @@ -0,0 +1,15 @@ +(* Auto-generated from "member.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = { + user: user; + 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..1dd6ecd --- /dev/null +++ b/lib/models/member_t.mli @@ -0,0 +1,15 @@ +(* Auto-generated from "member.atd" *) + [@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type snowflake = Snowflake_t.t + +type t = { + user: user; + 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..88c60ec --- /dev/null +++ b/lib/models/message.atd @@ -0,0 +1,29 @@ +type snowflake = abstract +type user = abstract +type member = abstract +type role = abstract +type attachment = abstract +type embed = abstract +type reaction = abstract + +type t = { + id: snowflake; + author: user; + channel_id: snowflake; + ?member: 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; +} \ 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..79f33a1 --- /dev/null +++ b/lib/models/message_j.ml @@ -0,0 +1,1314 @@ +(* 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 member = Member_t.t + +type embed = Embed_t.t + +type attachment = Attachment_t.t + +type t = Message_t.t = { + id: snowflake; + author: user; + channel_id: snowflake; + member: 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 +} + +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_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_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_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_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_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_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_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_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) diff --git a/lib/models/message_j.mli b/lib/models/message_j.mli new file mode 100644 index 0000000..8f7ce13 --- /dev/null +++ b/lib/models/message_j.mli @@ -0,0 +1,199 @@ +(* 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 member = Member_t.t + +type embed = Embed_t.t + +type attachment = Attachment_t.t + +type t = Message_t.t = { + id: snowflake; + author: user; + channel_id: snowflake; + member: 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 +} + +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_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_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}. *) + diff --git a/lib/models/message_t.ml b/lib/models/message_t.ml new file mode 100644 index 0000000..3d37442 --- /dev/null +++ b/lib/models/message_t.ml @@ -0,0 +1,38 @@ +(* 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 member = Member_t.t + +type embed = Embed_t.t + +type attachment = Attachment_t.t + +type t = { + id: snowflake; + author: user; + channel_id: snowflake; + member: 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 +} diff --git a/lib/models/message_t.mli b/lib/models/message_t.mli new file mode 100644 index 0000000..3d37442 --- /dev/null +++ b/lib/models/message_t.mli @@ -0,0 +1,38 @@ +(* 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 member = Member_t.t + +type embed = Embed_t.t + +type attachment = Attachment_t.t + +type t = { + id: snowflake; + author: user; + channel_id: snowflake; + member: 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 +} diff --git a/lib/models/presence.atd b/lib/models/presence.atd new file mode 100644 index 0000000..c455fec --- /dev/null +++ b/lib/models/presence.atd @@ -0,0 +1,13 @@ +type user = abstract +type role = abstract +type activity = abstract +type guild = abstract + +type t = { + user: user; + roles: role list; + ?game: activity option; + guild: guild; + 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..91ef86d --- /dev/null +++ b/lib/models/presence_j.ml @@ -0,0 +1,504 @@ +(* Auto-generated from "presence.atd" *) +[@@@ocaml.warning "-27-32-35-39"] + +type user = User_t.t + +type role = Role_t.t + +type guild = Guild_t.t + +type activity = Activity_t.t + +type t = Presence_t.t = { + user: user; + roles: role list; + game: activity option; + guild: guild; + 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_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_guild = ( + Guild_j.write_t +) +let string_of_guild ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_guild ob x; + Bi_outbuf.contents ob +let read_guild = ( + Guild_j.read_t +) +let guild_of_string s = + read_guild (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_role + ) +) +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_role + ) +) +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_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\":"; + ( + write_guild + ) + ob x.guild; + 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 = 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 -> ( + 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' then ( + 3 + ) + 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 ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -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 + ) + ) + | 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_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 := ( + ( + read_guild + ) 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 -> ( + 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' then ( + 3 + ) + 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 ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -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 + ) + ) + | 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_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 := ( + ( + read_guild + ) 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"; "status"; "activities" |]; + ( + { + user = !field_user; + roles = !field_roles; + game = !field_game; + guild = !field_guild; + 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..9da05ec --- /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 role = Role_t.t + +type guild = Guild_t.t + +type activity = Activity_t.t + +type t = Presence_t.t = { + user: user; + roles: role list; + game: activity option; + guild: guild; + 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_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_guild : + Bi_outbuf.t -> guild -> unit + (** Output a JSON value of type {!guild}. *) + +val string_of_guild : + ?len:int -> guild -> string + (** Serialize a value of type {!guild} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_guild : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> guild + (** Input JSON data of type {!guild}. *) + +val guild_of_string : + string -> guild + (** Deserialize JSON data of type {!guild}. *) + +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..7a26905 --- /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 role = Role_t.t + +type guild = Guild_t.t + +type activity = Activity_t.t + +type t = { + user: user; + roles: role list; + game: activity option; + guild: guild; + 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..7a26905 --- /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 role = Role_t.t + +type guild = Guild_t.t + +type activity = Activity_t.t + +type t = { + user: user; + roles: role list; + game: activity option; + guild: guild; + 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 = 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.atd b/lib/models/role.atd new file mode 100644 index 0000000..a6bdcba --- /dev/null +++ b/lib/models/role.atd @@ -0,0 +1,12 @@ +type snowflake = abstract + +type t = { + id: snowflake; + name: string; + colour : int; + hoist: bool; + position: int; + permissions: int; + managed: bool; + mentionable: bool; +} \ No newline at end of file diff --git a/lib/models/role.ml b/lib/models/role.ml deleted file mode 100644 index 0577342..0000000 --- a/lib/models/role.ml +++ /dev/null @@ -1,10 +0,0 @@ -type t = { - id: Snowflake.t; - name: string; - colour: int; - hoist: bool; - position: int; - permissions: int; - managed: bool; - mentionable: bool; -} [@@deriving yojson] \ 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..73e2ff9 --- /dev/null +++ b/lib/models/user.atd @@ -0,0 +1,9 @@ +type snowflake = abstract + +type t = { + id: snowflake; + username: string; + discriminator: string; + ?avatar: string option; + ~bot : bool; +} \ 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..6eb93e6 --- /dev/null +++ b/lib/models/user_j.ml @@ -0,0 +1,368 @@ +(* 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 +} + +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) diff --git a/lib/models/user_j.mli b/lib/models/user_j.mli new file mode 100644 index 0000000..0a1c6e1 --- /dev/null +++ b/lib/models/user_j.mli @@ -0,0 +1,53 @@ +(* 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 +} + +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/user_t.ml b/lib/models/user_t.ml new file mode 100644 index 0000000..b303aa3 --- /dev/null +++ b/lib/models/user_t.ml @@ -0,0 +1,12 @@ +(* 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 +} diff --git a/lib/models/user_t.mli b/lib/models/user_t.mli new file mode 100644 index 0000000..b303aa3 --- /dev/null +++ b/lib/models/user_t.mli @@ -0,0 +1,12 @@ +(* 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 +} -- cgit v1.2.3 From 179d9598fe62e2966471b312fd438e98ff3a272a Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Thu, 13 Dec 2018 15:50:37 -0700 Subject: Fix more dispatch issues --- lib/models/activity.atd | 6 +- lib/models/activity_j.ml | 223 +++++++++++++++++++++---- lib/models/activity_j.mli | 24 +-- lib/models/activity_t.ml | 4 +- lib/models/activity_t.mli | 4 +- lib/models/member.atd | 8 +- lib/models/member_j.ml | 404 ++++++++++++++++++++++++++++++++++++++++------ lib/models/member_j.mli | 30 +++- lib/models/member_t.ml | 10 +- lib/models/member_t.mli | 10 +- lib/models/message.atd | 3 +- lib/models/message_j.ml | 46 ++++-- lib/models/message_j.mli | 50 ++++-- lib/models/message_t.ml | 6 +- lib/models/message_t.mli | 6 +- lib/models/presence.atd | 10 +- lib/models/presence_j.ml | 140 ++++++++-------- lib/models/presence_j.mli | 58 +++---- lib/models/presence_t.ml | 10 +- lib/models/presence_t.mli | 10 +- lib/models/user.atd | 4 + lib/models/user_j.ml | 100 ++++++++++++ lib/models/user_j.mli | 22 +++ lib/models/user_t.ml | 2 + lib/models/user_t.mli | 2 + 25 files changed, 916 insertions(+), 276 deletions(-) (limited to 'lib/models') diff --git a/lib/models/activity.atd b/lib/models/activity.atd index 94b4b3c..8e02191 100644 --- a/lib/models/activity.atd +++ b/lib/models/activity.atd @@ -1,5 +1,5 @@ -type snowflake = abstract - type t = { - id: snowflake; + name: string; + kind : int; + ?url: string option; } \ No newline at end of file diff --git a/lib/models/activity_j.ml b/lib/models/activity_j.ml index 8a4eb2e..eb1a62e 100644 --- a/lib/models/activity_j.ml +++ b/lib/models/activity_j.ml @@ -1,22 +1,65 @@ (* Auto-generated from "activity.atd" *) [@@@ocaml.warning "-27-32-35-39"] -type snowflake = Snowflake_t.t +type t = Activity_t.t = { name: string; kind: int; url: string option } -type t = Activity_t.t = { id: snowflake } - -let write_snowflake = ( - Snowflake_j.write_t +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_string + ) ) -let string_of_snowflake ?(len = 1024) x = +let string_of__1 ?(len = 1024) x = let ob = Bi_outbuf.create len in - write_snowflake ob x; + write__1 ob x; Bi_outbuf.contents ob -let read_snowflake = ( - Snowflake_j.read_t +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 snowflake_of_string s = - read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +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 '{'; @@ -25,11 +68,31 @@ let write_t : _ -> t -> _ = ( is_first := false else Bi_outbuf.add_char ob ','; - Bi_outbuf.add_string ob "\"id\":"; + 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\":"; ( - write_snowflake + Yojson.Safe.write_int ) - ob x.id; + 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 = @@ -40,7 +103,9 @@ 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_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; @@ -50,24 +115,69 @@ let read_t = ( 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 - ) + 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_id := ( + field_name := ( ( - read_snowflake + 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 ) @@ -80,24 +190,69 @@ let read_t = ( 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 - ) + 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_id := ( + field_name := ( ( - read_snowflake + 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 ) @@ -105,10 +260,12 @@ let read_t = ( done; assert false; with Yojson.End_of_object -> ( - if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id" |]; + if !bits0 <> 0x3 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "name"; "kind" |]; ( { - id = !field_id; + name = !field_name; + kind = !field_kind; + url = !field_url; } : t) ) diff --git a/lib/models/activity_j.mli b/lib/models/activity_j.mli index 3c93cc1..c179efb 100644 --- a/lib/models/activity_j.mli +++ b/lib/models/activity_j.mli @@ -1,29 +1,7 @@ (* Auto-generated from "activity.atd" *) [@@@ocaml.warning "-27-32-35-39"] -type snowflake = Snowflake_t.t - -type t = Activity_t.t = { 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}. *) +type t = Activity_t.t = { name: string; kind: int; url: string option } val write_t : Bi_outbuf.t -> t -> unit diff --git a/lib/models/activity_t.ml b/lib/models/activity_t.ml index f9ba6a6..6bb2049 100644 --- a/lib/models/activity_t.ml +++ b/lib/models/activity_t.ml @@ -1,6 +1,4 @@ (* Auto-generated from "activity.atd" *) [@@@ocaml.warning "-27-32-35-39"] -type snowflake = Snowflake_t.t - -type t = { id: snowflake } +type t = { name: string; kind: int; url: string option } diff --git a/lib/models/activity_t.mli b/lib/models/activity_t.mli index f9ba6a6..6bb2049 100644 --- a/lib/models/activity_t.mli +++ b/lib/models/activity_t.mli @@ -1,6 +1,4 @@ (* Auto-generated from "activity.atd" *) [@@@ocaml.warning "-27-32-35-39"] -type snowflake = Snowflake_t.t - -type t = { id: snowflake } +type t = { name: string; kind: int; url: string option } diff --git a/lib/models/member.atd b/lib/models/member.atd index ea00032..11d8b62 100644 --- a/lib/models/member.atd +++ b/lib/models/member.atd @@ -1,11 +1,15 @@ type snowflake = abstract type user = abstract -type t = { - user: user; +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_j.ml b/lib/models/member_j.ml index 3826c93..7fd4aec 100644 --- a/lib/models/member_j.ml +++ b/lib/models/member_j.ml @@ -6,7 +6,15 @@ type user = User_t.t type snowflake = Snowflake_t.t type t = Member_t.t = { - user: user; + 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; @@ -115,15 +123,6 @@ 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_user - ) - ob x.user; (match x.nick with None -> () | Some x -> if !is_first then is_first := false @@ -171,6 +170,15 @@ let write_t : _ -> t -> _ = ( 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 = @@ -181,12 +189,12 @@ 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_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; @@ -201,7 +209,7 @@ let read_t = ( 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 ( - 4 + 3 ) else ( -1 @@ -209,7 +217,7 @@ let read_t = ( ) | 'm' -> ( if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then ( - 5 + 4 ) else ( -1 @@ -217,7 +225,7 @@ let read_t = ( ) | 'n' -> ( if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then ( - 1 + 0 ) else ( -1 @@ -225,7 +233,7 @@ let read_t = ( ) | '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 + 5 ) else ( -1 @@ -237,7 +245,7 @@ let read_t = ( ) | 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 + 1 ) else ( -1 @@ -245,7 +253,7 @@ let read_t = ( ) | 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 ( - 3 + 2 ) else ( -1 @@ -260,13 +268,6 @@ let read_t = ( ( match i with | 0 -> - field_user := ( - ( - read_user - ) p lb - ); - bits0 := !bits0 lor 0x1; - | 1 -> if not (Yojson.Safe.read_null_if_possible p lb) then ( field_nick := ( Some ( @@ -276,31 +277,38 @@ let read_t = ( ) ); ) - | 2 -> + | 1 -> field_roles := ( ( read__2 ) p lb ); - bits0 := !bits0 lor 0x2; - | 3 -> + 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_deaf := ( + field_mute := ( ( Atdgen_runtime.Oj_run.read_bool ) p lb ); bits0 := !bits0 lor 0x8; | 5 -> - field_mute := ( + field_user := ( ( - Atdgen_runtime.Oj_run.read_bool + read_user ) p lb ); bits0 := !bits0 lor 0x10; @@ -321,7 +329,7 @@ let read_t = ( 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 ( - 4 + 3 ) else ( -1 @@ -329,7 +337,7 @@ let read_t = ( ) | 'm' -> ( if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then ( - 5 + 4 ) else ( -1 @@ -337,7 +345,7 @@ let read_t = ( ) | 'n' -> ( if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then ( - 1 + 0 ) else ( -1 @@ -345,7 +353,7 @@ let read_t = ( ) | '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 + 5 ) else ( -1 @@ -357,7 +365,7 @@ let read_t = ( ) | 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 + 1 ) else ( -1 @@ -365,7 +373,7 @@ let read_t = ( ) | 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 ( - 3 + 2 ) else ( -1 @@ -380,13 +388,6 @@ let read_t = ( ( match i with | 0 -> - field_user := ( - ( - read_user - ) p lb - ); - bits0 := !bits0 lor 0x1; - | 1 -> if not (Yojson.Safe.read_null_if_possible p lb) then ( field_nick := ( Some ( @@ -396,31 +397,38 @@ let read_t = ( ) ); ) - | 2 -> + | 1 -> field_roles := ( ( read__2 ) p lb ); - bits0 := !bits0 lor 0x2; - | 3 -> + 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_deaf := ( + field_mute := ( ( Atdgen_runtime.Oj_run.read_bool ) p lb ); bits0 := !bits0 lor 0x8; | 5 -> - field_mute := ( + field_user := ( ( - Atdgen_runtime.Oj_run.read_bool + read_user ) p lb ); bits0 := !bits0 lor 0x10; @@ -431,18 +439,312 @@ let read_t = ( done; assert false; with Yojson.End_of_object -> ( - if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "user"; "roles"; "joined_at"; "deaf"; "mute" |]; + if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "roles"; "joined_at"; "deaf"; "mute"; "user" |]; ( { - user = !field_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 index 28c89fd..f160b6d 100644 --- a/lib/models/member_j.mli +++ b/lib/models/member_j.mli @@ -6,7 +6,15 @@ type user = User_t.t type snowflake = Snowflake_t.t type t = Member_t.t = { - user: user; + 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; @@ -74,3 +82,23 @@ 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 index 1dd6ecd..6262e1b 100644 --- a/lib/models/member_t.ml +++ b/lib/models/member_t.ml @@ -6,7 +6,15 @@ type user = User_t.t type snowflake = Snowflake_t.t type t = { - user: user; + 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; diff --git a/lib/models/member_t.mli b/lib/models/member_t.mli index 1dd6ecd..6262e1b 100644 --- a/lib/models/member_t.mli +++ b/lib/models/member_t.mli @@ -6,7 +6,15 @@ type user = User_t.t type snowflake = Snowflake_t.t type t = { - user: user; + 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; diff --git a/lib/models/message.atd b/lib/models/message.atd index 88c60ec..1c90be9 100644 --- a/lib/models/message.atd +++ b/lib/models/message.atd @@ -1,6 +1,7 @@ type snowflake = abstract type user = abstract type member = abstract +type partial_member = abstract type role = abstract type attachment = abstract type embed = abstract @@ -10,7 +11,7 @@ type t = { id: snowflake; author: user; channel_id: snowflake; - ?member: member option; + ?member: partial_member option; ?guild_id: snowflake option; content: string; timestamp: string; diff --git a/lib/models/message_j.ml b/lib/models/message_j.ml index 79f33a1..206d69c 100644 --- a/lib/models/message_j.ml +++ b/lib/models/message_j.ml @@ -9,7 +9,7 @@ type role = Role_t.t type reaction = Reaction_t.t -type member = Member_t.t +type partial_member = Member_t.partial_member type embed = Embed_t.t @@ -19,7 +19,7 @@ type t = Message_t.t = { id: snowflake; author: user; channel_id: snowflake; - member: member option; + member: partial_member option; guild_id: snowflake option; content: string; timestamp: string; @@ -37,6 +37,8 @@ type t = Message_t.t = { kind: int } +type member = Member_t.t + let write_user = ( User_j.write_t ) @@ -85,18 +87,18 @@ let read_reaction = ( ) let reaction_of_string s = read_reaction (Yojson.Safe.init_lexer ()) (Lexing.from_string s) -let write_member = ( - Member_j.write_t +let write_partial_member = ( + Member_j.write_partial_member ) -let string_of_member ?(len = 1024) x = +let string_of_partial_member ?(len = 1024) x = let ob = Bi_outbuf.create len in - write_member ob x; + write_partial_member ob x; Bi_outbuf.contents ob -let read_member = ( - Member_j.read_t +let read_partial_member = ( + Member_j.read_partial_member ) -let member_of_string s = - read_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let partial_member_of_string s = + read_partial_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s) let write_embed = ( Embed_j.write_t ) @@ -317,7 +319,7 @@ 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_member + write_partial_member ) ) let string_of__1 ?(len = 1024) x = @@ -337,7 +339,7 @@ let read__1 = ( | "Some" -> Atdgen_runtime.Oj_run.read_until_field_value p lb; let x = ( - read_member + read_partial_member ) p lb in Yojson.Safe.read_space p lb; @@ -360,7 +362,7 @@ let read__1 = ( Yojson.Safe.read_comma p lb; Yojson.Safe.read_space p lb; let x = ( - read_member + read_partial_member ) p lb in Yojson.Safe.read_space p lb; @@ -410,7 +412,7 @@ let write_t : _ -> t -> _ = ( Bi_outbuf.add_char ob ','; Bi_outbuf.add_string ob "\"member\":"; ( - write_member + write_partial_member ) ob x; ); @@ -810,7 +812,7 @@ let read_t = ( field_member := ( Some ( ( - read_member + read_partial_member ) p lb ) ); @@ -1158,7 +1160,7 @@ let read_t = ( field_member := ( Some ( ( - read_member + read_partial_member ) p lb ) ); @@ -1312,3 +1314,15 @@ let read_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 index 8f7ce13..e3a3e5b 100644 --- a/lib/models/message_j.mli +++ b/lib/models/message_j.mli @@ -9,7 +9,7 @@ type role = Role_t.t type reaction = Reaction_t.t -type member = Member_t.t +type partial_member = Member_t.partial_member type embed = Embed_t.t @@ -19,7 +19,7 @@ type t = Message_t.t = { id: snowflake; author: user; channel_id: snowflake; - member: member option; + member: partial_member option; guild_id: snowflake option; content: string; timestamp: string; @@ -37,6 +37,8 @@ type t = Message_t.t = { kind: int } +type member = Member_t.t + val write_user : Bi_outbuf.t -> user -> unit (** Output a JSON value of type {!user}. *) @@ -117,25 +119,25 @@ val reaction_of_string : string -> reaction (** Deserialize JSON data of type {!reaction}. *) -val write_member : - Bi_outbuf.t -> member -> unit - (** Output a JSON value of type {!member}. *) +val write_partial_member : + Bi_outbuf.t -> partial_member -> unit + (** Output a JSON value of type {!partial_member}. *) -val string_of_member : - ?len:int -> member -> string - (** Serialize a value of type {!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_member : - Yojson.Safe.lexer_state -> Lexing.lexbuf -> member - (** Input JSON data of type {!member}. *) +val read_partial_member : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_member + (** Input JSON data of type {!partial_member}. *) -val member_of_string : - string -> member - (** Deserialize JSON data of type {!member}. *) +val partial_member_of_string : + string -> partial_member + (** Deserialize JSON data of type {!partial_member}. *) val write_embed : Bi_outbuf.t -> embed -> unit @@ -197,3 +199,23 @@ 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 index 3d37442..2442d76 100644 --- a/lib/models/message_t.ml +++ b/lib/models/message_t.ml @@ -9,7 +9,7 @@ type role = Role_t.t type reaction = Reaction_t.t -type member = Member_t.t +type partial_member = Member_t.partial_member type embed = Embed_t.t @@ -19,7 +19,7 @@ type t = { id: snowflake; author: user; channel_id: snowflake; - member: member option; + member: partial_member option; guild_id: snowflake option; content: string; timestamp: string; @@ -36,3 +36,5 @@ type t = { webhook_id: snowflake; kind: int } + +type member = Member_t.t diff --git a/lib/models/message_t.mli b/lib/models/message_t.mli index 3d37442..2442d76 100644 --- a/lib/models/message_t.mli +++ b/lib/models/message_t.mli @@ -9,7 +9,7 @@ type role = Role_t.t type reaction = Reaction_t.t -type member = Member_t.t +type partial_member = Member_t.partial_member type embed = Embed_t.t @@ -19,7 +19,7 @@ type t = { id: snowflake; author: user; channel_id: snowflake; - member: member option; + member: partial_member option; guild_id: snowflake option; content: string; timestamp: string; @@ -36,3 +36,5 @@ type t = { webhook_id: snowflake; kind: int } + +type member = Member_t.t diff --git a/lib/models/presence.atd b/lib/models/presence.atd index c455fec..da9b3fd 100644 --- a/lib/models/presence.atd +++ b/lib/models/presence.atd @@ -1,13 +1,13 @@ +type snowflake = abstract type user = abstract -type role = abstract +type partial_user = abstract type activity = abstract -type guild = abstract type t = { - user: user; - roles: role list; + user: partial_user; + roles: snowflake list; ?game: activity option; - guild: guild; + guild_id: snowflake; status: string; activities: activity list; } \ No newline at end of file diff --git a/lib/models/presence_j.ml b/lib/models/presence_j.ml index 91ef86d..b4ea497 100644 --- a/lib/models/presence_j.ml +++ b/lib/models/presence_j.ml @@ -3,17 +3,17 @@ type user = User_t.t -type role = Role_t.t +type snowflake = Snowflake_t.t -type guild = Guild_t.t +type partial_user = User_t.partial_user type activity = Activity_t.t type t = Presence_t.t = { - user: user; - roles: role list; + user: partial_user; + roles: snowflake list; game: activity option; - guild: guild; + guild_id: snowflake; status: string; activities: activity list } @@ -30,30 +30,30 @@ let read_user = ( ) let user_of_string s = read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) -let write_role = ( - Role_j.write_t +let write_snowflake = ( + Snowflake_j.write_t ) -let string_of_role ?(len = 1024) x = +let string_of_snowflake ?(len = 1024) x = let ob = Bi_outbuf.create len in - write_role ob x; + write_snowflake ob x; Bi_outbuf.contents ob -let read_role = ( - Role_j.read_t +let read_snowflake = ( + Snowflake_j.read_t ) -let role_of_string s = - read_role (Yojson.Safe.init_lexer ()) (Lexing.from_string s) -let write_guild = ( - Guild_j.write_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_guild ?(len = 1024) x = +let string_of_partial_user ?(len = 1024) x = let ob = Bi_outbuf.create len in - write_guild ob x; + write_partial_user ob x; Bi_outbuf.contents ob -let read_guild = ( - Guild_j.read_t +let read_partial_user = ( + User_j.read_partial_user ) -let guild_of_string s = - read_guild (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let partial_user_of_string s = + read_partial_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) let write_activity = ( Activity_j.write_t ) @@ -141,7 +141,7 @@ 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_role + write_snowflake ) ) let string_of__1 ?(len = 1024) x = @@ -150,7 +150,7 @@ let string_of__1 ?(len = 1024) x = Bi_outbuf.contents ob let read__1 = ( Atdgen_runtime.Oj_run.read_list ( - read_role + read_snowflake ) ) let _1_of_string s = @@ -165,7 +165,7 @@ let write_t : _ -> t -> _ = ( Bi_outbuf.add_char ob ','; Bi_outbuf.add_string ob "\"user\":"; ( - write_user + write_partial_user ) ob x.user; if !is_first then @@ -192,11 +192,11 @@ let write_t : _ -> t -> _ = ( is_first := false else Bi_outbuf.add_char ob ','; - Bi_outbuf.add_string ob "\"guild\":"; + Bi_outbuf.add_string ob "\"guild_id\":"; ( - write_guild + write_snowflake ) - ob x.guild; + ob x.guild_id; if !is_first then is_first := false else @@ -228,7 +228,7 @@ let read_t = ( 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 = ref (Obj.magic (Sys.opaque_identity 0.0)) 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 @@ -264,26 +264,12 @@ let read_t = ( ) ) | 5 -> ( - 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' then ( - 3 - ) - 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 ( - 1 - ) - else ( - -1 - ) - ) - | _ -> ( - -1 - ) + 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 ( @@ -293,6 +279,14 @@ let read_t = ( -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 @@ -312,7 +306,7 @@ let read_t = ( | 0 -> field_user := ( ( - read_user + read_partial_user ) p lb ); bits0 := !bits0 lor 0x1; @@ -334,9 +328,9 @@ let read_t = ( ); ) | 3 -> - field_guild := ( + field_guild_id := ( ( - read_guild + read_snowflake ) p lb ); bits0 := !bits0 lor 0x4; @@ -390,26 +384,12 @@ let read_t = ( ) ) | 5 -> ( - 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' then ( - 3 - ) - 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 ( - 1 - ) - else ( - -1 - ) - ) - | _ -> ( - -1 - ) + 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 ( @@ -419,6 +399,14 @@ let read_t = ( -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 @@ -438,7 +426,7 @@ let read_t = ( | 0 -> field_user := ( ( - read_user + read_partial_user ) p lb ); bits0 := !bits0 lor 0x1; @@ -460,9 +448,9 @@ let read_t = ( ); ) | 3 -> - field_guild := ( + field_guild_id := ( ( - read_guild + read_snowflake ) p lb ); bits0 := !bits0 lor 0x4; @@ -487,13 +475,13 @@ let read_t = ( done; assert false; with Yojson.End_of_object -> ( - if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "user"; "roles"; "guild"; "status"; "activities" |]; + 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 = !field_guild; + guild_id = !field_guild_id; status = !field_status; activities = !field_activities; } diff --git a/lib/models/presence_j.mli b/lib/models/presence_j.mli index 9da05ec..be68b3f 100644 --- a/lib/models/presence_j.mli +++ b/lib/models/presence_j.mli @@ -3,17 +3,17 @@ type user = User_t.t -type role = Role_t.t +type snowflake = Snowflake_t.t -type guild = Guild_t.t +type partial_user = User_t.partial_user type activity = Activity_t.t type t = Presence_t.t = { - user: user; - roles: role list; + user: partial_user; + roles: snowflake list; game: activity option; - guild: guild; + guild_id: snowflake; status: string; activities: activity list } @@ -38,45 +38,45 @@ val user_of_string : string -> user (** Deserialize JSON data of type {!user}. *) -val write_role : - Bi_outbuf.t -> role -> unit - (** Output a JSON value of type {!role}. *) +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) -val string_of_role : - ?len:int -> role -> string - (** Serialize a value of type {!role} +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_role : - Yojson.Safe.lexer_state -> Lexing.lexbuf -> role - (** Input JSON data of type {!role}. *) +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) -val role_of_string : - string -> role - (** Deserialize JSON data of type {!role}. *) +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) -val write_guild : - Bi_outbuf.t -> guild -> unit - (** Output a JSON value of type {!guild}. *) +val write_partial_user : + Bi_outbuf.t -> partial_user -> unit + (** Output a JSON value of type {!partial_user}. *) -val string_of_guild : - ?len:int -> guild -> string - (** Serialize a value of type {!guild} +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_guild : - Yojson.Safe.lexer_state -> Lexing.lexbuf -> guild - (** Input JSON data of type {!guild}. *) +val read_partial_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_user + (** Input JSON data of type {!partial_user}. *) -val guild_of_string : - string -> guild - (** Deserialize JSON data of type {!guild}. *) +val partial_user_of_string : + string -> partial_user + (** Deserialize JSON data of type {!partial_user}. *) val write_activity : Bi_outbuf.t -> activity -> unit diff --git a/lib/models/presence_t.ml b/lib/models/presence_t.ml index 7a26905..940d986 100644 --- a/lib/models/presence_t.ml +++ b/lib/models/presence_t.ml @@ -3,17 +3,17 @@ type user = User_t.t -type role = Role_t.t +type snowflake = Snowflake_t.t -type guild = Guild_t.t +type partial_user = User_t.partial_user type activity = Activity_t.t type t = { - user: user; - roles: role list; + user: partial_user; + roles: snowflake list; game: activity option; - guild: guild; + guild_id: snowflake; status: string; activities: activity list } diff --git a/lib/models/presence_t.mli b/lib/models/presence_t.mli index 7a26905..940d986 100644 --- a/lib/models/presence_t.mli +++ b/lib/models/presence_t.mli @@ -3,17 +3,17 @@ type user = User_t.t -type role = Role_t.t +type snowflake = Snowflake_t.t -type guild = Guild_t.t +type partial_user = User_t.partial_user type activity = Activity_t.t type t = { - user: user; - roles: role list; + user: partial_user; + roles: snowflake list; game: activity option; - guild: guild; + guild_id: snowflake; status: string; activities: activity list } diff --git a/lib/models/user.atd b/lib/models/user.atd index 73e2ff9..106b3b0 100644 --- a/lib/models/user.atd +++ b/lib/models/user.atd @@ -6,4 +6,8 @@ type t = { discriminator: string; ?avatar: string option; ~bot : bool; +} + +type partial_user = { + id: snowflake; } \ No newline at end of file diff --git a/lib/models/user_j.ml b/lib/models/user_j.ml index 6eb93e6..552a20d 100644 --- a/lib/models/user_j.ml +++ b/lib/models/user_j.ml @@ -11,6 +11,8 @@ type t = User_t.t = { bot: bool } +type partial_user = User_t.partial_user = { id: snowflake } + let write_snowflake = ( Snowflake_j.write_t ) @@ -366,3 +368,101 @@ let read_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 index 0a1c6e1..576768e 100644 --- a/lib/models/user_j.mli +++ b/lib/models/user_j.mli @@ -11,6 +11,8 @@ type t = User_t.t = { 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}. *) @@ -51,3 +53,23 @@ 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 index b303aa3..294cf0a 100644 --- a/lib/models/user_t.ml +++ b/lib/models/user_t.ml @@ -10,3 +10,5 @@ type t = { avatar: string option; bot: bool } + +type partial_user = { id: snowflake } diff --git a/lib/models/user_t.mli b/lib/models/user_t.mli index b303aa3..294cf0a 100644 --- a/lib/models/user_t.mli +++ b/lib/models/user_t.mli @@ -10,3 +10,5 @@ type t = { avatar: string option; bot: bool } + +type partial_user = { id: snowflake } -- cgit v1.2.3