aboutsummaryrefslogtreecommitdiff
path: root/lib/models
diff options
context:
space:
mode:
authorAdelyn Breedlove <[email protected]>2018-12-13 16:44:32 -0700
committerAdelyn Breedlove <[email protected]>2018-12-13 16:44:32 -0700
commitc6463e5ca9c557c7e8ecd05e71d37f237bc59da6 (patch)
treedf4b700a4c039e34bbee401250281a6c1814d4ca /lib/models
parentMerge branch 'dev' of https://gitlab.com/Mishio595/disml into dev (diff)
parentFix more dispatch issues (diff)
downloaddisml-c6463e5ca9c557c7e8ecd05e71d37f237bc59da6.tar.xz
disml-c6463e5ca9c557c7e8ecd05e71d37f237bc59da6.zip
Merge branch 'dev' of https://gitlab.com/Mishio595/disml into dev
Diffstat (limited to 'lib/models')
-rw-r--r--lib/models/activity.atd5
-rw-r--r--lib/models/activity.ml4
-rw-r--r--lib/models/activity_j.ml274
-rw-r--r--lib/models/activity_j.mli25
-rw-r--r--lib/models/activity_t.ml4
-rw-r--r--lib/models/activity_t.mli4
-rw-r--r--lib/models/attachment.atd11
-rw-r--r--lib/models/attachment.ml9
-rw-r--r--lib/models/attachment_j.ml456
-rw-r--r--lib/models/attachment_j.mli55
-rw-r--r--lib/models/attachment_t.ml14
-rw-r--r--lib/models/attachment_t.mli14
-rw-r--r--lib/models/ban.atd6
-rw-r--r--lib/models/ban.ml4
-rw-r--r--lib/models/ban_j.ml235
-rw-r--r--lib/models/ban_j.mli47
-rw-r--r--lib/models/ban_t.ml6
-rw-r--r--lib/models/ban_t.mli6
-rw-r--r--lib/models/channel.atd19
-rw-r--r--lib/models/channel.ml17
-rw-r--r--lib/models/channel_j.ml1136
-rw-r--r--lib/models/channel_j.mli84
-rw-r--r--lib/models/channel_t.ml23
-rw-r--r--lib/models/channel_t.mli23
-rw-r--r--lib/models/embed.atd44
-rw-r--r--lib/models/embed.ml44
-rw-r--r--lib/models/embed_j.ml2283
-rw-r--r--lib/models/embed_j.mli168
-rw-r--r--lib/models/embed_t.ml36
-rw-r--r--lib/models/embed_t.mli36
-rw-r--r--lib/models/emoji.atd12
-rw-r--r--lib/models/emoji.ml9
-rw-r--r--lib/models/emoji_j.ml701
-rw-r--r--lib/models/emoji_j.mli77
-rw-r--r--lib/models/emoji_t.ml16
-rw-r--r--lib/models/emoji_t.mli16
-rw-r--r--lib/models/guild.atd36
-rw-r--r--lib/models/guild.ml28
-rw-r--r--lib/models/guild_j.ml1948
-rw-r--r--lib/models/guild_j.mli184
-rw-r--r--lib/models/guild_t.ml43
-rw-r--r--lib/models/guild_t.mli43
-rw-r--r--lib/models/member.atd15
-rw-r--r--lib/models/member.ml8
-rw-r--r--lib/models/member_j.ml750
-rw-r--r--lib/models/member_j.mli104
-rw-r--r--lib/models/member_t.ml23
-rw-r--r--lib/models/member_t.mli23
-rw-r--r--lib/models/message.atd30
-rw-r--r--lib/models/message.ml21
-rw-r--r--lib/models/message_j.ml1328
-rw-r--r--lib/models/message_j.mli221
-rw-r--r--lib/models/message_t.ml40
-rw-r--r--lib/models/message_t.mli40
-rw-r--r--lib/models/presence.atd13
-rw-r--r--lib/models/presence.ml8
-rw-r--r--lib/models/presence_j.ml492
-rw-r--r--lib/models/presence_j.mli120
-rw-r--r--lib/models/presence_t.ml19
-rw-r--r--lib/models/presence_t.mli19
-rw-r--r--lib/models/reaction.atd6
-rw-r--r--lib/models/reaction.ml4
-rw-r--r--lib/models/reaction_j.ml180
-rw-r--r--lib/models/reaction_j.mli47
-rw-r--r--lib/models/reaction_t.ml6
-rw-r--r--lib/models/reaction_t.mli6
-rw-r--r--lib/models/role.atd (renamed from lib/models/role.ml)8
-rw-r--r--lib/models/role_j.ml449
-rw-r--r--lib/models/role_j.mli56
-rw-r--r--lib/models/role_t.ml15
-rw-r--r--lib/models/role_t.mli15
-rw-r--r--lib/models/snowflake.atd1
-rw-r--r--lib/models/snowflake.ml16
-rw-r--r--lib/models/snowflake_j.ml17
-rw-r--r--lib/models/snowflake_j.mli25
-rw-r--r--lib/models/snowflake_t.ml4
-rw-r--r--lib/models/snowflake_t.mli4
-rw-r--r--lib/models/user.atd13
-rw-r--r--lib/models/user.ml7
-rw-r--r--lib/models/user_j.ml468
-rw-r--r--lib/models/user_j.mli75
-rw-r--r--lib/models/user_t.ml14
-rw-r--r--lib/models/user_t.mli14
83 files changed, 12747 insertions, 182 deletions
diff --git a/lib/models/activity.atd b/lib/models/activity.atd
new file mode 100644
index 0000000..8e02191
--- /dev/null
+++ b/lib/models/activity.atd
@@ -0,0 +1,5 @@
+type t = {
+ name: string;
+ kind <json name="type">: int;
+ ?url: string option;
+} \ No newline at end of file
diff --git a/lib/models/activity.ml b/lib/models/activity.ml
deleted file mode 100644
index 80f1049..0000000
--- a/lib/models/activity.ml
+++ /dev/null
@@ -1,4 +0,0 @@
-type t = {
- id: Snowflake.t;
-}
-[@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/activity_j.ml b/lib/models/activity_j.ml
new file mode 100644
index 0000000..eb1a62e
--- /dev/null
+++ b/lib/models/activity_j.ml
@@ -0,0 +1,274 @@
+(* Auto-generated from "activity.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type t = Activity_t.t = { name: string; kind: int; url: string option }
+
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_string
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"name\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.name;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"type\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.kind;
+ (match x.url with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"url\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_kind = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_url = ref (None) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'n' -> (
+ if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 't' -> (
+ if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_name := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_kind := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'n' -> (
+ if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 't' -> (
+ if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_name := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_kind := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x3 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "name"; "kind" |];
+ (
+ {
+ name = !field_name;
+ kind = !field_kind;
+ url = !field_url;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/activity_j.mli b/lib/models/activity_j.mli
new file mode 100644
index 0000000..c179efb
--- /dev/null
+++ b/lib/models/activity_j.mli
@@ -0,0 +1,25 @@
+(* Auto-generated from "activity.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type t = Activity_t.t = { name: string; kind: int; url: string option }
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/activity_t.ml b/lib/models/activity_t.ml
new file mode 100644
index 0000000..6bb2049
--- /dev/null
+++ b/lib/models/activity_t.ml
@@ -0,0 +1,4 @@
+(* Auto-generated from "activity.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type t = { name: string; kind: int; url: string option }
diff --git a/lib/models/activity_t.mli b/lib/models/activity_t.mli
new file mode 100644
index 0000000..6bb2049
--- /dev/null
+++ b/lib/models/activity_t.mli
@@ -0,0 +1,4 @@
+(* Auto-generated from "activity.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type t = { name: string; kind: int; url: string option }
diff --git a/lib/models/attachment.atd b/lib/models/attachment.atd
new file mode 100644
index 0000000..9757b49
--- /dev/null
+++ b/lib/models/attachment.atd
@@ -0,0 +1,11 @@
+type snowflake <ocaml from="Snowflake" t="t"> = abstract
+
+type t = {
+ id: snowflake;
+ filename: string;
+ size: int;
+ url: string;
+ proxy_url: string;
+ ?height: int option;
+ ?width: int option;
+} \ No newline at end of file
diff --git a/lib/models/attachment.ml b/lib/models/attachment.ml
deleted file mode 100644
index 595aa45..0000000
--- a/lib/models/attachment.ml
+++ /dev/null
@@ -1,9 +0,0 @@
-type t = {
- id: Snowflake.t;
- filename: string;
- size: int;
- url: string;
- proxy_url: string;
- height: int option;
- width: int option;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/attachment_j.ml b/lib/models/attachment_j.ml
new file mode 100644
index 0000000..28f909d
--- /dev/null
+++ b/lib/models/attachment_j.ml
@@ -0,0 +1,456 @@
+(* Auto-generated from "attachment.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = Attachment_t.t = {
+ id: snowflake;
+ filename: string;
+ size: int;
+ url: string;
+ proxy_url: string;
+ height: int option;
+ width: int option
+}
+
+let write_snowflake = (
+ Snowflake_j.write_t
+)
+let string_of_snowflake ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_snowflake ob x;
+ Bi_outbuf.contents ob
+let read_snowflake = (
+ Snowflake_j.read_t
+)
+let snowflake_of_string s =
+ read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_int
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"id\":";
+ (
+ write_snowflake
+ )
+ ob x.id;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"filename\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.filename;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"size\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.size;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"url\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.url;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"proxy_url\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.proxy_url;
+ (match x.height with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"height\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ (match x.width with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"width\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_filename = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_size = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_url = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_proxy_url = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_height = ref (None) in
+ let field_width = ref (None) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ if String.unsafe_get s pos = 's' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'z' && String.unsafe_get s (pos+3) = 'e' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'f' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'a' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'u' && String.unsafe_get s (pos+7) = 'r' && String.unsafe_get s (pos+8) = 'l' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_filename := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ field_size := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 3 ->
+ field_url := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 4 ->
+ field_proxy_url := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | 5 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_height := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 6 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_width := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ if String.unsafe_get s pos = 's' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'z' && String.unsafe_get s (pos+3) = 'e' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'f' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'a' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'u' && String.unsafe_get s (pos+7) = 'r' && String.unsafe_get s (pos+8) = 'l' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_filename := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ field_size := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 3 ->
+ field_url := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 4 ->
+ field_proxy_url := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | 5 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_height := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 6 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_width := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "filename"; "size"; "url"; "proxy_url" |];
+ (
+ {
+ id = !field_id;
+ filename = !field_filename;
+ size = !field_size;
+ url = !field_url;
+ proxy_url = !field_proxy_url;
+ height = !field_height;
+ width = !field_width;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/attachment_j.mli b/lib/models/attachment_j.mli
new file mode 100644
index 0000000..6b11b08
--- /dev/null
+++ b/lib/models/attachment_j.mli
@@ -0,0 +1,55 @@
+(* Auto-generated from "attachment.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = Attachment_t.t = {
+ id: snowflake;
+ filename: string;
+ size: int;
+ url: string;
+ proxy_url: string;
+ height: int option;
+ width: int option
+}
+
+val write_snowflake :
+ Bi_outbuf.t -> snowflake -> unit
+ (** Output a JSON value of type {!snowflake}. *)
+
+val string_of_snowflake :
+ ?len:int -> snowflake -> string
+ (** Serialize a value of type {!snowflake}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_snowflake :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake
+ (** Input JSON data of type {!snowflake}. *)
+
+val snowflake_of_string :
+ string -> snowflake
+ (** Deserialize JSON data of type {!snowflake}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/attachment_t.ml b/lib/models/attachment_t.ml
new file mode 100644
index 0000000..0485dcc
--- /dev/null
+++ b/lib/models/attachment_t.ml
@@ -0,0 +1,14 @@
+(* Auto-generated from "attachment.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ id: snowflake;
+ filename: string;
+ size: int;
+ url: string;
+ proxy_url: string;
+ height: int option;
+ width: int option
+}
diff --git a/lib/models/attachment_t.mli b/lib/models/attachment_t.mli
new file mode 100644
index 0000000..0485dcc
--- /dev/null
+++ b/lib/models/attachment_t.mli
@@ -0,0 +1,14 @@
+(* Auto-generated from "attachment.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ id: snowflake;
+ filename: string;
+ size: int;
+ url: string;
+ proxy_url: string;
+ height: int option;
+ width: int option
+}
diff --git a/lib/models/ban.atd b/lib/models/ban.atd
new file mode 100644
index 0000000..0a87338
--- /dev/null
+++ b/lib/models/ban.atd
@@ -0,0 +1,6 @@
+type user <ocaml from="User" t="t"> = abstract
+
+type t = {
+ ?reason: string option;
+ user: user;
+} \ No newline at end of file
diff --git a/lib/models/ban.ml b/lib/models/ban.ml
deleted file mode 100644
index ff0fb67..0000000
--- a/lib/models/ban.ml
+++ /dev/null
@@ -1,4 +0,0 @@
-type t = {
- id: Snowflake.t;
- user: User.t;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/ban_j.ml b/lib/models/ban_j.ml
new file mode 100644
index 0000000..e608f67
--- /dev/null
+++ b/lib/models/ban_j.ml
@@ -0,0 +1,235 @@
+(* Auto-generated from "ban.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type t = Ban_t.t = { reason: string option; user: user }
+
+let write_user = (
+ User_j.write_t
+)
+let string_of_user ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_user ob x;
+ Bi_outbuf.contents ob
+let read_user = (
+ User_j.read_t
+)
+let user_of_string s =
+ read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_string
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ (match x.reason with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"reason\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"user\":";
+ (
+ write_user
+ )
+ ob x.user;
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_reason = ref (None) in
+ let field_user = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 's' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'n' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_reason := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ field_user := (
+ (
+ read_user
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 's' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'n' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_reason := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ field_user := (
+ (
+ read_user
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "user" |];
+ (
+ {
+ reason = !field_reason;
+ user = !field_user;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/ban_j.mli b/lib/models/ban_j.mli
new file mode 100644
index 0000000..9449b5c
--- /dev/null
+++ b/lib/models/ban_j.mli
@@ -0,0 +1,47 @@
+(* Auto-generated from "ban.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type t = Ban_t.t = { reason: string option; user: user }
+
+val write_user :
+ Bi_outbuf.t -> user -> unit
+ (** Output a JSON value of type {!user}. *)
+
+val string_of_user :
+ ?len:int -> user -> string
+ (** Serialize a value of type {!user}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_user :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> user
+ (** Input JSON data of type {!user}. *)
+
+val user_of_string :
+ string -> user
+ (** Deserialize JSON data of type {!user}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/ban_t.ml b/lib/models/ban_t.ml
new file mode 100644
index 0000000..7d9c5a0
--- /dev/null
+++ b/lib/models/ban_t.ml
@@ -0,0 +1,6 @@
+(* Auto-generated from "ban.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type t = { reason: string option; user: user }
diff --git a/lib/models/ban_t.mli b/lib/models/ban_t.mli
new file mode 100644
index 0000000..7d9c5a0
--- /dev/null
+++ b/lib/models/ban_t.mli
@@ -0,0 +1,6 @@
+(* Auto-generated from "ban.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type t = { reason: string option; user: user }
diff --git a/lib/models/channel.atd b/lib/models/channel.atd
new file mode 100644
index 0000000..6ab58cf
--- /dev/null
+++ b/lib/models/channel.atd
@@ -0,0 +1,19 @@
+type snowflake <ocaml from="Snowflake" t="t"> = abstract
+type user <ocaml from="User" t="t"> = abstract
+
+type t = {
+ id: snowflake;
+ kind <json name="type">: int;
+ ?guild_id: snowflake option;
+ ?position: int option;
+ ?name: string option;
+ ?topic: string option;
+ ?nsfw: bool option;
+ ?bitrate: int option;
+ ?user_limit: int option;
+ ?recipients: user list option;
+ ?icon: string option;
+ ?owner_id: snowflake option;
+ ?application_id: snowflake option;
+ ?parent_id: snowflake option;
+} \ No newline at end of file
diff --git a/lib/models/channel.ml b/lib/models/channel.ml
deleted file mode 100644
index ac3e596..0000000
--- a/lib/models/channel.ml
+++ /dev/null
@@ -1,17 +0,0 @@
-type t = {
- id: Snowflake.t;
- kind: int;
- (* guild: Guild.t option; *)
- position: int option;
- permission_overwrites: (int list) option;
- name: string option;
- topic: string option;
- nsfw: bool option;
- bitrate: int option;
- user_limit: int option;
- recipients: (User.t list) option;
- icon: string option;
- owner_id: Snowflake.t option;
- application_id: Snowflake.t option;
- parent_id: Snowflake.t option;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/channel_j.ml b/lib/models/channel_j.ml
new file mode 100644
index 0000000..7369230
--- /dev/null
+++ b/lib/models/channel_j.ml
@@ -0,0 +1,1136 @@
+(* Auto-generated from "channel.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = Channel_t.t = {
+ id: snowflake;
+ kind: int;
+ guild_id: snowflake option;
+ position: int option;
+ name: string option;
+ topic: string option;
+ nsfw: bool option;
+ bitrate: int option;
+ user_limit: int option;
+ recipients: user list option;
+ icon: string option;
+ owner_id: snowflake option;
+ application_id: snowflake option;
+ parent_id: snowflake option
+}
+
+let write_user = (
+ User_j.write_t
+)
+let string_of_user ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_user ob x;
+ Bi_outbuf.contents ob
+let read_user = (
+ User_j.read_t
+)
+let user_of_string s =
+ read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_snowflake = (
+ Snowflake_j.write_t
+)
+let string_of_snowflake ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_snowflake ob x;
+ Bi_outbuf.contents ob
+let read_snowflake = (
+ Snowflake_j.read_t
+)
+let snowflake_of_string s =
+ read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__5 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_user
+ )
+)
+let string_of__5 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__5 ob x;
+ Bi_outbuf.contents ob
+let read__5 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_user
+ )
+)
+let _5_of_string s =
+ read__5 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__6 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write__5
+ )
+)
+let string_of__6 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__6 ob x;
+ Bi_outbuf.contents ob
+let read__6 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read__5
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read__5
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _6_of_string s =
+ read__6 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__4 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_bool
+ )
+)
+let string_of__4 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__4 ob x;
+ Bi_outbuf.contents ob
+let read__4 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _4_of_string s =
+ read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__3 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_string
+ )
+)
+let string_of__3 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__3 ob x;
+ Bi_outbuf.contents ob
+let read__3 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _3_of_string s =
+ read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__2 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_int
+ )
+)
+let string_of__2 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__2 ob x;
+ Bi_outbuf.contents ob
+let read__2 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _2_of_string s =
+ read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_snowflake
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_snowflake
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_snowflake
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"id\":";
+ (
+ write_snowflake
+ )
+ ob x.id;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"type\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.kind;
+ (match x.guild_id with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"guild_id\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
+ (match x.position with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"position\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ (match x.name with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"name\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.topic with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"topic\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.nsfw with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"nsfw\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x;
+ );
+ (match x.bitrate with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"bitrate\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ (match x.user_limit with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"user_limit\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ (match x.recipients with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"recipients\":";
+ (
+ write__5
+ )
+ ob x;
+ );
+ (match x.icon with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"icon\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.owner_id with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"owner_id\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
+ (match x.application_id with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"application_id\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
+ (match x.parent_id with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"parent_id\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_kind = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_guild_id = ref (None) in
+ let field_position = ref (None) in
+ let field_name = ref (None) in
+ let field_topic = ref (None) in
+ let field_nsfw = ref (None) in
+ let field_bitrate = ref (None) in
+ let field_user_limit = ref (None) in
+ let field_recipients = ref (None) in
+ let field_icon = ref (None) in
+ let field_owner_id = ref (None) in
+ let field_application_id = ref (None) in
+ let field_parent_id = ref (None) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'i' -> (
+ if String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' then (
+ 10
+ )
+ else (
+ -1
+ )
+ )
+ | 'n' -> (
+ match String.unsafe_get s (pos+1) with
+ | 'a' -> (
+ if String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 's' -> (
+ if String.unsafe_get s (pos+2) = 'f' && String.unsafe_get s (pos+3) = 'w' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 't' -> (
+ if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'c' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 7 -> (
+ if String.unsafe_get s pos = 'b' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'e' then (
+ 7
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ match String.unsafe_get s pos with
+ | 'g' -> (
+ if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 'o' -> (
+ if String.unsafe_get s (pos+1) = 'w' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then (
+ 11
+ )
+ else (
+ -1
+ )
+ )
+ | 'p' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'd' then (
+ 13
+ )
+ else (
+ -1
+ )
+ )
+ | 10 -> (
+ match String.unsafe_get s pos with
+ | 'r' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'p' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 's' then (
+ 9
+ )
+ else (
+ -1
+ )
+ )
+ | 'u' -> (
+ if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'l' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 't' then (
+ 8
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 14 -> (
+ if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'p' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then (
+ 12
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_kind := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_guild_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_position := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_name := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 5 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_topic := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 6 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_nsfw := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 7 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_bitrate := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 8 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_user_limit := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 9 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_recipients := (
+ Some (
+ (
+ read__5
+ ) p lb
+ )
+ );
+ )
+ | 10 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_icon := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 11 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_owner_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 12 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_application_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 13 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_parent_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'i' -> (
+ if String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' then (
+ 10
+ )
+ else (
+ -1
+ )
+ )
+ | 'n' -> (
+ match String.unsafe_get s (pos+1) with
+ | 'a' -> (
+ if String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 's' -> (
+ if String.unsafe_get s (pos+2) = 'f' && String.unsafe_get s (pos+3) = 'w' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 't' -> (
+ if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'c' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 7 -> (
+ if String.unsafe_get s pos = 'b' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'e' then (
+ 7
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ match String.unsafe_get s pos with
+ | 'g' -> (
+ if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 'o' -> (
+ if String.unsafe_get s (pos+1) = 'w' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then (
+ 11
+ )
+ else (
+ -1
+ )
+ )
+ | 'p' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'd' then (
+ 13
+ )
+ else (
+ -1
+ )
+ )
+ | 10 -> (
+ match String.unsafe_get s pos with
+ | 'r' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'p' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 's' then (
+ 9
+ )
+ else (
+ -1
+ )
+ )
+ | 'u' -> (
+ if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'l' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 't' then (
+ 8
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 14 -> (
+ if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'p' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then (
+ 12
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_kind := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_guild_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_position := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_name := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 5 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_topic := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 6 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_nsfw := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 7 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_bitrate := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 8 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_user_limit := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 9 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_recipients := (
+ Some (
+ (
+ read__5
+ ) p lb
+ )
+ );
+ )
+ | 10 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_icon := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 11 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_owner_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 12 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_application_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 13 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_parent_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x3 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "kind" |];
+ (
+ {
+ id = !field_id;
+ kind = !field_kind;
+ guild_id = !field_guild_id;
+ position = !field_position;
+ name = !field_name;
+ topic = !field_topic;
+ nsfw = !field_nsfw;
+ bitrate = !field_bitrate;
+ user_limit = !field_user_limit;
+ recipients = !field_recipients;
+ icon = !field_icon;
+ owner_id = !field_owner_id;
+ application_id = !field_application_id;
+ parent_id = !field_parent_id;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/channel_j.mli b/lib/models/channel_j.mli
new file mode 100644
index 0000000..ec4048c
--- /dev/null
+++ b/lib/models/channel_j.mli
@@ -0,0 +1,84 @@
+(* Auto-generated from "channel.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = Channel_t.t = {
+ id: snowflake;
+ kind: int;
+ guild_id: snowflake option;
+ position: int option;
+ name: string option;
+ topic: string option;
+ nsfw: bool option;
+ bitrate: int option;
+ user_limit: int option;
+ recipients: user list option;
+ icon: string option;
+ owner_id: snowflake option;
+ application_id: snowflake option;
+ parent_id: snowflake option
+}
+
+val write_user :
+ Bi_outbuf.t -> user -> unit
+ (** Output a JSON value of type {!user}. *)
+
+val string_of_user :
+ ?len:int -> user -> string
+ (** Serialize a value of type {!user}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_user :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> user
+ (** Input JSON data of type {!user}. *)
+
+val user_of_string :
+ string -> user
+ (** Deserialize JSON data of type {!user}. *)
+
+val write_snowflake :
+ Bi_outbuf.t -> snowflake -> unit
+ (** Output a JSON value of type {!snowflake}. *)
+
+val string_of_snowflake :
+ ?len:int -> snowflake -> string
+ (** Serialize a value of type {!snowflake}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_snowflake :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake
+ (** Input JSON data of type {!snowflake}. *)
+
+val snowflake_of_string :
+ string -> snowflake
+ (** Deserialize JSON data of type {!snowflake}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/channel_t.ml b/lib/models/channel_t.ml
new file mode 100644
index 0000000..a5c9ce4
--- /dev/null
+++ b/lib/models/channel_t.ml
@@ -0,0 +1,23 @@
+(* Auto-generated from "channel.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ id: snowflake;
+ kind: int;
+ guild_id: snowflake option;
+ position: int option;
+ name: string option;
+ topic: string option;
+ nsfw: bool option;
+ bitrate: int option;
+ user_limit: int option;
+ recipients: user list option;
+ icon: string option;
+ owner_id: snowflake option;
+ application_id: snowflake option;
+ parent_id: snowflake option
+}
diff --git a/lib/models/channel_t.mli b/lib/models/channel_t.mli
new file mode 100644
index 0000000..a5c9ce4
--- /dev/null
+++ b/lib/models/channel_t.mli
@@ -0,0 +1,23 @@
+(* Auto-generated from "channel.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ id: snowflake;
+ kind: int;
+ guild_id: snowflake option;
+ position: int option;
+ name: string option;
+ topic: string option;
+ nsfw: bool option;
+ bitrate: int option;
+ user_limit: int option;
+ recipients: user list option;
+ icon: string option;
+ owner_id: snowflake option;
+ application_id: snowflake option;
+ parent_id: snowflake option
+}
diff --git a/lib/models/embed.atd b/lib/models/embed.atd
new file mode 100644
index 0000000..0d3aed4
--- /dev/null
+++ b/lib/models/embed.atd
@@ -0,0 +1,44 @@
+type footer = {
+ text: string;
+ ?icon_url: string option;
+ ?proxy_icon_url: string option;
+}
+
+type image = {
+ ?url: string option;
+ ?proxy_url: string option;
+ ?height: int option;
+ ?width: int option;
+}
+
+type video = {
+ ?url: string option;
+ ?height: int option;
+ ?width: int option;
+}
+
+type provider = {
+ ?name: string option;
+ ?url: string option;
+}
+
+type field = {
+ name: string;
+ value: string;
+ ?inline: bool option;
+}
+
+type t = {
+ ?title: string option;
+ ?kind: string option;
+ ?description: string option;
+ ?url: string option;
+ ?timestamp: string option;
+ ?colour: int option;
+ ?footer: footer option;
+ ?image: image option;
+ ?thumbnail: image option;
+ ?video: video option;
+ ?provider: provider option;
+ ?fields: field list option;
+} \ No newline at end of file
diff --git a/lib/models/embed.ml b/lib/models/embed.ml
deleted file mode 100644
index b4dc143..0000000
--- a/lib/models/embed.ml
+++ /dev/null
@@ -1,44 +0,0 @@
-type footer = {
- text: string;
- icon_url: string option;
- proxy_icon_url: string option;
-} [@@deriving yojson]
-
-type image = {
- url: string option;
- proxy_url: string option;
- height: int option;
- width: int option;
-} [@@deriving yojson]
-
-type video = {
- url: string option;
- height: int option;
- width: int option;
-} [@@deriving yojson]
-
-type provider = {
- name: string option;
- url: string option;
-} [@@deriving yojson]
-
-type field = {
- name: string;
- value: string;
- inline: bool option;
-} [@@deriving yojson]
-
-type t = {
- title: string option;
- kind: string option;
- description: string option;
- url: string option;
- timestamp: string option;
- colour: int option;
- footer: footer option;
- image: image option;
- thumbnail: image option;
- video: video option;
- provider: provider option;
- fields: (field list) option;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/embed_j.ml b/lib/models/embed_j.ml
new file mode 100644
index 0000000..560c517
--- /dev/null
+++ b/lib/models/embed_j.ml
@@ -0,0 +1,2283 @@
+(* Auto-generated from "embed.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type video = Embed_t.video = {
+ url: string option;
+ height: int option;
+ width: int option
+}
+
+type provider = Embed_t.provider = {
+ name: string option;
+ url: string option
+}
+
+type image = Embed_t.image = {
+ url: string option;
+ proxy_url: string option;
+ height: int option;
+ width: int option
+}
+
+type footer = Embed_t.footer = {
+ text: string;
+ icon_url: string option;
+ proxy_icon_url: string option
+}
+
+type field = Embed_t.field = {
+ name: string;
+ value: string;
+ inline: bool option
+}
+
+type t = Embed_t.t = {
+ title: string option;
+ kind: string option;
+ description: string option;
+ url: string option;
+ timestamp: string option;
+ colour: int option;
+ footer: footer option;
+ image: image option;
+ thumbnail: image option;
+ video: video option;
+ provider: provider option;
+ fields: field list option
+}
+
+let write__2 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_int
+ )
+)
+let string_of__2 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__2 ob x;
+ Bi_outbuf.contents ob
+let read__2 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _2_of_string s =
+ read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_string
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_video : _ -> video -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ (match x.url with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"url\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.height with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"height\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ (match x.width with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"width\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_video ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_video ob x;
+ Bi_outbuf.contents ob
+let read_video = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_url = ref (None) in
+ let field_height = ref (None) in
+ let field_width = ref (None) in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_height := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_width := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_height := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_width := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ (
+ {
+ url = !field_url;
+ height = !field_height;
+ width = !field_width;
+ }
+ : video)
+ )
+)
+let video_of_string s =
+ read_video (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_provider : _ -> provider -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ (match x.name with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"name\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.url with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"url\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_provider ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_provider ob x;
+ Bi_outbuf.contents ob
+let read_provider = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_name = ref (None) in
+ let field_url = ref (None) in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_name := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_name := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ (
+ {
+ name = !field_name;
+ url = !field_url;
+ }
+ : provider)
+ )
+)
+let provider_of_string s =
+ read_provider (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_image : _ -> image -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ (match x.url with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"url\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.proxy_url with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"proxy_url\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.height with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"height\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ (match x.width with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"width\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_image ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_image ob x;
+ Bi_outbuf.contents ob
+let read_image = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_url = ref (None) in
+ let field_proxy_url = ref (None) in
+ let field_height = ref (None) in
+ let field_width = ref (None) in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'u' && String.unsafe_get s (pos+7) = 'r' && String.unsafe_get s (pos+8) = 'l' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_proxy_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_height := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_width := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'w' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'h' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'h' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'h' && String.unsafe_get s (pos+5) = 't' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'u' && String.unsafe_get s (pos+7) = 'r' && String.unsafe_get s (pos+8) = 'l' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_proxy_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_height := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_width := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ (
+ {
+ url = !field_url;
+ proxy_url = !field_proxy_url;
+ height = !field_height;
+ width = !field_width;
+ }
+ : image)
+ )
+)
+let image_of_string s =
+ read_image (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_footer : _ -> footer -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"text\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.text;
+ (match x.icon_url with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"icon_url\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.proxy_icon_url with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"proxy_icon_url\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_footer ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_footer ob x;
+ Bi_outbuf.contents ob
+let read_footer = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_text = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_icon_url = ref (None) in
+ let field_proxy_icon_url = ref (None) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'x' && String.unsafe_get s (pos+3) = 't' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'u' && String.unsafe_get s (pos+6) = 'r' && String.unsafe_get s (pos+7) = 'l' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 14 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = '_' && String.unsafe_get s (pos+11) = 'u' && String.unsafe_get s (pos+12) = 'r' && String.unsafe_get s (pos+13) = 'l' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_text := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_icon_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_proxy_icon_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'x' && String.unsafe_get s (pos+3) = 't' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'u' && String.unsafe_get s (pos+6) = 'r' && String.unsafe_get s (pos+7) = 'l' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 14 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'x' && String.unsafe_get s (pos+4) = 'y' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = '_' && String.unsafe_get s (pos+11) = 'u' && String.unsafe_get s (pos+12) = 'r' && String.unsafe_get s (pos+13) = 'l' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_text := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_icon_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_proxy_icon_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "text" |];
+ (
+ {
+ text = !field_text;
+ icon_url = !field_icon_url;
+ proxy_icon_url = !field_proxy_icon_url;
+ }
+ : footer)
+ )
+)
+let footer_of_string s =
+ read_footer (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__3 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_bool
+ )
+)
+let string_of__3 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__3 ob x;
+ Bi_outbuf.contents ob
+let read__3 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _3_of_string s =
+ read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_field : _ -> field -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"name\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.name;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"value\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.value;
+ (match x.inline with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"inline\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_field ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_field ob x;
+ Bi_outbuf.contents ob
+let read_field = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_value = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_inline = ref (None) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'v' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'u' && String.unsafe_get s (pos+4) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_name := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_value := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_inline := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'v' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'u' && String.unsafe_get s (pos+4) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_name := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_value := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_inline := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x3 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "name"; "value" |];
+ (
+ {
+ name = !field_name;
+ value = !field_value;
+ inline = !field_inline;
+ }
+ : field)
+ )
+)
+let field_of_string s =
+ read_field (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__8 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_field
+ )
+)
+let string_of__8 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__8 ob x;
+ Bi_outbuf.contents ob
+let read__8 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_field
+ )
+)
+let _8_of_string s =
+ read__8 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__9 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write__8
+ )
+)
+let string_of__9 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__9 ob x;
+ Bi_outbuf.contents ob
+let read__9 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read__8
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read__8
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _9_of_string s =
+ read__9 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__7 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_provider
+ )
+)
+let string_of__7 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__7 ob x;
+ Bi_outbuf.contents ob
+let read__7 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_provider
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_provider
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _7_of_string s =
+ read__7 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__6 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_video
+ )
+)
+let string_of__6 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__6 ob x;
+ Bi_outbuf.contents ob
+let read__6 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_video
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_video
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _6_of_string s =
+ read__6 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__5 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_image
+ )
+)
+let string_of__5 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__5 ob x;
+ Bi_outbuf.contents ob
+let read__5 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_image
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_image
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _5_of_string s =
+ read__5 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__4 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_footer
+ )
+)
+let string_of__4 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__4 ob x;
+ Bi_outbuf.contents ob
+let read__4 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_footer
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_footer
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _4_of_string s =
+ read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ (match x.title with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"title\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.kind with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"kind\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.description with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"description\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.url with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"url\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.timestamp with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"timestamp\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.colour with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"colour\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ (match x.footer with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"footer\":";
+ (
+ write_footer
+ )
+ ob x;
+ );
+ (match x.image with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"image\":";
+ (
+ write_image
+ )
+ ob x;
+ );
+ (match x.thumbnail with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"thumbnail\":";
+ (
+ write_image
+ )
+ ob x;
+ );
+ (match x.video with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"video\":";
+ (
+ write_video
+ )
+ ob x;
+ );
+ (match x.provider with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"provider\":";
+ (
+ write_provider
+ )
+ ob x;
+ );
+ (match x.fields with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"fields\":";
+ (
+ write__8
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_title = ref (None) in
+ let field_kind = ref (None) in
+ let field_description = ref (None) in
+ let field_url = ref (None) in
+ let field_timestamp = ref (None) in
+ let field_colour = ref (None) in
+ let field_footer = ref (None) in
+ let field_image = ref (None) in
+ let field_thumbnail = ref (None) in
+ let field_video = ref (None) in
+ let field_provider = ref (None) in
+ let field_fields = ref (None) in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ if String.unsafe_get s pos = 'k' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'd' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ match String.unsafe_get s pos with
+ | 'i' -> (
+ if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' then (
+ 7
+ )
+ else (
+ -1
+ )
+ )
+ | 't' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'e' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 'v' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'o' then (
+ 9
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 6 -> (
+ match String.unsafe_get s pos with
+ | 'c' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'o' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'r' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 'f' -> (
+ match String.unsafe_get s (pos+1) with
+ | 'i' -> (
+ if String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = 's' then (
+ 11
+ )
+ else (
+ -1
+ )
+ )
+ | 'o' -> (
+ if String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'v' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'r' then (
+ 10
+ )
+ else (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 't' then (
+ match String.unsafe_get s (pos+1) with
+ | 'h' -> (
+ if String.unsafe_get s (pos+2) = 'u' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'b' && String.unsafe_get s (pos+5) = 'n' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'l' then (
+ 8
+ )
+ else (
+ -1
+ )
+ )
+ | 'i' -> (
+ if String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'p' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ else (
+ -1
+ )
+ )
+ | 11 -> (
+ if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'p' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_title := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_kind := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_description := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_timestamp := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 5 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_colour := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 6 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_footer := (
+ Some (
+ (
+ read_footer
+ ) p lb
+ )
+ );
+ )
+ | 7 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_image := (
+ Some (
+ (
+ read_image
+ ) p lb
+ )
+ );
+ )
+ | 8 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_thumbnail := (
+ Some (
+ (
+ read_image
+ ) p lb
+ )
+ );
+ )
+ | 9 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_video := (
+ Some (
+ (
+ read_video
+ ) p lb
+ )
+ );
+ )
+ | 10 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_provider := (
+ Some (
+ (
+ read_provider
+ ) p lb
+ )
+ );
+ )
+ | 11 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_fields := (
+ Some (
+ (
+ read__8
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 3 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ if String.unsafe_get s pos = 'k' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'd' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ match String.unsafe_get s pos with
+ | 'i' -> (
+ if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' then (
+ 7
+ )
+ else (
+ -1
+ )
+ )
+ | 't' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'e' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 'v' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'o' then (
+ 9
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 6 -> (
+ match String.unsafe_get s pos with
+ | 'c' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'o' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'r' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 'f' -> (
+ match String.unsafe_get s (pos+1) with
+ | 'i' -> (
+ if String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = 's' then (
+ 11
+ )
+ else (
+ -1
+ )
+ )
+ | 'o' -> (
+ if String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'v' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'r' then (
+ 10
+ )
+ else (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 't' then (
+ match String.unsafe_get s (pos+1) with
+ | 'h' -> (
+ if String.unsafe_get s (pos+2) = 'u' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'b' && String.unsafe_get s (pos+5) = 'n' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'l' then (
+ 8
+ )
+ else (
+ -1
+ )
+ )
+ | 'i' -> (
+ if String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'p' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ else (
+ -1
+ )
+ )
+ | 11 -> (
+ if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'p' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_title := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_kind := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_description := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_url := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_timestamp := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 5 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_colour := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 6 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_footer := (
+ Some (
+ (
+ read_footer
+ ) p lb
+ )
+ );
+ )
+ | 7 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_image := (
+ Some (
+ (
+ read_image
+ ) p lb
+ )
+ );
+ )
+ | 8 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_thumbnail := (
+ Some (
+ (
+ read_image
+ ) p lb
+ )
+ );
+ )
+ | 9 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_video := (
+ Some (
+ (
+ read_video
+ ) p lb
+ )
+ );
+ )
+ | 10 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_provider := (
+ Some (
+ (
+ read_provider
+ ) p lb
+ )
+ );
+ )
+ | 11 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_fields := (
+ Some (
+ (
+ read__8
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ (
+ {
+ title = !field_title;
+ kind = !field_kind;
+ description = !field_description;
+ url = !field_url;
+ timestamp = !field_timestamp;
+ colour = !field_colour;
+ footer = !field_footer;
+ image = !field_image;
+ thumbnail = !field_thumbnail;
+ video = !field_video;
+ provider = !field_provider;
+ fields = !field_fields;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/embed_j.mli b/lib/models/embed_j.mli
new file mode 100644
index 0000000..8872d89
--- /dev/null
+++ b/lib/models/embed_j.mli
@@ -0,0 +1,168 @@
+(* Auto-generated from "embed.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type video = Embed_t.video = {
+ url: string option;
+ height: int option;
+ width: int option
+}
+
+type provider = Embed_t.provider = {
+ name: string option;
+ url: string option
+}
+
+type image = Embed_t.image = {
+ url: string option;
+ proxy_url: string option;
+ height: int option;
+ width: int option
+}
+
+type footer = Embed_t.footer = {
+ text: string;
+ icon_url: string option;
+ proxy_icon_url: string option
+}
+
+type field = Embed_t.field = {
+ name: string;
+ value: string;
+ inline: bool option
+}
+
+type t = Embed_t.t = {
+ title: string option;
+ kind: string option;
+ description: string option;
+ url: string option;
+ timestamp: string option;
+ colour: int option;
+ footer: footer option;
+ image: image option;
+ thumbnail: image option;
+ video: video option;
+ provider: provider option;
+ fields: field list option
+}
+
+val write_video :
+ Bi_outbuf.t -> video -> unit
+ (** Output a JSON value of type {!video}. *)
+
+val string_of_video :
+ ?len:int -> video -> string
+ (** Serialize a value of type {!video}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_video :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> video
+ (** Input JSON data of type {!video}. *)
+
+val video_of_string :
+ string -> video
+ (** Deserialize JSON data of type {!video}. *)
+
+val write_provider :
+ Bi_outbuf.t -> provider -> unit
+ (** Output a JSON value of type {!provider}. *)
+
+val string_of_provider :
+ ?len:int -> provider -> string
+ (** Serialize a value of type {!provider}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_provider :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> provider
+ (** Input JSON data of type {!provider}. *)
+
+val provider_of_string :
+ string -> provider
+ (** Deserialize JSON data of type {!provider}. *)
+
+val write_image :
+ Bi_outbuf.t -> image -> unit
+ (** Output a JSON value of type {!image}. *)
+
+val string_of_image :
+ ?len:int -> image -> string
+ (** Serialize a value of type {!image}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_image :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> image
+ (** Input JSON data of type {!image}. *)
+
+val image_of_string :
+ string -> image
+ (** Deserialize JSON data of type {!image}. *)
+
+val write_footer :
+ Bi_outbuf.t -> footer -> unit
+ (** Output a JSON value of type {!footer}. *)
+
+val string_of_footer :
+ ?len:int -> footer -> string
+ (** Serialize a value of type {!footer}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_footer :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> footer
+ (** Input JSON data of type {!footer}. *)
+
+val footer_of_string :
+ string -> footer
+ (** Deserialize JSON data of type {!footer}. *)
+
+val write_field :
+ Bi_outbuf.t -> field -> unit
+ (** Output a JSON value of type {!field}. *)
+
+val string_of_field :
+ ?len:int -> field -> string
+ (** Serialize a value of type {!field}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_field :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> field
+ (** Input JSON data of type {!field}. *)
+
+val field_of_string :
+ string -> field
+ (** Deserialize JSON data of type {!field}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/embed_t.ml b/lib/models/embed_t.ml
new file mode 100644
index 0000000..9eb5059
--- /dev/null
+++ b/lib/models/embed_t.ml
@@ -0,0 +1,36 @@
+(* Auto-generated from "embed.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type video = { url: string option; height: int option; width: int option }
+
+type provider = { name: string option; url: string option }
+
+type image = {
+ url: string option;
+ proxy_url: string option;
+ height: int option;
+ width: int option
+}
+
+type footer = {
+ text: string;
+ icon_url: string option;
+ proxy_icon_url: string option
+}
+
+type field = { name: string; value: string; inline: bool option }
+
+type t = {
+ title: string option;
+ kind: string option;
+ description: string option;
+ url: string option;
+ timestamp: string option;
+ colour: int option;
+ footer: footer option;
+ image: image option;
+ thumbnail: image option;
+ video: video option;
+ provider: provider option;
+ fields: field list option
+}
diff --git a/lib/models/embed_t.mli b/lib/models/embed_t.mli
new file mode 100644
index 0000000..9eb5059
--- /dev/null
+++ b/lib/models/embed_t.mli
@@ -0,0 +1,36 @@
+(* Auto-generated from "embed.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type video = { url: string option; height: int option; width: int option }
+
+type provider = { name: string option; url: string option }
+
+type image = {
+ url: string option;
+ proxy_url: string option;
+ height: int option;
+ width: int option
+}
+
+type footer = {
+ text: string;
+ icon_url: string option;
+ proxy_icon_url: string option
+}
+
+type field = { name: string; value: string; inline: bool option }
+
+type t = {
+ title: string option;
+ kind: string option;
+ description: string option;
+ url: string option;
+ timestamp: string option;
+ colour: int option;
+ footer: footer option;
+ image: image option;
+ thumbnail: image option;
+ video: video option;
+ provider: provider option;
+ fields: field list option
+}
diff --git a/lib/models/emoji.atd b/lib/models/emoji.atd
new file mode 100644
index 0000000..877323b
--- /dev/null
+++ b/lib/models/emoji.atd
@@ -0,0 +1,12 @@
+type snowflake <ocaml from="Snowflake" t="t"> = abstract
+type user <ocaml from="User" t="t"> = abstract
+
+type t = {
+ ?id: snowflake option;
+ name: string;
+ ?roles: snowflake list option;
+ ?user: user option;
+ ?require_colons: bool option;
+ ?managed: bool option;
+ ?animated: bool option;
+} \ No newline at end of file
diff --git a/lib/models/emoji.ml b/lib/models/emoji.ml
deleted file mode 100644
index cfbfe64..0000000
--- a/lib/models/emoji.ml
+++ /dev/null
@@ -1,9 +0,0 @@
-type t = {
- id: Snowflake.t;
- name: string;
- roles: (Role.t list) option;
- user: User.t option;
- require_colons: bool option;
- managed: bool;
- animated: bool;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/emoji_j.ml b/lib/models/emoji_j.ml
new file mode 100644
index 0000000..d621de2
--- /dev/null
+++ b/lib/models/emoji_j.ml
@@ -0,0 +1,701 @@
+(* Auto-generated from "emoji.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = Emoji_t.t = {
+ id: snowflake option;
+ name: string;
+ roles: snowflake list option;
+ user: user option;
+ require_colons: bool option;
+ managed: bool option;
+ animated: bool option
+}
+
+let write_user = (
+ User_j.write_t
+)
+let string_of_user ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_user ob x;
+ Bi_outbuf.contents ob
+let read_user = (
+ User_j.read_t
+)
+let user_of_string s =
+ read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_snowflake = (
+ Snowflake_j.write_t
+)
+let string_of_snowflake ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_snowflake ob x;
+ Bi_outbuf.contents ob
+let read_snowflake = (
+ Snowflake_j.read_t
+)
+let snowflake_of_string s =
+ read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__5 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_bool
+ )
+)
+let string_of__5 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__5 ob x;
+ Bi_outbuf.contents ob
+let read__5 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _5_of_string s =
+ read__5 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__4 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_user
+ )
+)
+let string_of__4 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__4 ob x;
+ Bi_outbuf.contents ob
+let read__4 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_user
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_user
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _4_of_string s =
+ read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__2 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_snowflake
+ )
+)
+let string_of__2 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__2 ob x;
+ Bi_outbuf.contents ob
+let read__2 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_snowflake
+ )
+)
+let _2_of_string s =
+ read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__3 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write__2
+ )
+)
+let string_of__3 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__3 ob x;
+ Bi_outbuf.contents ob
+let read__3 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read__2
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read__2
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _3_of_string s =
+ read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_snowflake
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_snowflake
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_snowflake
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ (match x.id with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"id\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"name\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.name;
+ (match x.roles with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"roles\":";
+ (
+ write__2
+ )
+ ob x;
+ );
+ (match x.user with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"user\":";
+ (
+ write_user
+ )
+ ob x;
+ );
+ (match x.require_colons with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"require_colons\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x;
+ );
+ (match x.managed with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"managed\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x;
+ );
+ (match x.animated with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"animated\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_id = ref (None) in
+ let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_roles = ref (None) in
+ let field_user = ref (None) in
+ let field_require_colons = ref (None) in
+ let field_managed = ref (None) in
+ let field_animated = ref (None) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'n' -> (
+ if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 'u' -> (
+ if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 7 -> (
+ if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'g' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'd' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'd' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | 14 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'q' && String.unsafe_get s (pos+3) = 'u' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'c' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = 'o' && String.unsafe_get s (pos+12) = 'n' && String.unsafe_get s (pos+13) = 's' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ field_name := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_roles := (
+ Some (
+ (
+ read__2
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_user := (
+ Some (
+ (
+ read_user
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_require_colons := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 5 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_managed := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 6 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_animated := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'n' -> (
+ if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 'u' -> (
+ if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 7 -> (
+ if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'g' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'd' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'd' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | 14 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'q' && String.unsafe_get s (pos+3) = 'u' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'c' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = 'o' && String.unsafe_get s (pos+12) = 'n' && String.unsafe_get s (pos+13) = 's' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ field_name := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_roles := (
+ Some (
+ (
+ read__2
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_user := (
+ Some (
+ (
+ read_user
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_require_colons := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 5 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_managed := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 6 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_animated := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "name" |];
+ (
+ {
+ id = !field_id;
+ name = !field_name;
+ roles = !field_roles;
+ user = !field_user;
+ require_colons = !field_require_colons;
+ managed = !field_managed;
+ animated = !field_animated;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/emoji_j.mli b/lib/models/emoji_j.mli
new file mode 100644
index 0000000..596deeb
--- /dev/null
+++ b/lib/models/emoji_j.mli
@@ -0,0 +1,77 @@
+(* Auto-generated from "emoji.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = Emoji_t.t = {
+ id: snowflake option;
+ name: string;
+ roles: snowflake list option;
+ user: user option;
+ require_colons: bool option;
+ managed: bool option;
+ animated: bool option
+}
+
+val write_user :
+ Bi_outbuf.t -> user -> unit
+ (** Output a JSON value of type {!user}. *)
+
+val string_of_user :
+ ?len:int -> user -> string
+ (** Serialize a value of type {!user}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_user :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> user
+ (** Input JSON data of type {!user}. *)
+
+val user_of_string :
+ string -> user
+ (** Deserialize JSON data of type {!user}. *)
+
+val write_snowflake :
+ Bi_outbuf.t -> snowflake -> unit
+ (** Output a JSON value of type {!snowflake}. *)
+
+val string_of_snowflake :
+ ?len:int -> snowflake -> string
+ (** Serialize a value of type {!snowflake}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_snowflake :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake
+ (** Input JSON data of type {!snowflake}. *)
+
+val snowflake_of_string :
+ string -> snowflake
+ (** Deserialize JSON data of type {!snowflake}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/emoji_t.ml b/lib/models/emoji_t.ml
new file mode 100644
index 0000000..333939d
--- /dev/null
+++ b/lib/models/emoji_t.ml
@@ -0,0 +1,16 @@
+(* Auto-generated from "emoji.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ id: snowflake option;
+ name: string;
+ roles: snowflake list option;
+ user: user option;
+ require_colons: bool option;
+ managed: bool option;
+ animated: bool option
+}
diff --git a/lib/models/emoji_t.mli b/lib/models/emoji_t.mli
new file mode 100644
index 0000000..333939d
--- /dev/null
+++ b/lib/models/emoji_t.mli
@@ -0,0 +1,16 @@
+(* Auto-generated from "emoji.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ id: snowflake option;
+ name: string;
+ roles: snowflake list option;
+ user: user option;
+ require_colons: bool option;
+ managed: bool option;
+ animated: bool option
+}
diff --git a/lib/models/guild.atd b/lib/models/guild.atd
new file mode 100644
index 0000000..c622eea
--- /dev/null
+++ b/lib/models/guild.atd
@@ -0,0 +1,36 @@
+type snowflake <ocaml from="Snowflake" t="t"> = abstract
+type user <ocaml from="User" t="t"> = abstract
+type member <ocaml from="Member" t="t"> = abstract
+type role <ocaml from="Role" t="t"> = abstract
+type channel <ocaml from="Channel" t="t"> = abstract
+type emoji <ocaml from="Emoji" t="t"> = abstract
+
+
+type t = {
+ id: snowflake;
+ name: string;
+ ?icon: string option;
+ ?splash: string option;
+ owner_id: snowflake;
+ region: string;
+ ?afk_channel_id: snowflake option;
+ afk_timeout: int;
+ ?embed_enabled: bool option;
+ ?embed_channel_id: snowflake option;
+ verification_level: int;
+ default_message_notifications: int;
+ explicit_content_filter: int;
+ roles: role list;
+ emojis: emoji list;
+ features: string list;
+ mfa_level: int;
+ ?application_id: snowflake option;
+ ?widget_enabled: bool option;
+ ?widget_channel: channel option;
+ ?system_channel: channel option;
+ ?large: bool option;
+ ?unavailable: bool option;
+ ?member_count: int option;
+ ?members: member list option;
+ ?channels: channel list option;
+} \ No newline at end of file
diff --git a/lib/models/guild.ml b/lib/models/guild.ml
deleted file mode 100644
index 5f5855b..0000000
--- a/lib/models/guild.ml
+++ /dev/null
@@ -1,28 +0,0 @@
-type t = {
- id: Snowflake.t;
- name: string;
- icon: string;
- splash: string;
- owner: User.t;
- region: string;
- afk_channel: Channel.t option;
- afk_timeout: int;
- embed_enabled: bool;
- embed_channel: Channel.t;
- verification_level: int;
- default_message_notifications: int;
- explicit_content_filter: int;
- roles: Role.t list;
- emojis: Emoji.t list;
- features: string list;
- mfa_level: int;
- application_id: Snowflake.t option;
- widget_enabled: bool option;
- widget_channel: Channel.t option;
- system_channel: Channel.t option;
- large: bool;
- unavailable: bool;
- member_count: int;
- members: Member.t list;
- channels: Channel.t list;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/guild_j.ml b/lib/models/guild_j.ml
new file mode 100644
index 0000000..9f7b069
--- /dev/null
+++ b/lib/models/guild_j.ml
@@ -0,0 +1,1948 @@
+(* Auto-generated from "guild.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type role = Role_t.t
+
+type member = Member_t.t
+
+type emoji = Emoji_t.t
+
+type channel = Channel_t.t
+
+type t = Guild_t.t = {
+ id: snowflake;
+ name: string;
+ icon: string option;
+ splash: string option;
+ owner_id: snowflake;
+ region: string;
+ afk_channel_id: snowflake option;
+ afk_timeout: int;
+ embed_enabled: bool option;
+ embed_channel_id: snowflake option;
+ verification_level: int;
+ default_message_notifications: int;
+ explicit_content_filter: int;
+ roles: role list;
+ emojis: emoji list;
+ features: string list;
+ mfa_level: int;
+ application_id: snowflake option;
+ widget_enabled: bool option;
+ widget_channel: channel option;
+ system_channel: channel option;
+ large: bool option;
+ unavailable: bool option;
+ member_count: int option;
+ members: member list option;
+ channels: channel list option
+}
+
+let write_user = (
+ User_j.write_t
+)
+let string_of_user ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_user ob x;
+ Bi_outbuf.contents ob
+let read_user = (
+ User_j.read_t
+)
+let user_of_string s =
+ read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_snowflake = (
+ Snowflake_j.write_t
+)
+let string_of_snowflake ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_snowflake ob x;
+ Bi_outbuf.contents ob
+let read_snowflake = (
+ Snowflake_j.read_t
+)
+let snowflake_of_string s =
+ read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_role = (
+ Role_j.write_t
+)
+let string_of_role ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_role ob x;
+ Bi_outbuf.contents ob
+let read_role = (
+ Role_j.read_t
+)
+let role_of_string s =
+ read_role (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_member = (
+ Member_j.write_t
+)
+let string_of_member ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_member ob x;
+ Bi_outbuf.contents ob
+let read_member = (
+ Member_j.read_t
+)
+let member_of_string s =
+ read_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_emoji = (
+ Emoji_j.write_t
+)
+let string_of_emoji ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_emoji ob x;
+ Bi_outbuf.contents ob
+let read_emoji = (
+ Emoji_j.read_t
+)
+let emoji_of_string s =
+ read_emoji (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_channel = (
+ Channel_j.write_t
+)
+let string_of_channel ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_channel ob x;
+ Bi_outbuf.contents ob
+let read_channel = (
+ Channel_j.read_t
+)
+let channel_of_string s =
+ read_channel (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__9 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_member
+ )
+)
+let string_of__9 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__9 ob x;
+ Bi_outbuf.contents ob
+let read__9 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_member
+ )
+)
+let _9_of_string s =
+ read__9 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__8 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_int
+ )
+)
+let string_of__8 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__8 ob x;
+ Bi_outbuf.contents ob
+let read__8 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _8_of_string s =
+ read__8 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__7 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_channel
+ )
+)
+let string_of__7 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__7 ob x;
+ Bi_outbuf.contents ob
+let read__7 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_channel
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_channel
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _7_of_string s =
+ read__7 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__6 = (
+ Atdgen_runtime.Oj_run.write_list (
+ Yojson.Safe.write_string
+ )
+)
+let string_of__6 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__6 ob x;
+ Bi_outbuf.contents ob
+let read__6 = (
+ Atdgen_runtime.Oj_run.read_list (
+ Atdgen_runtime.Oj_run.read_string
+ )
+)
+let _6_of_string s =
+ read__6 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__5 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_emoji
+ )
+)
+let string_of__5 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__5 ob x;
+ Bi_outbuf.contents ob
+let read__5 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_emoji
+ )
+)
+let _5_of_string s =
+ read__5 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__4 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_role
+ )
+)
+let string_of__4 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__4 ob x;
+ Bi_outbuf.contents ob
+let read__4 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_role
+ )
+)
+let _4_of_string s =
+ read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__3 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_bool
+ )
+)
+let string_of__3 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__3 ob x;
+ Bi_outbuf.contents ob
+let read__3 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _3_of_string s =
+ read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__2 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_snowflake
+ )
+)
+let string_of__2 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__2 ob x;
+ Bi_outbuf.contents ob
+let read__2 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_snowflake
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_snowflake
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _2_of_string s =
+ read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__11 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_channel
+ )
+)
+let string_of__11 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__11 ob x;
+ Bi_outbuf.contents ob
+let read__11 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_channel
+ )
+)
+let _11_of_string s =
+ read__11 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__12 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write__11
+ )
+)
+let string_of__12 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__12 ob x;
+ Bi_outbuf.contents ob
+let read__12 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read__11
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read__11
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _12_of_string s =
+ read__12 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__10 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write__9
+ )
+)
+let string_of__10 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__10 ob x;
+ Bi_outbuf.contents ob
+let read__10 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read__9
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read__9
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _10_of_string s =
+ read__10 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_string
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"id\":";
+ (
+ write_snowflake
+ )
+ ob x.id;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"name\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.name;
+ (match x.icon with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"icon\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ (match x.splash with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"splash\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"owner_id\":";
+ (
+ write_snowflake
+ )
+ ob x.owner_id;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"region\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.region;
+ (match x.afk_channel_id with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"afk_channel_id\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"afk_timeout\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.afk_timeout;
+ (match x.embed_enabled with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"embed_enabled\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x;
+ );
+ (match x.embed_channel_id with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"embed_channel_id\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"verification_level\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.verification_level;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"default_message_notifications\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.default_message_notifications;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"explicit_content_filter\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.explicit_content_filter;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"roles\":";
+ (
+ write__4
+ )
+ ob x.roles;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"emojis\":";
+ (
+ write__5
+ )
+ ob x.emojis;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"features\":";
+ (
+ write__6
+ )
+ ob x.features;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"mfa_level\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.mfa_level;
+ (match x.application_id with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"application_id\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
+ (match x.widget_enabled with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"widget_enabled\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x;
+ );
+ (match x.widget_channel with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"widget_channel\":";
+ (
+ write_channel
+ )
+ ob x;
+ );
+ (match x.system_channel with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"system_channel\":";
+ (
+ write_channel
+ )
+ ob x;
+ );
+ (match x.large with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"large\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x;
+ );
+ (match x.unavailable with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"unavailable\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x;
+ );
+ (match x.member_count with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"member_count\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x;
+ );
+ (match x.members with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"members\":";
+ (
+ write__9
+ )
+ ob x;
+ );
+ (match x.channels with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"channels\":";
+ (
+ write__11
+ )
+ ob x;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_icon = ref (None) in
+ let field_splash = ref (None) in
+ let field_owner_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_region = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_afk_channel_id = ref (None) in
+ let field_afk_timeout = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_embed_enabled = ref (None) in
+ let field_embed_channel_id = ref (None) in
+ let field_verification_level = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_default_message_notifications = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_explicit_content_filter = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_emojis = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_features = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_mfa_level = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_application_id = ref (None) in
+ let field_widget_enabled = ref (None) in
+ let field_widget_channel = ref (None) in
+ let field_system_channel = ref (None) in
+ let field_large = ref (None) in
+ let field_unavailable = ref (None) in
+ let field_member_count = ref (None) in
+ let field_members = ref (None) in
+ let field_channels = ref (None) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'i' -> (
+ if String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 'n' -> (
+ if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ match String.unsafe_get s pos with
+ | 'l' -> (
+ if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' then (
+ 21
+ )
+ else (
+ -1
+ )
+ )
+ | 'r' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then (
+ 13
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 6 -> (
+ match String.unsafe_get s pos with
+ | 'e' -> (
+ if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'j' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 's' then (
+ 14
+ )
+ else (
+ -1
+ )
+ )
+ | 'r' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'g' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'n' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 's' -> (
+ if String.unsafe_get s (pos+1) = 'p' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 'h' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 7 -> (
+ if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 's' then (
+ 24
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ match String.unsafe_get s pos with
+ | 'c' -> (
+ if String.unsafe_get s (pos+1) = 'h' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = 's' then (
+ 25
+ )
+ else (
+ -1
+ )
+ )
+ | 'f' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 's' then (
+ 15
+ )
+ else (
+ -1
+ )
+ )
+ | 'o' -> (
+ if String.unsafe_get s (pos+1) = 'w' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'f' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 'l' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'v' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'l' then (
+ 16
+ )
+ else (
+ -1
+ )
+ )
+ | 11 -> (
+ match String.unsafe_get s pos with
+ | 'a' -> (
+ if String.unsafe_get s (pos+1) = 'f' && String.unsafe_get s (pos+2) = 'k' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'u' && String.unsafe_get s (pos+10) = 't' then (
+ 7
+ )
+ else (
+ -1
+ )
+ )
+ | 'u' -> (
+ if String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'v' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 'b' && String.unsafe_get s (pos+9) = 'l' && String.unsafe_get s (pos+10) = 'e' then (
+ 22
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 12 -> (
+ if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'u' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 't' then (
+ 23
+ )
+ else (
+ -1
+ )
+ )
+ | 13 -> (
+ if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 'a' && String.unsafe_get s (pos+9) = 'b' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = 'e' && String.unsafe_get s (pos+12) = 'd' then (
+ 8
+ )
+ else (
+ -1
+ )
+ )
+ | 14 -> (
+ match String.unsafe_get s pos with
+ | 'a' -> (
+ match String.unsafe_get s (pos+1) with
+ | 'f' -> (
+ if String.unsafe_get s (pos+2) = 'k' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 'c' && String.unsafe_get s (pos+5) = 'h' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'e' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | 'p' -> (
+ if String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then (
+ 17
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 's' -> (
+ if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'm' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'h' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'l' then (
+ 20
+ )
+ else (
+ -1
+ )
+ )
+ | 'w' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = '_' then (
+ match String.unsafe_get s (pos+7) with
+ | 'c' -> (
+ if String.unsafe_get s (pos+8) = 'h' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'l' then (
+ 19
+ )
+ else (
+ -1
+ )
+ )
+ | 'e' -> (
+ if String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'b' && String.unsafe_get s (pos+11) = 'l' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'd' then (
+ 18
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 16 -> (
+ if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'c' && String.unsafe_get s (pos+7) = 'h' && String.unsafe_get s (pos+8) = 'a' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'e' && String.unsafe_get s (pos+12) = 'l' && String.unsafe_get s (pos+13) = '_' && String.unsafe_get s (pos+14) = 'i' && String.unsafe_get s (pos+15) = 'd' then (
+ 9
+ )
+ else (
+ -1
+ )
+ )
+ | 18 -> (
+ if String.unsafe_get s pos = 'v' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'f' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'c' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 'i' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = '_' && String.unsafe_get s (pos+13) = 'l' && String.unsafe_get s (pos+14) = 'e' && String.unsafe_get s (pos+15) = 'v' && String.unsafe_get s (pos+16) = 'e' && String.unsafe_get s (pos+17) = 'l' then (
+ 10
+ )
+ else (
+ -1
+ )
+ )
+ | 23 -> (
+ if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'x' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = '_' && String.unsafe_get s (pos+9) = 'c' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 't' && String.unsafe_get s (pos+13) = 'e' && String.unsafe_get s (pos+14) = 'n' && String.unsafe_get s (pos+15) = 't' && String.unsafe_get s (pos+16) = '_' && String.unsafe_get s (pos+17) = 'f' && String.unsafe_get s (pos+18) = 'i' && String.unsafe_get s (pos+19) = 'l' && String.unsafe_get s (pos+20) = 't' && String.unsafe_get s (pos+21) = 'e' && String.unsafe_get s (pos+22) = 'r' then (
+ 12
+ )
+ else (
+ -1
+ )
+ )
+ | 29 -> (
+ if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'f' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'l' && String.unsafe_get s (pos+6) = 't' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'm' && String.unsafe_get s (pos+9) = 'e' && String.unsafe_get s (pos+10) = 's' && String.unsafe_get s (pos+11) = 's' && String.unsafe_get s (pos+12) = 'a' && String.unsafe_get s (pos+13) = 'g' && String.unsafe_get s (pos+14) = 'e' && String.unsafe_get s (pos+15) = '_' && String.unsafe_get s (pos+16) = 'n' && String.unsafe_get s (pos+17) = 'o' && String.unsafe_get s (pos+18) = 't' && String.unsafe_get s (pos+19) = 'i' && String.unsafe_get s (pos+20) = 'f' && String.unsafe_get s (pos+21) = 'i' && String.unsafe_get s (pos+22) = 'c' && String.unsafe_get s (pos+23) = 'a' && String.unsafe_get s (pos+24) = 't' && String.unsafe_get s (pos+25) = 'i' && String.unsafe_get s (pos+26) = 'o' && String.unsafe_get s (pos+27) = 'n' && String.unsafe_get s (pos+28) = 's' then (
+ 11
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_name := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_icon := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_splash := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ field_owner_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 5 ->
+ field_region := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 6 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_afk_channel_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 7 ->
+ field_afk_timeout := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | 8 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_embed_enabled := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 9 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_embed_channel_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 10 ->
+ field_verification_level := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x20;
+ | 11 ->
+ field_default_message_notifications := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x40;
+ | 12 ->
+ field_explicit_content_filter := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x80;
+ | 13 ->
+ field_roles := (
+ (
+ read__4
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x100;
+ | 14 ->
+ field_emojis := (
+ (
+ read__5
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x200;
+ | 15 ->
+ field_features := (
+ (
+ read__6
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x400;
+ | 16 ->
+ field_mfa_level := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x800;
+ | 17 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_application_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 18 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_widget_enabled := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 19 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_widget_channel := (
+ Some (
+ (
+ read_channel
+ ) p lb
+ )
+ );
+ )
+ | 20 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_system_channel := (
+ Some (
+ (
+ read_channel
+ ) p lb
+ )
+ );
+ )
+ | 21 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_large := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 22 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_unavailable := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 23 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_member_count := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 24 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_members := (
+ Some (
+ (
+ read__9
+ ) p lb
+ )
+ );
+ )
+ | 25 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_channels := (
+ Some (
+ (
+ read__11
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'i' -> (
+ if String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'n' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 'n' -> (
+ if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ match String.unsafe_get s pos with
+ | 'l' -> (
+ if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' then (
+ 21
+ )
+ else (
+ -1
+ )
+ )
+ | 'r' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then (
+ 13
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 6 -> (
+ match String.unsafe_get s pos with
+ | 'e' -> (
+ if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'j' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 's' then (
+ 14
+ )
+ else (
+ -1
+ )
+ )
+ | 'r' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'g' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'n' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 's' -> (
+ if String.unsafe_get s (pos+1) = 'p' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 'h' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 7 -> (
+ if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 's' then (
+ 24
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ match String.unsafe_get s pos with
+ | 'c' -> (
+ if String.unsafe_get s (pos+1) = 'h' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = 's' then (
+ 25
+ )
+ else (
+ -1
+ )
+ )
+ | 'f' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 's' then (
+ 15
+ )
+ else (
+ -1
+ )
+ )
+ | 'o' -> (
+ if String.unsafe_get s (pos+1) = 'w' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'f' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 'l' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'v' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'l' then (
+ 16
+ )
+ else (
+ -1
+ )
+ )
+ | 11 -> (
+ match String.unsafe_get s pos with
+ | 'a' -> (
+ if String.unsafe_get s (pos+1) = 'f' && String.unsafe_get s (pos+2) = 'k' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'u' && String.unsafe_get s (pos+10) = 't' then (
+ 7
+ )
+ else (
+ -1
+ )
+ )
+ | 'u' -> (
+ if String.unsafe_get s (pos+1) = 'n' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'v' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 'b' && String.unsafe_get s (pos+9) = 'l' && String.unsafe_get s (pos+10) = 'e' then (
+ 22
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 12 -> (
+ if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'u' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 't' then (
+ 23
+ )
+ else (
+ -1
+ )
+ )
+ | 13 -> (
+ if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 'a' && String.unsafe_get s (pos+9) = 'b' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = 'e' && String.unsafe_get s (pos+12) = 'd' then (
+ 8
+ )
+ else (
+ -1
+ )
+ )
+ | 14 -> (
+ match String.unsafe_get s pos with
+ | 'a' -> (
+ match String.unsafe_get s (pos+1) with
+ | 'f' -> (
+ if String.unsafe_get s (pos+2) = 'k' && String.unsafe_get s (pos+3) = '_' && String.unsafe_get s (pos+4) = 'c' && String.unsafe_get s (pos+5) = 'h' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'e' && String.unsafe_get s (pos+10) = 'l' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | 'p' -> (
+ if String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'o' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = '_' && String.unsafe_get s (pos+12) = 'i' && String.unsafe_get s (pos+13) = 'd' then (
+ 17
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 's' -> (
+ if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'm' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'c' && String.unsafe_get s (pos+8) = 'h' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'l' then (
+ 20
+ )
+ else (
+ -1
+ )
+ )
+ | 'w' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'd' && String.unsafe_get s (pos+3) = 'g' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = '_' then (
+ match String.unsafe_get s (pos+7) with
+ | 'c' -> (
+ if String.unsafe_get s (pos+8) = 'h' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'l' then (
+ 19
+ )
+ else (
+ -1
+ )
+ )
+ | 'e' -> (
+ if String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 'b' && String.unsafe_get s (pos+11) = 'l' && String.unsafe_get s (pos+12) = 'e' && String.unsafe_get s (pos+13) = 'd' then (
+ 18
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 16 -> (
+ if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'c' && String.unsafe_get s (pos+7) = 'h' && String.unsafe_get s (pos+8) = 'a' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = 'n' && String.unsafe_get s (pos+11) = 'e' && String.unsafe_get s (pos+12) = 'l' && String.unsafe_get s (pos+13) = '_' && String.unsafe_get s (pos+14) = 'i' && String.unsafe_get s (pos+15) = 'd' then (
+ 9
+ )
+ else (
+ -1
+ )
+ )
+ | 18 -> (
+ if String.unsafe_get s pos = 'v' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'f' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'c' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 'i' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = '_' && String.unsafe_get s (pos+13) = 'l' && String.unsafe_get s (pos+14) = 'e' && String.unsafe_get s (pos+15) = 'v' && String.unsafe_get s (pos+16) = 'e' && String.unsafe_get s (pos+17) = 'l' then (
+ 10
+ )
+ else (
+ -1
+ )
+ )
+ | 23 -> (
+ if String.unsafe_get s pos = 'e' && String.unsafe_get s (pos+1) = 'x' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'c' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = '_' && String.unsafe_get s (pos+9) = 'c' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 't' && String.unsafe_get s (pos+13) = 'e' && String.unsafe_get s (pos+14) = 'n' && String.unsafe_get s (pos+15) = 't' && String.unsafe_get s (pos+16) = '_' && String.unsafe_get s (pos+17) = 'f' && String.unsafe_get s (pos+18) = 'i' && String.unsafe_get s (pos+19) = 'l' && String.unsafe_get s (pos+20) = 't' && String.unsafe_get s (pos+21) = 'e' && String.unsafe_get s (pos+22) = 'r' then (
+ 12
+ )
+ else (
+ -1
+ )
+ )
+ | 29 -> (
+ if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'f' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 'l' && String.unsafe_get s (pos+6) = 't' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'm' && String.unsafe_get s (pos+9) = 'e' && String.unsafe_get s (pos+10) = 's' && String.unsafe_get s (pos+11) = 's' && String.unsafe_get s (pos+12) = 'a' && String.unsafe_get s (pos+13) = 'g' && String.unsafe_get s (pos+14) = 'e' && String.unsafe_get s (pos+15) = '_' && String.unsafe_get s (pos+16) = 'n' && String.unsafe_get s (pos+17) = 'o' && String.unsafe_get s (pos+18) = 't' && String.unsafe_get s (pos+19) = 'i' && String.unsafe_get s (pos+20) = 'f' && String.unsafe_get s (pos+21) = 'i' && String.unsafe_get s (pos+22) = 'c' && String.unsafe_get s (pos+23) = 'a' && String.unsafe_get s (pos+24) = 't' && String.unsafe_get s (pos+25) = 'i' && String.unsafe_get s (pos+26) = 'o' && String.unsafe_get s (pos+27) = 'n' && String.unsafe_get s (pos+28) = 's' then (
+ 11
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_name := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_icon := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_splash := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ field_owner_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 5 ->
+ field_region := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 6 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_afk_channel_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 7 ->
+ field_afk_timeout := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | 8 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_embed_enabled := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 9 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_embed_channel_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 10 ->
+ field_verification_level := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x20;
+ | 11 ->
+ field_default_message_notifications := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x40;
+ | 12 ->
+ field_explicit_content_filter := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x80;
+ | 13 ->
+ field_roles := (
+ (
+ read__4
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x100;
+ | 14 ->
+ field_emojis := (
+ (
+ read__5
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x200;
+ | 15 ->
+ field_features := (
+ (
+ read__6
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x400;
+ | 16 ->
+ field_mfa_level := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x800;
+ | 17 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_application_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 18 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_widget_enabled := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 19 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_widget_channel := (
+ Some (
+ (
+ read_channel
+ ) p lb
+ )
+ );
+ )
+ | 20 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_system_channel := (
+ Some (
+ (
+ read_channel
+ ) p lb
+ )
+ );
+ )
+ | 21 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_large := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 22 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_unavailable := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ )
+ );
+ )
+ | 23 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_member_count := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ )
+ );
+ )
+ | 24 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_members := (
+ Some (
+ (
+ read__9
+ ) p lb
+ )
+ );
+ )
+ | 25 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_channels := (
+ Some (
+ (
+ read__11
+ ) p lb
+ )
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0xfff then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "name"; "owner_id"; "region"; "afk_timeout"; "verification_level"; "default_message_notifications"; "explicit_content_filter"; "roles"; "emojis"; "features"; "mfa_level" |];
+ (
+ {
+ id = !field_id;
+ name = !field_name;
+ icon = !field_icon;
+ splash = !field_splash;
+ owner_id = !field_owner_id;
+ region = !field_region;
+ afk_channel_id = !field_afk_channel_id;
+ afk_timeout = !field_afk_timeout;
+ embed_enabled = !field_embed_enabled;
+ embed_channel_id = !field_embed_channel_id;
+ verification_level = !field_verification_level;
+ default_message_notifications = !field_default_message_notifications;
+ explicit_content_filter = !field_explicit_content_filter;
+ roles = !field_roles;
+ emojis = !field_emojis;
+ features = !field_features;
+ mfa_level = !field_mfa_level;
+ application_id = !field_application_id;
+ widget_enabled = !field_widget_enabled;
+ widget_channel = !field_widget_channel;
+ system_channel = !field_system_channel;
+ large = !field_large;
+ unavailable = !field_unavailable;
+ member_count = !field_member_count;
+ members = !field_members;
+ channels = !field_channels;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/guild_j.mli b/lib/models/guild_j.mli
new file mode 100644
index 0000000..d430b2a
--- /dev/null
+++ b/lib/models/guild_j.mli
@@ -0,0 +1,184 @@
+(* Auto-generated from "guild.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type role = Role_t.t
+
+type member = Member_t.t
+
+type emoji = Emoji_t.t
+
+type channel = Channel_t.t
+
+type t = Guild_t.t = {
+ id: snowflake;
+ name: string;
+ icon: string option;
+ splash: string option;
+ owner_id: snowflake;
+ region: string;
+ afk_channel_id: snowflake option;
+ afk_timeout: int;
+ embed_enabled: bool option;
+ embed_channel_id: snowflake option;
+ verification_level: int;
+ default_message_notifications: int;
+ explicit_content_filter: int;
+ roles: role list;
+ emojis: emoji list;
+ features: string list;
+ mfa_level: int;
+ application_id: snowflake option;
+ widget_enabled: bool option;
+ widget_channel: channel option;
+ system_channel: channel option;
+ large: bool option;
+ unavailable: bool option;
+ member_count: int option;
+ members: member list option;
+ channels: channel list option
+}
+
+val write_user :
+ Bi_outbuf.t -> user -> unit
+ (** Output a JSON value of type {!user}. *)
+
+val string_of_user :
+ ?len:int -> user -> string
+ (** Serialize a value of type {!user}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_user :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> user
+ (** Input JSON data of type {!user}. *)
+
+val user_of_string :
+ string -> user
+ (** Deserialize JSON data of type {!user}. *)
+
+val write_snowflake :
+ Bi_outbuf.t -> snowflake -> unit
+ (** Output a JSON value of type {!snowflake}. *)
+
+val string_of_snowflake :
+ ?len:int -> snowflake -> string
+ (** Serialize a value of type {!snowflake}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_snowflake :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake
+ (** Input JSON data of type {!snowflake}. *)
+
+val snowflake_of_string :
+ string -> snowflake
+ (** Deserialize JSON data of type {!snowflake}. *)
+
+val write_role :
+ Bi_outbuf.t -> role -> unit
+ (** Output a JSON value of type {!role}. *)
+
+val string_of_role :
+ ?len:int -> role -> string
+ (** Serialize a value of type {!role}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_role :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> role
+ (** Input JSON data of type {!role}. *)
+
+val role_of_string :
+ string -> role
+ (** Deserialize JSON data of type {!role}. *)
+
+val write_member :
+ Bi_outbuf.t -> member -> unit
+ (** Output a JSON value of type {!member}. *)
+
+val string_of_member :
+ ?len:int -> member -> string
+ (** Serialize a value of type {!member}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_member :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> member
+ (** Input JSON data of type {!member}. *)
+
+val member_of_string :
+ string -> member
+ (** Deserialize JSON data of type {!member}. *)
+
+val write_emoji :
+ Bi_outbuf.t -> emoji -> unit
+ (** Output a JSON value of type {!emoji}. *)
+
+val string_of_emoji :
+ ?len:int -> emoji -> string
+ (** Serialize a value of type {!emoji}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_emoji :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> emoji
+ (** Input JSON data of type {!emoji}. *)
+
+val emoji_of_string :
+ string -> emoji
+ (** Deserialize JSON data of type {!emoji}. *)
+
+val write_channel :
+ Bi_outbuf.t -> channel -> unit
+ (** Output a JSON value of type {!channel}. *)
+
+val string_of_channel :
+ ?len:int -> channel -> string
+ (** Serialize a value of type {!channel}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_channel :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> channel
+ (** Input JSON data of type {!channel}. *)
+
+val channel_of_string :
+ string -> channel
+ (** Deserialize JSON data of type {!channel}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/guild_t.ml b/lib/models/guild_t.ml
new file mode 100644
index 0000000..9ffe83f
--- /dev/null
+++ b/lib/models/guild_t.ml
@@ -0,0 +1,43 @@
+(* Auto-generated from "guild.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type role = Role_t.t
+
+type member = Member_t.t
+
+type emoji = Emoji_t.t
+
+type channel = Channel_t.t
+
+type t = {
+ id: snowflake;
+ name: string;
+ icon: string option;
+ splash: string option;
+ owner_id: snowflake;
+ region: string;
+ afk_channel_id: snowflake option;
+ afk_timeout: int;
+ embed_enabled: bool option;
+ embed_channel_id: snowflake option;
+ verification_level: int;
+ default_message_notifications: int;
+ explicit_content_filter: int;
+ roles: role list;
+ emojis: emoji list;
+ features: string list;
+ mfa_level: int;
+ application_id: snowflake option;
+ widget_enabled: bool option;
+ widget_channel: channel option;
+ system_channel: channel option;
+ large: bool option;
+ unavailable: bool option;
+ member_count: int option;
+ members: member list option;
+ channels: channel list option
+}
diff --git a/lib/models/guild_t.mli b/lib/models/guild_t.mli
new file mode 100644
index 0000000..9ffe83f
--- /dev/null
+++ b/lib/models/guild_t.mli
@@ -0,0 +1,43 @@
+(* Auto-generated from "guild.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type role = Role_t.t
+
+type member = Member_t.t
+
+type emoji = Emoji_t.t
+
+type channel = Channel_t.t
+
+type t = {
+ id: snowflake;
+ name: string;
+ icon: string option;
+ splash: string option;
+ owner_id: snowflake;
+ region: string;
+ afk_channel_id: snowflake option;
+ afk_timeout: int;
+ embed_enabled: bool option;
+ embed_channel_id: snowflake option;
+ verification_level: int;
+ default_message_notifications: int;
+ explicit_content_filter: int;
+ roles: role list;
+ emojis: emoji list;
+ features: string list;
+ mfa_level: int;
+ application_id: snowflake option;
+ widget_enabled: bool option;
+ widget_channel: channel option;
+ system_channel: channel option;
+ large: bool option;
+ unavailable: bool option;
+ member_count: int option;
+ members: member list option;
+ channels: channel list option
+}
diff --git a/lib/models/member.atd b/lib/models/member.atd
new file mode 100644
index 0000000..11d8b62
--- /dev/null
+++ b/lib/models/member.atd
@@ -0,0 +1,15 @@
+type snowflake <ocaml from="Snowflake" t="t"> = abstract
+type user <ocaml from="User" t="t"> = abstract
+
+type partial_member = {
+ ?nick: string option;
+ roles: snowflake list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool;
+}
+
+type t = {
+ inherit partial_member;
+ user: user;
+} \ No newline at end of file
diff --git a/lib/models/member.ml b/lib/models/member.ml
deleted file mode 100644
index 4621902..0000000
--- a/lib/models/member.ml
+++ /dev/null
@@ -1,8 +0,0 @@
-type t = {
- user: User.t;
- nick: string option;
- roles: Role.t list;
- joined_at: string;
- deaf: bool;
- mute: bool;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/member_j.ml b/lib/models/member_j.ml
new file mode 100644
index 0000000..7fd4aec
--- /dev/null
+++ b/lib/models/member_j.ml
@@ -0,0 +1,750 @@
+(* Auto-generated from "member.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = Member_t.t = {
+ nick: string option;
+ roles: snowflake list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool;
+ user: user
+}
+
+type partial_member = Member_t.partial_member = {
+ nick: string option;
+ roles: snowflake list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool
+}
+
+let write_user = (
+ User_j.write_t
+)
+let string_of_user ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_user ob x;
+ Bi_outbuf.contents ob
+let read_user = (
+ User_j.read_t
+)
+let user_of_string s =
+ read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_snowflake = (
+ Snowflake_j.write_t
+)
+let string_of_snowflake ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_snowflake ob x;
+ Bi_outbuf.contents ob
+let read_snowflake = (
+ Snowflake_j.read_t
+)
+let snowflake_of_string s =
+ read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__2 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_snowflake
+ )
+)
+let string_of__2 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__2 ob x;
+ Bi_outbuf.contents ob
+let read__2 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_snowflake
+ )
+)
+let _2_of_string s =
+ read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_string
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ (match x.nick with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"nick\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"roles\":";
+ (
+ write__2
+ )
+ ob x.roles;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"joined_at\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.joined_at;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"deaf\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.deaf;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"mute\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.mute;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"user\":";
+ (
+ write_user
+ )
+ ob x.user;
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_nick = ref (None) in
+ let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_joined_at = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_deaf = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_mute = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_user = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'd' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 'n' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 'u' -> (
+ if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_nick := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ field_roles := (
+ (
+ read__2
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 2 ->
+ field_joined_at := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 3 ->
+ field_deaf := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 4 ->
+ field_mute := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 5 ->
+ field_user := (
+ (
+ read_user
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'd' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 'n' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 'u' -> (
+ if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_nick := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ field_roles := (
+ (
+ read__2
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 2 ->
+ field_joined_at := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 3 ->
+ field_deaf := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 4 ->
+ field_mute := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 5 ->
+ field_user := (
+ (
+ read_user
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "roles"; "joined_at"; "deaf"; "mute"; "user" |];
+ (
+ {
+ nick = !field_nick;
+ roles = !field_roles;
+ joined_at = !field_joined_at;
+ deaf = !field_deaf;
+ mute = !field_mute;
+ user = !field_user;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_partial_member : _ -> partial_member -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ (match x.nick with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"nick\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"roles\":";
+ (
+ write__2
+ )
+ ob x.roles;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"joined_at\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.joined_at;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"deaf\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.deaf;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"mute\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.mute;
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_partial_member ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_partial_member ob x;
+ Bi_outbuf.contents ob
+let read_partial_member = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_nick = ref (None) in
+ let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_joined_at = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_deaf = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_mute = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'd' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 'n' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_nick := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ field_roles := (
+ (
+ read__2
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 2 ->
+ field_joined_at := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 3 ->
+ field_deaf := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 4 ->
+ field_mute := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'd' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 'n' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 9 -> (
+ if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_nick := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 1 ->
+ field_roles := (
+ (
+ read__2
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 2 ->
+ field_joined_at := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 3 ->
+ field_deaf := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 4 ->
+ field_mute := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0xf then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "roles"; "joined_at"; "deaf"; "mute" |];
+ (
+ {
+ nick = !field_nick;
+ roles = !field_roles;
+ joined_at = !field_joined_at;
+ deaf = !field_deaf;
+ mute = !field_mute;
+ }
+ : partial_member)
+ )
+)
+let partial_member_of_string s =
+ read_partial_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/member_j.mli b/lib/models/member_j.mli
new file mode 100644
index 0000000..f160b6d
--- /dev/null
+++ b/lib/models/member_j.mli
@@ -0,0 +1,104 @@
+(* Auto-generated from "member.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = Member_t.t = {
+ nick: string option;
+ roles: snowflake list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool;
+ user: user
+}
+
+type partial_member = Member_t.partial_member = {
+ nick: string option;
+ roles: snowflake list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool
+}
+
+val write_user :
+ Bi_outbuf.t -> user -> unit
+ (** Output a JSON value of type {!user}. *)
+
+val string_of_user :
+ ?len:int -> user -> string
+ (** Serialize a value of type {!user}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_user :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> user
+ (** Input JSON data of type {!user}. *)
+
+val user_of_string :
+ string -> user
+ (** Deserialize JSON data of type {!user}. *)
+
+val write_snowflake :
+ Bi_outbuf.t -> snowflake -> unit
+ (** Output a JSON value of type {!snowflake}. *)
+
+val string_of_snowflake :
+ ?len:int -> snowflake -> string
+ (** Serialize a value of type {!snowflake}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_snowflake :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake
+ (** Input JSON data of type {!snowflake}. *)
+
+val snowflake_of_string :
+ string -> snowflake
+ (** Deserialize JSON data of type {!snowflake}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
+val write_partial_member :
+ Bi_outbuf.t -> partial_member -> unit
+ (** Output a JSON value of type {!partial_member}. *)
+
+val string_of_partial_member :
+ ?len:int -> partial_member -> string
+ (** Serialize a value of type {!partial_member}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_partial_member :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_member
+ (** Input JSON data of type {!partial_member}. *)
+
+val partial_member_of_string :
+ string -> partial_member
+ (** Deserialize JSON data of type {!partial_member}. *)
+
diff --git a/lib/models/member_t.ml b/lib/models/member_t.ml
new file mode 100644
index 0000000..6262e1b
--- /dev/null
+++ b/lib/models/member_t.ml
@@ -0,0 +1,23 @@
+(* Auto-generated from "member.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ nick: string option;
+ roles: snowflake list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool;
+ user: user
+}
+
+type partial_member = {
+ nick: string option;
+ roles: snowflake list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool
+}
diff --git a/lib/models/member_t.mli b/lib/models/member_t.mli
new file mode 100644
index 0000000..6262e1b
--- /dev/null
+++ b/lib/models/member_t.mli
@@ -0,0 +1,23 @@
+(* Auto-generated from "member.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ nick: string option;
+ roles: snowflake list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool;
+ user: user
+}
+
+type partial_member = {
+ nick: string option;
+ roles: snowflake list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool
+}
diff --git a/lib/models/message.atd b/lib/models/message.atd
new file mode 100644
index 0000000..1c90be9
--- /dev/null
+++ b/lib/models/message.atd
@@ -0,0 +1,30 @@
+type snowflake <ocaml from="Snowflake" t="t"> = abstract
+type user <ocaml from="User" t="t"> = abstract
+type member <ocaml from="Member" t="t"> = abstract
+type partial_member <ocaml from="Member" t="partial_member"> = abstract
+type role <ocaml from="Role" t="t"> = abstract
+type attachment <ocaml from="Attachment" t="t"> = abstract
+type embed <ocaml from="Embed" t="t"> = abstract
+type reaction <ocaml from="Reaction" t="t"> = abstract
+
+type t = {
+ id: snowflake;
+ author: user;
+ channel_id: snowflake;
+ ?member: partial_member option;
+ ?guild_id: snowflake option;
+ content: string;
+ timestamp: string;
+ ?edited_timestamp: string option;
+ tts: bool;
+ mention_everyone: bool;
+ mentions: user list;
+ role_mentions: role list;
+ attachments: attachment list;
+ embeds: embed list;
+ reactions: reaction list;
+ ?nonce: snowflake option;
+ pinned: bool;
+ webhook_id: snowflake;
+ kind <json name="type">: int;
+} \ No newline at end of file
diff --git a/lib/models/message.ml b/lib/models/message.ml
deleted file mode 100644
index c578d9f..0000000
--- a/lib/models/message.ml
+++ /dev/null
@@ -1,21 +0,0 @@
-type t = {
- id: Snowflake.t;
- author: User.t;
- channel: Channel.t;
- member: Member.t option;
- guild: Guild.t option;
- content: string;
- timestamp: string;
- edited_timestamp: string option;
- tts: bool;
- mention_everyone: bool;
- mentions: User.t list;
- role_mentions: Role.t list;
- attachments: Attachment.t list;
- embeds: Embed.t list;
- reactions: Reaction.t list;
- nonce: Snowflake.t option;
- pinned: bool;
- webhook_id: Snowflake.t;
- kind: int;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/message_j.ml b/lib/models/message_j.ml
new file mode 100644
index 0000000..206d69c
--- /dev/null
+++ b/lib/models/message_j.ml
@@ -0,0 +1,1328 @@
+(* Auto-generated from "message.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type role = Role_t.t
+
+type reaction = Reaction_t.t
+
+type partial_member = Member_t.partial_member
+
+type embed = Embed_t.t
+
+type attachment = Attachment_t.t
+
+type t = Message_t.t = {
+ id: snowflake;
+ author: user;
+ channel_id: snowflake;
+ member: partial_member option;
+ guild_id: snowflake option;
+ content: string;
+ timestamp: string;
+ edited_timestamp: string option;
+ tts: bool;
+ mention_everyone: bool;
+ mentions: user list;
+ role_mentions: role list;
+ attachments: attachment list;
+ embeds: embed list;
+ reactions: reaction list;
+ nonce: snowflake option;
+ pinned: bool;
+ webhook_id: snowflake;
+ kind: int
+}
+
+type member = Member_t.t
+
+let write_user = (
+ User_j.write_t
+)
+let string_of_user ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_user ob x;
+ Bi_outbuf.contents ob
+let read_user = (
+ User_j.read_t
+)
+let user_of_string s =
+ read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_snowflake = (
+ Snowflake_j.write_t
+)
+let string_of_snowflake ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_snowflake ob x;
+ Bi_outbuf.contents ob
+let read_snowflake = (
+ Snowflake_j.read_t
+)
+let snowflake_of_string s =
+ read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_role = (
+ Role_j.write_t
+)
+let string_of_role ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_role ob x;
+ Bi_outbuf.contents ob
+let read_role = (
+ Role_j.read_t
+)
+let role_of_string s =
+ read_role (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_reaction = (
+ Reaction_j.write_t
+)
+let string_of_reaction ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_reaction ob x;
+ Bi_outbuf.contents ob
+let read_reaction = (
+ Reaction_j.read_t
+)
+let reaction_of_string s =
+ read_reaction (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_partial_member = (
+ Member_j.write_partial_member
+)
+let string_of_partial_member ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_partial_member ob x;
+ Bi_outbuf.contents ob
+let read_partial_member = (
+ Member_j.read_partial_member
+)
+let partial_member_of_string s =
+ read_partial_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_embed = (
+ Embed_j.write_t
+)
+let string_of_embed ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_embed ob x;
+ Bi_outbuf.contents ob
+let read_embed = (
+ Embed_j.read_t
+)
+let embed_of_string s =
+ read_embed (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_attachment = (
+ Attachment_j.write_t
+)
+let string_of_attachment ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_attachment ob x;
+ Bi_outbuf.contents ob
+let read_attachment = (
+ Attachment_j.read_t
+)
+let attachment_of_string s =
+ read_attachment (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__8 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_reaction
+ )
+)
+let string_of__8 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__8 ob x;
+ Bi_outbuf.contents ob
+let read__8 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_reaction
+ )
+)
+let _8_of_string s =
+ read__8 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__7 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_embed
+ )
+)
+let string_of__7 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__7 ob x;
+ Bi_outbuf.contents ob
+let read__7 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_embed
+ )
+)
+let _7_of_string s =
+ read__7 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__6 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_attachment
+ )
+)
+let string_of__6 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__6 ob x;
+ Bi_outbuf.contents ob
+let read__6 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_attachment
+ )
+)
+let _6_of_string s =
+ read__6 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__5 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_role
+ )
+)
+let string_of__5 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__5 ob x;
+ Bi_outbuf.contents ob
+let read__5 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_role
+ )
+)
+let _5_of_string s =
+ read__5 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__4 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_user
+ )
+)
+let string_of__4 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__4 ob x;
+ Bi_outbuf.contents ob
+let read__4 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_user
+ )
+)
+let _4_of_string s =
+ read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__3 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_string
+ )
+)
+let string_of__3 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__3 ob x;
+ Bi_outbuf.contents ob
+let read__3 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _3_of_string s =
+ read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__2 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_snowflake
+ )
+)
+let string_of__2 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__2 ob x;
+ Bi_outbuf.contents ob
+let read__2 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_snowflake
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_snowflake
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _2_of_string s =
+ read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_partial_member
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_partial_member
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_partial_member
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"id\":";
+ (
+ write_snowflake
+ )
+ ob x.id;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"author\":";
+ (
+ write_user
+ )
+ ob x.author;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"channel_id\":";
+ (
+ write_snowflake
+ )
+ ob x.channel_id;
+ (match x.member with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"member\":";
+ (
+ write_partial_member
+ )
+ ob x;
+ );
+ (match x.guild_id with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"guild_id\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"content\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.content;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"timestamp\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.timestamp;
+ (match x.edited_timestamp with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"edited_timestamp\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"tts\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.tts;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"mention_everyone\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.mention_everyone;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"mentions\":";
+ (
+ write__4
+ )
+ ob x.mentions;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"role_mentions\":";
+ (
+ write__5
+ )
+ ob x.role_mentions;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"attachments\":";
+ (
+ write__6
+ )
+ ob x.attachments;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"embeds\":";
+ (
+ write__7
+ )
+ ob x.embeds;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"reactions\":";
+ (
+ write__8
+ )
+ ob x.reactions;
+ (match x.nonce with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"nonce\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"pinned\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.pinned;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"webhook_id\":";
+ (
+ write_snowflake
+ )
+ ob x.webhook_id;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"type\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.kind;
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_author = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_channel_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_member = ref (None) in
+ let field_guild_id = ref (None) in
+ let field_content = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_timestamp = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_edited_timestamp = ref (None) in
+ let field_tts = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_mention_everyone = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_mentions = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_role_mentions = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_attachments = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_embeds = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_reactions = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_nonce = ref (None) in
+ let field_pinned = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_webhook_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_kind = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 3 -> (
+ if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 's' then (
+ 8
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then (
+ 18
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'e' then (
+ 15
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ match String.unsafe_get s pos with
+ | 'a' -> (
+ if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'h' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'r' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 'e' -> (
+ if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = 's' then (
+ 13
+ )
+ else (
+ -1
+ )
+ )
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 'p' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' then (
+ 16
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 7 -> (
+ if String.unsafe_get s pos = 'c' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'n' && String.unsafe_get s (pos+6) = 't' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ match String.unsafe_get s pos with
+ | 'g' -> (
+ if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = 's' then (
+ 10
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 9 -> (
+ match String.unsafe_get s pos with
+ | 'r' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 's' then (
+ 14
+ )
+ else (
+ -1
+ )
+ )
+ | 't' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'p' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 10 -> (
+ match String.unsafe_get s pos with
+ | 'c' -> (
+ if String.unsafe_get s (pos+1) = 'h' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'd' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 'w' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'h' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'k' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'd' then (
+ 17
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 11 -> (
+ if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'c' && String.unsafe_get s (pos+5) = 'h' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 't' && String.unsafe_get s (pos+10) = 's' then (
+ 12
+ )
+ else (
+ -1
+ )
+ )
+ | 13 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'm' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 'i' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 's' then (
+ 11
+ )
+ else (
+ -1
+ )
+ )
+ | 16 -> (
+ match String.unsafe_get s pos with
+ | 'e' -> (
+ if String.unsafe_get s (pos+1) = 'd' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'm' && String.unsafe_get s (pos+10) = 'e' && String.unsafe_get s (pos+11) = 's' && String.unsafe_get s (pos+12) = 't' && String.unsafe_get s (pos+13) = 'a' && String.unsafe_get s (pos+14) = 'm' && String.unsafe_get s (pos+15) = 'p' then (
+ 7
+ )
+ else (
+ -1
+ )
+ )
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'e' && String.unsafe_get s (pos+9) = 'v' && String.unsafe_get s (pos+10) = 'e' && String.unsafe_get s (pos+11) = 'r' && String.unsafe_get s (pos+12) = 'y' && String.unsafe_get s (pos+13) = 'o' && String.unsafe_get s (pos+14) = 'n' && String.unsafe_get s (pos+15) = 'e' then (
+ 9
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_author := (
+ (
+ read_user
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ field_channel_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_member := (
+ Some (
+ (
+ read_partial_member
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_guild_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 5 ->
+ field_content := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 6 ->
+ field_timestamp := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | 7 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_edited_timestamp := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 8 ->
+ field_tts := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x20;
+ | 9 ->
+ field_mention_everyone := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x40;
+ | 10 ->
+ field_mentions := (
+ (
+ read__4
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x80;
+ | 11 ->
+ field_role_mentions := (
+ (
+ read__5
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x100;
+ | 12 ->
+ field_attachments := (
+ (
+ read__6
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x200;
+ | 13 ->
+ field_embeds := (
+ (
+ read__7
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x400;
+ | 14 ->
+ field_reactions := (
+ (
+ read__8
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x800;
+ | 15 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_nonce := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 16 ->
+ field_pinned := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1000;
+ | 17 ->
+ field_webhook_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2000;
+ | 18 ->
+ field_kind := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4000;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 3 -> (
+ if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 's' then (
+ 8
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ if String.unsafe_get s pos = 't' && String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then (
+ 18
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'e' then (
+ 15
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ match String.unsafe_get s pos with
+ | 'a' -> (
+ if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'h' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'r' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 'e' -> (
+ if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = 's' then (
+ 13
+ )
+ else (
+ -1
+ )
+ )
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'b' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'r' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 'p' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' then (
+ 16
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 7 -> (
+ if String.unsafe_get s pos = 'c' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'n' && String.unsafe_get s (pos+6) = 't' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ match String.unsafe_get s pos with
+ | 'g' -> (
+ if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = 's' then (
+ 10
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 9 -> (
+ match String.unsafe_get s pos with
+ | 'r' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 's' then (
+ 14
+ )
+ else (
+ -1
+ )
+ )
+ | 't' -> (
+ if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' && String.unsafe_get s (pos+5) = 't' && String.unsafe_get s (pos+6) = 'a' && String.unsafe_get s (pos+7) = 'm' && String.unsafe_get s (pos+8) = 'p' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 10 -> (
+ match String.unsafe_get s pos with
+ | 'c' -> (
+ if String.unsafe_get s (pos+1) = 'h' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'l' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'd' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 'w' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'b' && String.unsafe_get s (pos+3) = 'h' && String.unsafe_get s (pos+4) = 'o' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'k' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'd' then (
+ 17
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 11 -> (
+ if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'c' && String.unsafe_get s (pos+5) = 'h' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 't' && String.unsafe_get s (pos+10) = 's' then (
+ 12
+ )
+ else (
+ -1
+ )
+ )
+ | 13 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = '_' && String.unsafe_get s (pos+5) = 'm' && String.unsafe_get s (pos+6) = 'e' && String.unsafe_get s (pos+7) = 'n' && String.unsafe_get s (pos+8) = 't' && String.unsafe_get s (pos+9) = 'i' && String.unsafe_get s (pos+10) = 'o' && String.unsafe_get s (pos+11) = 'n' && String.unsafe_get s (pos+12) = 's' then (
+ 11
+ )
+ else (
+ -1
+ )
+ )
+ | 16 -> (
+ match String.unsafe_get s pos with
+ | 'e' -> (
+ if String.unsafe_get s (pos+1) = 'd' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 't' && String.unsafe_get s (pos+8) = 'i' && String.unsafe_get s (pos+9) = 'm' && String.unsafe_get s (pos+10) = 'e' && String.unsafe_get s (pos+11) = 's' && String.unsafe_get s (pos+12) = 't' && String.unsafe_get s (pos+13) = 'a' && String.unsafe_get s (pos+14) = 'm' && String.unsafe_get s (pos+15) = 'p' then (
+ 7
+ )
+ else (
+ -1
+ )
+ )
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = '_' && String.unsafe_get s (pos+8) = 'e' && String.unsafe_get s (pos+9) = 'v' && String.unsafe_get s (pos+10) = 'e' && String.unsafe_get s (pos+11) = 'r' && String.unsafe_get s (pos+12) = 'y' && String.unsafe_get s (pos+13) = 'o' && String.unsafe_get s (pos+14) = 'n' && String.unsafe_get s (pos+15) = 'e' then (
+ 9
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_author := (
+ (
+ read_user
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ field_channel_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_member := (
+ Some (
+ (
+ read_partial_member
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_guild_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 5 ->
+ field_content := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 6 ->
+ field_timestamp := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | 7 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_edited_timestamp := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 8 ->
+ field_tts := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x20;
+ | 9 ->
+ field_mention_everyone := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x40;
+ | 10 ->
+ field_mentions := (
+ (
+ read__4
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x80;
+ | 11 ->
+ field_role_mentions := (
+ (
+ read__5
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x100;
+ | 12 ->
+ field_attachments := (
+ (
+ read__6
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x200;
+ | 13 ->
+ field_embeds := (
+ (
+ read__7
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x400;
+ | 14 ->
+ field_reactions := (
+ (
+ read__8
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x800;
+ | 15 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_nonce := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
+ | 16 ->
+ field_pinned := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1000;
+ | 17 ->
+ field_webhook_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2000;
+ | 18 ->
+ field_kind := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4000;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x7fff then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "author"; "channel_id"; "content"; "timestamp"; "tts"; "mention_everyone"; "mentions"; "role_mentions"; "attachments"; "embeds"; "reactions"; "pinned"; "webhook_id"; "kind" |];
+ (
+ {
+ id = !field_id;
+ author = !field_author;
+ channel_id = !field_channel_id;
+ member = !field_member;
+ guild_id = !field_guild_id;
+ content = !field_content;
+ timestamp = !field_timestamp;
+ edited_timestamp = !field_edited_timestamp;
+ tts = !field_tts;
+ mention_everyone = !field_mention_everyone;
+ mentions = !field_mentions;
+ role_mentions = !field_role_mentions;
+ attachments = !field_attachments;
+ embeds = !field_embeds;
+ reactions = !field_reactions;
+ nonce = !field_nonce;
+ pinned = !field_pinned;
+ webhook_id = !field_webhook_id;
+ kind = !field_kind;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_member = (
+ Member_j.write_t
+)
+let string_of_member ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_member ob x;
+ Bi_outbuf.contents ob
+let read_member = (
+ Member_j.read_t
+)
+let member_of_string s =
+ read_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/message_j.mli b/lib/models/message_j.mli
new file mode 100644
index 0000000..e3a3e5b
--- /dev/null
+++ b/lib/models/message_j.mli
@@ -0,0 +1,221 @@
+(* Auto-generated from "message.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type role = Role_t.t
+
+type reaction = Reaction_t.t
+
+type partial_member = Member_t.partial_member
+
+type embed = Embed_t.t
+
+type attachment = Attachment_t.t
+
+type t = Message_t.t = {
+ id: snowflake;
+ author: user;
+ channel_id: snowflake;
+ member: partial_member option;
+ guild_id: snowflake option;
+ content: string;
+ timestamp: string;
+ edited_timestamp: string option;
+ tts: bool;
+ mention_everyone: bool;
+ mentions: user list;
+ role_mentions: role list;
+ attachments: attachment list;
+ embeds: embed list;
+ reactions: reaction list;
+ nonce: snowflake option;
+ pinned: bool;
+ webhook_id: snowflake;
+ kind: int
+}
+
+type member = Member_t.t
+
+val write_user :
+ Bi_outbuf.t -> user -> unit
+ (** Output a JSON value of type {!user}. *)
+
+val string_of_user :
+ ?len:int -> user -> string
+ (** Serialize a value of type {!user}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_user :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> user
+ (** Input JSON data of type {!user}. *)
+
+val user_of_string :
+ string -> user
+ (** Deserialize JSON data of type {!user}. *)
+
+val write_snowflake :
+ Bi_outbuf.t -> snowflake -> unit
+ (** Output a JSON value of type {!snowflake}. *)
+
+val string_of_snowflake :
+ ?len:int -> snowflake -> string
+ (** Serialize a value of type {!snowflake}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_snowflake :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake
+ (** Input JSON data of type {!snowflake}. *)
+
+val snowflake_of_string :
+ string -> snowflake
+ (** Deserialize JSON data of type {!snowflake}. *)
+
+val write_role :
+ Bi_outbuf.t -> role -> unit
+ (** Output a JSON value of type {!role}. *)
+
+val string_of_role :
+ ?len:int -> role -> string
+ (** Serialize a value of type {!role}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_role :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> role
+ (** Input JSON data of type {!role}. *)
+
+val role_of_string :
+ string -> role
+ (** Deserialize JSON data of type {!role}. *)
+
+val write_reaction :
+ Bi_outbuf.t -> reaction -> unit
+ (** Output a JSON value of type {!reaction}. *)
+
+val string_of_reaction :
+ ?len:int -> reaction -> string
+ (** Serialize a value of type {!reaction}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_reaction :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> reaction
+ (** Input JSON data of type {!reaction}. *)
+
+val reaction_of_string :
+ string -> reaction
+ (** Deserialize JSON data of type {!reaction}. *)
+
+val write_partial_member :
+ Bi_outbuf.t -> partial_member -> unit
+ (** Output a JSON value of type {!partial_member}. *)
+
+val string_of_partial_member :
+ ?len:int -> partial_member -> string
+ (** Serialize a value of type {!partial_member}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_partial_member :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_member
+ (** Input JSON data of type {!partial_member}. *)
+
+val partial_member_of_string :
+ string -> partial_member
+ (** Deserialize JSON data of type {!partial_member}. *)
+
+val write_embed :
+ Bi_outbuf.t -> embed -> unit
+ (** Output a JSON value of type {!embed}. *)
+
+val string_of_embed :
+ ?len:int -> embed -> string
+ (** Serialize a value of type {!embed}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_embed :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> embed
+ (** Input JSON data of type {!embed}. *)
+
+val embed_of_string :
+ string -> embed
+ (** Deserialize JSON data of type {!embed}. *)
+
+val write_attachment :
+ Bi_outbuf.t -> attachment -> unit
+ (** Output a JSON value of type {!attachment}. *)
+
+val string_of_attachment :
+ ?len:int -> attachment -> string
+ (** Serialize a value of type {!attachment}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_attachment :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> attachment
+ (** Input JSON data of type {!attachment}. *)
+
+val attachment_of_string :
+ string -> attachment
+ (** Deserialize JSON data of type {!attachment}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
+val write_member :
+ Bi_outbuf.t -> member -> unit
+ (** Output a JSON value of type {!member}. *)
+
+val string_of_member :
+ ?len:int -> member -> string
+ (** Serialize a value of type {!member}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_member :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> member
+ (** Input JSON data of type {!member}. *)
+
+val member_of_string :
+ string -> member
+ (** Deserialize JSON data of type {!member}. *)
+
diff --git a/lib/models/message_t.ml b/lib/models/message_t.ml
new file mode 100644
index 0000000..2442d76
--- /dev/null
+++ b/lib/models/message_t.ml
@@ -0,0 +1,40 @@
+(* Auto-generated from "message.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type role = Role_t.t
+
+type reaction = Reaction_t.t
+
+type partial_member = Member_t.partial_member
+
+type embed = Embed_t.t
+
+type attachment = Attachment_t.t
+
+type t = {
+ id: snowflake;
+ author: user;
+ channel_id: snowflake;
+ member: partial_member option;
+ guild_id: snowflake option;
+ content: string;
+ timestamp: string;
+ edited_timestamp: string option;
+ tts: bool;
+ mention_everyone: bool;
+ mentions: user list;
+ role_mentions: role list;
+ attachments: attachment list;
+ embeds: embed list;
+ reactions: reaction list;
+ nonce: snowflake option;
+ pinned: bool;
+ webhook_id: snowflake;
+ kind: int
+}
+
+type member = Member_t.t
diff --git a/lib/models/message_t.mli b/lib/models/message_t.mli
new file mode 100644
index 0000000..2442d76
--- /dev/null
+++ b/lib/models/message_t.mli
@@ -0,0 +1,40 @@
+(* Auto-generated from "message.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type role = Role_t.t
+
+type reaction = Reaction_t.t
+
+type partial_member = Member_t.partial_member
+
+type embed = Embed_t.t
+
+type attachment = Attachment_t.t
+
+type t = {
+ id: snowflake;
+ author: user;
+ channel_id: snowflake;
+ member: partial_member option;
+ guild_id: snowflake option;
+ content: string;
+ timestamp: string;
+ edited_timestamp: string option;
+ tts: bool;
+ mention_everyone: bool;
+ mentions: user list;
+ role_mentions: role list;
+ attachments: attachment list;
+ embeds: embed list;
+ reactions: reaction list;
+ nonce: snowflake option;
+ pinned: bool;
+ webhook_id: snowflake;
+ kind: int
+}
+
+type member = Member_t.t
diff --git a/lib/models/presence.atd b/lib/models/presence.atd
new file mode 100644
index 0000000..da9b3fd
--- /dev/null
+++ b/lib/models/presence.atd
@@ -0,0 +1,13 @@
+type snowflake <ocaml from="Snowflake" t="t"> = abstract
+type user <ocaml from="User" t="t"> = abstract
+type partial_user <ocaml from="User" t="partial_user"> = abstract
+type activity <ocaml from="Activity" t="t"> = abstract
+
+type t = {
+ user: partial_user;
+ roles: snowflake list;
+ ?game: activity option;
+ guild_id: snowflake;
+ status: string;
+ activities: activity list;
+} \ No newline at end of file
diff --git a/lib/models/presence.ml b/lib/models/presence.ml
deleted file mode 100644
index ed1bdb6..0000000
--- a/lib/models/presence.ml
+++ /dev/null
@@ -1,8 +0,0 @@
-type t = {
- user: User.t;
- roles: Role.t list;
- game: Activity.t option;
- guild: Guild.t;
- status: string;
- activities: Activity.t list;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/presence_j.ml b/lib/models/presence_j.ml
new file mode 100644
index 0000000..b4ea497
--- /dev/null
+++ b/lib/models/presence_j.ml
@@ -0,0 +1,492 @@
+(* Auto-generated from "presence.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type partial_user = User_t.partial_user
+
+type activity = Activity_t.t
+
+type t = Presence_t.t = {
+ user: partial_user;
+ roles: snowflake list;
+ game: activity option;
+ guild_id: snowflake;
+ status: string;
+ activities: activity list
+}
+
+let write_user = (
+ User_j.write_t
+)
+let string_of_user ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_user ob x;
+ Bi_outbuf.contents ob
+let read_user = (
+ User_j.read_t
+)
+let user_of_string s =
+ read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_snowflake = (
+ Snowflake_j.write_t
+)
+let string_of_snowflake ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_snowflake ob x;
+ Bi_outbuf.contents ob
+let read_snowflake = (
+ Snowflake_j.read_t
+)
+let snowflake_of_string s =
+ read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_partial_user = (
+ User_j.write_partial_user
+)
+let string_of_partial_user ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_partial_user ob x;
+ Bi_outbuf.contents ob
+let read_partial_user = (
+ User_j.read_partial_user
+)
+let partial_user_of_string s =
+ read_partial_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_activity = (
+ Activity_j.write_t
+)
+let string_of_activity ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_activity ob x;
+ Bi_outbuf.contents ob
+let read_activity = (
+ Activity_j.read_t
+)
+let activity_of_string s =
+ read_activity (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__3 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_activity
+ )
+)
+let string_of__3 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__3 ob x;
+ Bi_outbuf.contents ob
+let read__3 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_activity
+ )
+)
+let _3_of_string s =
+ read__3 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__2 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write_activity
+ )
+)
+let string_of__2 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__2 ob x;
+ Bi_outbuf.contents ob
+let read__2 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ read_activity
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ read_activity
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _2_of_string s =
+ read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_list (
+ write_snowflake
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ Atdgen_runtime.Oj_run.read_list (
+ read_snowflake
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"user\":";
+ (
+ write_partial_user
+ )
+ ob x.user;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"roles\":";
+ (
+ write__1
+ )
+ ob x.roles;
+ (match x.game with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"game\":";
+ (
+ write_activity
+ )
+ ob x;
+ );
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"guild_id\":";
+ (
+ write_snowflake
+ )
+ ob x.guild_id;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"status\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.status;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"activities\":";
+ (
+ write__3
+ )
+ ob x.activities;
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_user = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_game = ref (None) in
+ let field_guild_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_status = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_activities = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'g' -> (
+ if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 'u' -> (
+ if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 's' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 's' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'g' && String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 10 -> (
+ if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'v' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 't' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'e' && String.unsafe_get s (pos+9) = 's' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_user := (
+ (
+ read_partial_user
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_roles := (
+ (
+ read__1
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_game := (
+ Some (
+ (
+ read_activity
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ field_guild_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 4 ->
+ field_status := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 5 ->
+ field_activities := (
+ (
+ read__3
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 4 -> (
+ match String.unsafe_get s pos with
+ | 'g' -> (
+ if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 'u' -> (
+ if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 5 -> (
+ if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 's' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 's' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'g' && String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 10 -> (
+ if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'v' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 't' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'e' && String.unsafe_get s (pos+9) = 's' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_user := (
+ (
+ read_partial_user
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_roles := (
+ (
+ read__1
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_game := (
+ Some (
+ (
+ read_activity
+ ) p lb
+ )
+ );
+ )
+ | 3 ->
+ field_guild_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 4 ->
+ field_status := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 5 ->
+ field_activities := (
+ (
+ read__3
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "user"; "roles"; "guild_id"; "status"; "activities" |];
+ (
+ {
+ user = !field_user;
+ roles = !field_roles;
+ game = !field_game;
+ guild_id = !field_guild_id;
+ status = !field_status;
+ activities = !field_activities;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/presence_j.mli b/lib/models/presence_j.mli
new file mode 100644
index 0000000..be68b3f
--- /dev/null
+++ b/lib/models/presence_j.mli
@@ -0,0 +1,120 @@
+(* Auto-generated from "presence.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type partial_user = User_t.partial_user
+
+type activity = Activity_t.t
+
+type t = Presence_t.t = {
+ user: partial_user;
+ roles: snowflake list;
+ game: activity option;
+ guild_id: snowflake;
+ status: string;
+ activities: activity list
+}
+
+val write_user :
+ Bi_outbuf.t -> user -> unit
+ (** Output a JSON value of type {!user}. *)
+
+val string_of_user :
+ ?len:int -> user -> string
+ (** Serialize a value of type {!user}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_user :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> user
+ (** Input JSON data of type {!user}. *)
+
+val user_of_string :
+ string -> user
+ (** Deserialize JSON data of type {!user}. *)
+
+val write_snowflake :
+ Bi_outbuf.t -> snowflake -> unit
+ (** Output a JSON value of type {!snowflake}. *)
+
+val string_of_snowflake :
+ ?len:int -> snowflake -> string
+ (** Serialize a value of type {!snowflake}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_snowflake :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake
+ (** Input JSON data of type {!snowflake}. *)
+
+val snowflake_of_string :
+ string -> snowflake
+ (** Deserialize JSON data of type {!snowflake}. *)
+
+val write_partial_user :
+ Bi_outbuf.t -> partial_user -> unit
+ (** Output a JSON value of type {!partial_user}. *)
+
+val string_of_partial_user :
+ ?len:int -> partial_user -> string
+ (** Serialize a value of type {!partial_user}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_partial_user :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_user
+ (** Input JSON data of type {!partial_user}. *)
+
+val partial_user_of_string :
+ string -> partial_user
+ (** Deserialize JSON data of type {!partial_user}. *)
+
+val write_activity :
+ Bi_outbuf.t -> activity -> unit
+ (** Output a JSON value of type {!activity}. *)
+
+val string_of_activity :
+ ?len:int -> activity -> string
+ (** Serialize a value of type {!activity}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_activity :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> activity
+ (** Input JSON data of type {!activity}. *)
+
+val activity_of_string :
+ string -> activity
+ (** Deserialize JSON data of type {!activity}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/presence_t.ml b/lib/models/presence_t.ml
new file mode 100644
index 0000000..940d986
--- /dev/null
+++ b/lib/models/presence_t.ml
@@ -0,0 +1,19 @@
+(* Auto-generated from "presence.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type partial_user = User_t.partial_user
+
+type activity = Activity_t.t
+
+type t = {
+ user: partial_user;
+ roles: snowflake list;
+ game: activity option;
+ guild_id: snowflake;
+ status: string;
+ activities: activity list
+}
diff --git a/lib/models/presence_t.mli b/lib/models/presence_t.mli
new file mode 100644
index 0000000..940d986
--- /dev/null
+++ b/lib/models/presence_t.mli
@@ -0,0 +1,19 @@
+(* Auto-generated from "presence.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type user = User_t.t
+
+type snowflake = Snowflake_t.t
+
+type partial_user = User_t.partial_user
+
+type activity = Activity_t.t
+
+type t = {
+ user: partial_user;
+ roles: snowflake list;
+ game: activity option;
+ guild_id: snowflake;
+ status: string;
+ activities: activity list
+}
diff --git a/lib/models/reaction.atd b/lib/models/reaction.atd
new file mode 100644
index 0000000..aa41483
--- /dev/null
+++ b/lib/models/reaction.atd
@@ -0,0 +1,6 @@
+type emoji <ocaml from="Emoji" t="t"> = abstract
+
+type t = {
+ count: int;
+ emoji: emoji;
+} \ No newline at end of file
diff --git a/lib/models/reaction.ml b/lib/models/reaction.ml
deleted file mode 100644
index 00bebe6..0000000
--- a/lib/models/reaction.ml
+++ /dev/null
@@ -1,4 +0,0 @@
-type t = {
- count: int;
- emoji: Emoji.t;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/reaction_j.ml b/lib/models/reaction_j.ml
new file mode 100644
index 0000000..fe91833
--- /dev/null
+++ b/lib/models/reaction_j.ml
@@ -0,0 +1,180 @@
+(* Auto-generated from "reaction.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type emoji = Emoji_t.t
+
+type t = Reaction_t.t = { count: int; emoji: emoji }
+
+let write_emoji = (
+ Emoji_j.write_t
+)
+let string_of_emoji ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_emoji ob x;
+ Bi_outbuf.contents ob
+let read_emoji = (
+ Emoji_j.read_t
+)
+let emoji_of_string s =
+ read_emoji (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"count\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.count;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"emoji\":";
+ (
+ write_emoji
+ )
+ ob x.emoji;
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_count = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_emoji = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ if len = 5 then (
+ match String.unsafe_get s pos with
+ | 'c' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'u' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 't' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 'e' -> (
+ if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'j' && String.unsafe_get s (pos+4) = 'i' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ else (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_count := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_emoji := (
+ (
+ read_emoji
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ if len = 5 then (
+ match String.unsafe_get s pos with
+ | 'c' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'u' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 't' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 'e' -> (
+ if String.unsafe_get s (pos+1) = 'm' && String.unsafe_get s (pos+2) = 'o' && String.unsafe_get s (pos+3) = 'j' && String.unsafe_get s (pos+4) = 'i' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ else (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_count := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_emoji := (
+ (
+ read_emoji
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x3 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "count"; "emoji" |];
+ (
+ {
+ count = !field_count;
+ emoji = !field_emoji;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/reaction_j.mli b/lib/models/reaction_j.mli
new file mode 100644
index 0000000..0d6a598
--- /dev/null
+++ b/lib/models/reaction_j.mli
@@ -0,0 +1,47 @@
+(* Auto-generated from "reaction.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type emoji = Emoji_t.t
+
+type t = Reaction_t.t = { count: int; emoji: emoji }
+
+val write_emoji :
+ Bi_outbuf.t -> emoji -> unit
+ (** Output a JSON value of type {!emoji}. *)
+
+val string_of_emoji :
+ ?len:int -> emoji -> string
+ (** Serialize a value of type {!emoji}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_emoji :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> emoji
+ (** Input JSON data of type {!emoji}. *)
+
+val emoji_of_string :
+ string -> emoji
+ (** Deserialize JSON data of type {!emoji}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/reaction_t.ml b/lib/models/reaction_t.ml
new file mode 100644
index 0000000..666030b
--- /dev/null
+++ b/lib/models/reaction_t.ml
@@ -0,0 +1,6 @@
+(* Auto-generated from "reaction.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type emoji = Emoji_t.t
+
+type t = { count: int; emoji: emoji }
diff --git a/lib/models/reaction_t.mli b/lib/models/reaction_t.mli
new file mode 100644
index 0000000..666030b
--- /dev/null
+++ b/lib/models/reaction_t.mli
@@ -0,0 +1,6 @@
+(* Auto-generated from "reaction.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type emoji = Emoji_t.t
+
+type t = { count: int; emoji: emoji }
diff --git a/lib/models/role.ml b/lib/models/role.atd
index 0577342..a6bdcba 100644
--- a/lib/models/role.ml
+++ b/lib/models/role.atd
@@ -1,10 +1,12 @@
+type snowflake <ocaml from="Snowflake" t="t"> = abstract
+
type t = {
- id: Snowflake.t;
+ id: snowflake;
name: string;
- colour: int;
+ colour <json name="color">: int;
hoist: bool;
position: int;
permissions: int;
managed: bool;
mentionable: bool;
-} [@@deriving yojson] \ No newline at end of file
+} \ No newline at end of file
diff --git a/lib/models/role_j.ml b/lib/models/role_j.ml
new file mode 100644
index 0000000..a15b6cf
--- /dev/null
+++ b/lib/models/role_j.ml
@@ -0,0 +1,449 @@
+(* Auto-generated from "role.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = Role_t.t = {
+ id: snowflake;
+ name: string;
+ colour: int;
+ hoist: bool;
+ position: int;
+ permissions: int;
+ managed: bool;
+ mentionable: bool
+}
+
+let write_snowflake = (
+ Snowflake_j.write_t
+)
+let string_of_snowflake ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_snowflake ob x;
+ Bi_outbuf.contents ob
+let read_snowflake = (
+ Snowflake_j.read_t
+)
+let snowflake_of_string s =
+ read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"id\":";
+ (
+ write_snowflake
+ )
+ ob x.id;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"name\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.name;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"color\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.colour;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"hoist\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.hoist;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"position\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.position;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"permissions\":";
+ (
+ Yojson.Safe.write_int
+ )
+ ob x.permissions;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"managed\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.managed;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"mentionable\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.mentionable;
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_colour = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_hoist = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_position = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_permissions = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_managed = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_mentionable = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ match String.unsafe_get s pos with
+ | 'c' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'o' && String.unsafe_get s (pos+4) = 'r' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 'h' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 's' && String.unsafe_get s (pos+4) = 't' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 7 -> (
+ if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'g' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'd' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 11 -> (
+ match String.unsafe_get s pos with
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 'b' && String.unsafe_get s (pos+9) = 'l' && String.unsafe_get s (pos+10) = 'e' then (
+ 7
+ )
+ else (
+ -1
+ )
+ )
+ | 'p' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 's' && String.unsafe_get s (pos+6) = 's' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = 's' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_name := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ field_colour := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 3 ->
+ field_hoist := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 4 ->
+ field_position := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | 5 ->
+ field_permissions := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x20;
+ | 6 ->
+ field_managed := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x40;
+ | 7 ->
+ field_mentionable := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x80;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 4 -> (
+ if String.unsafe_get s pos = 'n' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 5 -> (
+ match String.unsafe_get s pos with
+ | 'c' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'o' && String.unsafe_get s (pos+4) = 'r' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | 'h' -> (
+ if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 's' && String.unsafe_get s (pos+4) = 't' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | 7 -> (
+ if String.unsafe_get s pos = 'm' && String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 'a' && String.unsafe_get s (pos+4) = 'g' && String.unsafe_get s (pos+5) = 'e' && String.unsafe_get s (pos+6) = 'd' then (
+ 6
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'p' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 't' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'o' && String.unsafe_get s (pos+7) = 'n' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 11 -> (
+ match String.unsafe_get s pos with
+ | 'm' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'n' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 'o' && String.unsafe_get s (pos+6) = 'n' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 'b' && String.unsafe_get s (pos+9) = 'l' && String.unsafe_get s (pos+10) = 'e' then (
+ 7
+ )
+ else (
+ -1
+ )
+ )
+ | 'p' -> (
+ if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'r' && String.unsafe_get s (pos+3) = 'm' && String.unsafe_get s (pos+4) = 'i' && String.unsafe_get s (pos+5) = 's' && String.unsafe_get s (pos+6) = 's' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'o' && String.unsafe_get s (pos+9) = 'n' && String.unsafe_get s (pos+10) = 's' then (
+ 5
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_name := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ field_colour := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 3 ->
+ field_hoist := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x8;
+ | 4 ->
+ field_position := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x10;
+ | 5 ->
+ field_permissions := (
+ (
+ Atdgen_runtime.Oj_run.read_int
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x20;
+ | 6 ->
+ field_managed := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x40;
+ | 7 ->
+ field_mentionable := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x80;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0xff then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "name"; "colour"; "hoist"; "position"; "permissions"; "managed"; "mentionable" |];
+ (
+ {
+ id = !field_id;
+ name = !field_name;
+ colour = !field_colour;
+ hoist = !field_hoist;
+ position = !field_position;
+ permissions = !field_permissions;
+ managed = !field_managed;
+ mentionable = !field_mentionable;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/role_j.mli b/lib/models/role_j.mli
new file mode 100644
index 0000000..b4ea78c
--- /dev/null
+++ b/lib/models/role_j.mli
@@ -0,0 +1,56 @@
+(* Auto-generated from "role.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = Role_t.t = {
+ id: snowflake;
+ name: string;
+ colour: int;
+ hoist: bool;
+ position: int;
+ permissions: int;
+ managed: bool;
+ mentionable: bool
+}
+
+val write_snowflake :
+ Bi_outbuf.t -> snowflake -> unit
+ (** Output a JSON value of type {!snowflake}. *)
+
+val string_of_snowflake :
+ ?len:int -> snowflake -> string
+ (** Serialize a value of type {!snowflake}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_snowflake :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake
+ (** Input JSON data of type {!snowflake}. *)
+
+val snowflake_of_string :
+ string -> snowflake
+ (** Deserialize JSON data of type {!snowflake}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/role_t.ml b/lib/models/role_t.ml
new file mode 100644
index 0000000..a4e83c5
--- /dev/null
+++ b/lib/models/role_t.ml
@@ -0,0 +1,15 @@
+(* Auto-generated from "role.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ id: snowflake;
+ name: string;
+ colour: int;
+ hoist: bool;
+ position: int;
+ permissions: int;
+ managed: bool;
+ mentionable: bool
+}
diff --git a/lib/models/role_t.mli b/lib/models/role_t.mli
new file mode 100644
index 0000000..a4e83c5
--- /dev/null
+++ b/lib/models/role_t.mli
@@ -0,0 +1,15 @@
+(* Auto-generated from "role.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ id: snowflake;
+ name: string;
+ colour: int;
+ hoist: bool;
+ position: int;
+ permissions: int;
+ managed: bool;
+ mentionable: bool
+}
diff --git a/lib/models/snowflake.atd b/lib/models/snowflake.atd
new file mode 100644
index 0000000..98dc032
--- /dev/null
+++ b/lib/models/snowflake.atd
@@ -0,0 +1 @@
+type t = int \ No newline at end of file
diff --git a/lib/models/snowflake.ml b/lib/models/snowflake.ml
deleted file mode 100644
index ab723a7..0000000
--- a/lib/models/snowflake.ml
+++ /dev/null
@@ -1,16 +0,0 @@
-type t = {
- id: int;
- as_string: string;
-} [@@deriving yojson]
-
-let to_int t = t.id
-let to_string t = t.as_string
-
-let from_int i = {
- id = i;
- as_string = string_of_int i;
-}
-let from_string s = {
- id = int_of_string s;
- as_string = s;
-} \ No newline at end of file
diff --git a/lib/models/snowflake_j.ml b/lib/models/snowflake_j.ml
new file mode 100644
index 0000000..80f6f63
--- /dev/null
+++ b/lib/models/snowflake_j.ml
@@ -0,0 +1,17 @@
+(* Auto-generated from "snowflake.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type t = Snowflake_t.t
+
+let write_t = (
+ Yojson.Safe.write_int
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ Atdgen_runtime.Oj_run.read_int
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/snowflake_j.mli b/lib/models/snowflake_j.mli
new file mode 100644
index 0000000..fed97a4
--- /dev/null
+++ b/lib/models/snowflake_j.mli
@@ -0,0 +1,25 @@
+(* Auto-generated from "snowflake.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type t = Snowflake_t.t
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
diff --git a/lib/models/snowflake_t.ml b/lib/models/snowflake_t.ml
new file mode 100644
index 0000000..a7bdb08
--- /dev/null
+++ b/lib/models/snowflake_t.ml
@@ -0,0 +1,4 @@
+(* Auto-generated from "snowflake.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type t = int
diff --git a/lib/models/snowflake_t.mli b/lib/models/snowflake_t.mli
new file mode 100644
index 0000000..a7bdb08
--- /dev/null
+++ b/lib/models/snowflake_t.mli
@@ -0,0 +1,4 @@
+(* Auto-generated from "snowflake.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type t = int
diff --git a/lib/models/user.atd b/lib/models/user.atd
new file mode 100644
index 0000000..106b3b0
--- /dev/null
+++ b/lib/models/user.atd
@@ -0,0 +1,13 @@
+type snowflake <ocaml from="Snowflake" t="t"> = abstract
+
+type t = {
+ id: snowflake;
+ username: string;
+ discriminator: string;
+ ?avatar: string option;
+ ~bot <ocaml default="false">: bool;
+}
+
+type partial_user = {
+ id: snowflake;
+} \ No newline at end of file
diff --git a/lib/models/user.ml b/lib/models/user.ml
deleted file mode 100644
index e6c5c69..0000000
--- a/lib/models/user.ml
+++ /dev/null
@@ -1,7 +0,0 @@
-type t = {
- id: Snowflake.t;
- username: string;
- discriminator: string;
- avatar: string;
- bot: bool;
-} [@@deriving yojson] \ No newline at end of file
diff --git a/lib/models/user_j.ml b/lib/models/user_j.ml
new file mode 100644
index 0000000..552a20d
--- /dev/null
+++ b/lib/models/user_j.ml
@@ -0,0 +1,468 @@
+(* Auto-generated from "user.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = User_t.t = {
+ id: snowflake;
+ username: string;
+ discriminator: string;
+ avatar: string option;
+ bot: bool
+}
+
+type partial_user = User_t.partial_user = { id: snowflake }
+
+let write_snowflake = (
+ Snowflake_j.write_t
+)
+let string_of_snowflake ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_snowflake ob x;
+ Bi_outbuf.contents ob
+let read_snowflake = (
+ Snowflake_j.read_t
+)
+let snowflake_of_string s =
+ read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__1 = (
+ Atdgen_runtime.Oj_run.write_option (
+ Yojson.Safe.write_string
+ )
+)
+let string_of__1 ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write__1 ob x;
+ Bi_outbuf.contents ob
+let read__1 = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ match Yojson.Safe.start_any_variant p lb with
+ | `Edgy_bracket -> (
+ match Yojson.Safe.read_ident p lb with
+ | "None" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (None : _ option)
+ | "Some" ->
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_gt p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Double_quote -> (
+ match Yojson.Safe.finish_string p lb with
+ | "None" ->
+ (None : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+ | `Square_bracket -> (
+ match Atdgen_runtime.Oj_run.read_string p lb with
+ | "Some" ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_comma p lb;
+ Yojson.Safe.read_space p lb;
+ let x = (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ in
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_rbr p lb;
+ (Some x : _ option)
+ | x ->
+ Atdgen_runtime.Oj_run.invalid_variant_tag p x
+ )
+)
+let _1_of_string s =
+ read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_t : _ -> t -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"id\":";
+ (
+ write_snowflake
+ )
+ ob x.id;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"username\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.username;
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"discriminator\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x.discriminator;
+ (match x.avatar with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"avatar\":";
+ (
+ Yojson.Safe.write_string
+ )
+ ob x;
+ );
+ if x.bot <> false then (
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"bot\":";
+ (
+ Yojson.Safe.write_bool
+ )
+ ob x.bot;
+ );
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_t ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_t ob x;
+ Bi_outbuf.contents ob
+let read_t = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_username = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_discriminator = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let field_avatar = ref (None) in
+ let field_bot = ref (false) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 3 -> (
+ if String.unsafe_get s pos = 'b' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 't' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'v' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 'r' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'a' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 13 -> (
+ if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 't' && String.unsafe_get s (pos+11) = 'o' && String.unsafe_get s (pos+12) = 'r' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_username := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ field_discriminator := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_avatar := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_bot := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ match len with
+ | 2 -> (
+ if String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ )
+ | 3 -> (
+ if String.unsafe_get s pos = 'b' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 't' then (
+ 4
+ )
+ else (
+ -1
+ )
+ )
+ | 6 -> (
+ if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'v' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'a' && String.unsafe_get s (pos+5) = 'r' then (
+ 3
+ )
+ else (
+ -1
+ )
+ )
+ | 8 -> (
+ if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' && String.unsafe_get s (pos+4) = 'n' && String.unsafe_get s (pos+5) = 'a' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'e' then (
+ 1
+ )
+ else (
+ -1
+ )
+ )
+ | 13 -> (
+ if String.unsafe_get s pos = 'd' && String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 's' && String.unsafe_get s (pos+3) = 'c' && String.unsafe_get s (pos+4) = 'r' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 'm' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'n' && String.unsafe_get s (pos+9) = 'a' && String.unsafe_get s (pos+10) = 't' && String.unsafe_get s (pos+11) = 'o' && String.unsafe_get s (pos+12) = 'r' then (
+ 2
+ )
+ else (
+ -1
+ )
+ )
+ | _ -> (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | 1 ->
+ field_username := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x2;
+ | 2 ->
+ field_discriminator := (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x4;
+ | 3 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_avatar := (
+ Some (
+ (
+ Atdgen_runtime.Oj_run.read_string
+ ) p lb
+ )
+ );
+ )
+ | 4 ->
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_bot := (
+ (
+ Atdgen_runtime.Oj_run.read_bool
+ ) p lb
+ );
+ )
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x7 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "username"; "discriminator" |];
+ (
+ {
+ id = !field_id;
+ username = !field_username;
+ discriminator = !field_discriminator;
+ avatar = !field_avatar;
+ bot = !field_bot;
+ }
+ : t)
+ )
+)
+let t_of_string s =
+ read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_partial_user : _ -> partial_user -> _ = (
+ fun ob x ->
+ Bi_outbuf.add_char ob '{';
+ let is_first = ref true in
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"id\":";
+ (
+ write_snowflake
+ )
+ ob x.id;
+ Bi_outbuf.add_char ob '}';
+)
+let string_of_partial_user ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_partial_user ob x;
+ Bi_outbuf.contents ob
+let read_partial_user = (
+ fun p lb ->
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_lcurl p lb;
+ let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in
+ let bits0 = ref 0 in
+ try
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_end lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ if len = 2 && String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ while true do
+ Yojson.Safe.read_space p lb;
+ Yojson.Safe.read_object_sep p lb;
+ Yojson.Safe.read_space p lb;
+ let f =
+ fun s pos len ->
+ if pos < 0 || len < 0 || pos + len > String.length s then
+ invalid_arg "out-of-bounds substring position or length";
+ if len = 2 && String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then (
+ 0
+ )
+ else (
+ -1
+ )
+ in
+ let i = Yojson.Safe.map_ident p f lb in
+ Atdgen_runtime.Oj_run.read_until_field_value p lb;
+ (
+ match i with
+ | 0 ->
+ field_id := (
+ (
+ read_snowflake
+ ) p lb
+ );
+ bits0 := !bits0 lor 0x1;
+ | _ -> (
+ Yojson.Safe.skip_json p lb
+ )
+ );
+ done;
+ assert false;
+ with Yojson.End_of_object -> (
+ if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id" |];
+ (
+ {
+ id = !field_id;
+ }
+ : partial_user)
+ )
+)
+let partial_user_of_string s =
+ read_partial_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
diff --git a/lib/models/user_j.mli b/lib/models/user_j.mli
new file mode 100644
index 0000000..576768e
--- /dev/null
+++ b/lib/models/user_j.mli
@@ -0,0 +1,75 @@
+(* Auto-generated from "user.atd" *)
+[@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = User_t.t = {
+ id: snowflake;
+ username: string;
+ discriminator: string;
+ avatar: string option;
+ bot: bool
+}
+
+type partial_user = User_t.partial_user = { id: snowflake }
+
+val write_snowflake :
+ Bi_outbuf.t -> snowflake -> unit
+ (** Output a JSON value of type {!snowflake}. *)
+
+val string_of_snowflake :
+ ?len:int -> snowflake -> string
+ (** Serialize a value of type {!snowflake}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_snowflake :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake
+ (** Input JSON data of type {!snowflake}. *)
+
+val snowflake_of_string :
+ string -> snowflake
+ (** Deserialize JSON data of type {!snowflake}. *)
+
+val write_t :
+ Bi_outbuf.t -> t -> unit
+ (** Output a JSON value of type {!t}. *)
+
+val string_of_t :
+ ?len:int -> t -> string
+ (** Serialize a value of type {!t}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_t :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
+ (** Input JSON data of type {!t}. *)
+
+val t_of_string :
+ string -> t
+ (** Deserialize JSON data of type {!t}. *)
+
+val write_partial_user :
+ Bi_outbuf.t -> partial_user -> unit
+ (** Output a JSON value of type {!partial_user}. *)
+
+val string_of_partial_user :
+ ?len:int -> partial_user -> string
+ (** Serialize a value of type {!partial_user}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_partial_user :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_user
+ (** Input JSON data of type {!partial_user}. *)
+
+val partial_user_of_string :
+ string -> partial_user
+ (** Deserialize JSON data of type {!partial_user}. *)
+
diff --git a/lib/models/user_t.ml b/lib/models/user_t.ml
new file mode 100644
index 0000000..294cf0a
--- /dev/null
+++ b/lib/models/user_t.ml
@@ -0,0 +1,14 @@
+(* Auto-generated from "user.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ id: snowflake;
+ username: string;
+ discriminator: string;
+ avatar: string option;
+ bot: bool
+}
+
+type partial_user = { id: snowflake }
diff --git a/lib/models/user_t.mli b/lib/models/user_t.mli
new file mode 100644
index 0000000..294cf0a
--- /dev/null
+++ b/lib/models/user_t.mli
@@ -0,0 +1,14 @@
+(* Auto-generated from "user.atd" *)
+ [@@@ocaml.warning "-27-32-35-39"]
+
+type snowflake = Snowflake_t.t
+
+type t = {
+ id: snowflake;
+ username: string;
+ discriminator: string;
+ avatar: string option;
+ bot: bool
+}
+
+type partial_user = { id: snowflake }