aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2018-12-14 10:52:36 -0700
committerAdelyn Breelove <[email protected]>2018-12-14 10:52:36 -0700
commitaf684566617ebce536e9f30693aa3e225af906c4 (patch)
tree0184187b0b90e402f74402ffd6975d54fd1b5bb9 /lib
parentFix more dispatch issues (diff)
downloaddisml-af684566617ebce536e9f30693aa3e225af906c4.tar.xz
disml-af684566617ebce536e9f30693aa3e225af906c4.zip
There's a lot going on
Diffstat (limited to 'lib')
-rw-r--r--lib/client.ml6
-rw-r--r--lib/dispatch.ml85
-rw-r--r--lib/dispatch.mli1
-rw-r--r--lib/event.ml185
-rw-r--r--lib/models.ml16
-rw-r--r--lib/models/activity.ml2
-rw-r--r--lib/models/attachment.ml2
-rw-r--r--lib/models/ban.ml2
-rw-r--r--lib/models/channel.ml2
-rw-r--r--lib/models/embed.ml2
-rw-r--r--lib/models/emoji.ml2
-rw-r--r--lib/models/gen/activity.atd (renamed from lib/models/activity.atd)0
-rw-r--r--lib/models/gen/activity_j.ml (renamed from lib/models/activity_j.ml)0
-rw-r--r--lib/models/gen/activity_j.mli (renamed from lib/models/activity_j.mli)0
-rw-r--r--lib/models/gen/activity_t.ml (renamed from lib/models/activity_t.ml)0
-rw-r--r--lib/models/gen/activity_t.mli (renamed from lib/models/activity_t.mli)0
-rw-r--r--lib/models/gen/attachment.atd (renamed from lib/models/attachment.atd)0
-rw-r--r--lib/models/gen/attachment_j.ml (renamed from lib/models/attachment_j.ml)0
-rw-r--r--lib/models/gen/attachment_j.mli (renamed from lib/models/attachment_j.mli)0
-rw-r--r--lib/models/gen/attachment_t.ml (renamed from lib/models/attachment_t.ml)0
-rw-r--r--lib/models/gen/attachment_t.mli (renamed from lib/models/attachment_t.mli)0
-rw-r--r--lib/models/gen/ban.atd (renamed from lib/models/ban.atd)0
-rw-r--r--lib/models/gen/ban_j.ml (renamed from lib/models/ban_j.ml)0
-rw-r--r--lib/models/gen/ban_j.mli (renamed from lib/models/ban_j.mli)0
-rw-r--r--lib/models/gen/ban_t.ml (renamed from lib/models/ban_t.ml)0
-rw-r--r--lib/models/gen/ban_t.mli (renamed from lib/models/ban_t.mli)0
-rw-r--r--lib/models/gen/channel.atd (renamed from lib/models/channel.atd)0
-rw-r--r--lib/models/gen/channel_j.ml (renamed from lib/models/channel_j.ml)0
-rw-r--r--lib/models/gen/channel_j.mli (renamed from lib/models/channel_j.mli)0
-rw-r--r--lib/models/gen/channel_t.ml (renamed from lib/models/channel_t.ml)0
-rw-r--r--lib/models/gen/channel_t.mli (renamed from lib/models/channel_t.mli)0
-rw-r--r--lib/models/gen/embed.atd (renamed from lib/models/embed.atd)0
-rw-r--r--lib/models/gen/embed_j.ml (renamed from lib/models/embed_j.ml)0
-rw-r--r--lib/models/gen/embed_j.mli (renamed from lib/models/embed_j.mli)0
-rw-r--r--lib/models/gen/embed_t.ml (renamed from lib/models/embed_t.ml)0
-rw-r--r--lib/models/gen/embed_t.mli (renamed from lib/models/embed_t.mli)0
-rw-r--r--lib/models/gen/emoji.atd (renamed from lib/models/emoji.atd)0
-rw-r--r--lib/models/gen/emoji_j.ml (renamed from lib/models/emoji_j.ml)0
-rw-r--r--lib/models/gen/emoji_j.mli (renamed from lib/models/emoji_j.mli)0
-rw-r--r--lib/models/gen/emoji_t.ml (renamed from lib/models/emoji_t.ml)0
-rw-r--r--lib/models/gen/emoji_t.mli (renamed from lib/models/emoji_t.mli)0
-rw-r--r--lib/models/gen/guild.atd (renamed from lib/models/guild.atd)0
-rw-r--r--lib/models/gen/guild_j.ml (renamed from lib/models/guild_j.ml)0
-rw-r--r--lib/models/gen/guild_j.mli (renamed from lib/models/guild_j.mli)0
-rw-r--r--lib/models/gen/guild_t.ml (renamed from lib/models/guild_t.ml)0
-rw-r--r--lib/models/gen/guild_t.mli (renamed from lib/models/guild_t.mli)0
-rw-r--r--lib/models/gen/member.atd (renamed from lib/models/member.atd)0
-rw-r--r--lib/models/gen/member_j.ml (renamed from lib/models/member_j.ml)0
-rw-r--r--lib/models/gen/member_j.mli (renamed from lib/models/member_j.mli)0
-rw-r--r--lib/models/gen/member_t.ml (renamed from lib/models/member_t.ml)0
-rw-r--r--lib/models/gen/member_t.mli (renamed from lib/models/member_t.mli)0
-rw-r--r--lib/models/gen/message.atd (renamed from lib/models/message.atd)9
-rw-r--r--lib/models/gen/message_j.ml (renamed from lib/models/message_j.ml)317
-rw-r--r--lib/models/gen/message_j.mli (renamed from lib/models/message_j.mli)74
-rw-r--r--lib/models/gen/message_t.ml (renamed from lib/models/message_t.ml)14
-rw-r--r--lib/models/gen/message_t.mli (renamed from lib/models/message_t.mli)14
-rw-r--r--lib/models/gen/presence.atd (renamed from lib/models/presence.atd)0
-rw-r--r--lib/models/gen/presence_j.ml (renamed from lib/models/presence_j.ml)0
-rw-r--r--lib/models/gen/presence_j.mli (renamed from lib/models/presence_j.mli)0
-rw-r--r--lib/models/gen/presence_t.ml (renamed from lib/models/presence_t.ml)0
-rw-r--r--lib/models/gen/presence_t.mli (renamed from lib/models/presence_t.mli)0
-rw-r--r--lib/models/gen/reaction.atd (renamed from lib/models/reaction.atd)0
-rw-r--r--lib/models/gen/reaction_j.ml (renamed from lib/models/reaction_j.ml)0
-rw-r--r--lib/models/gen/reaction_j.mli (renamed from lib/models/reaction_j.mli)0
-rw-r--r--lib/models/gen/reaction_t.ml (renamed from lib/models/reaction_t.ml)0
-rw-r--r--lib/models/gen/reaction_t.mli (renamed from lib/models/reaction_t.mli)0
-rw-r--r--lib/models/gen/role.atd (renamed from lib/models/role.atd)0
-rw-r--r--lib/models/gen/role_j.ml (renamed from lib/models/role_j.ml)0
-rw-r--r--lib/models/gen/role_j.mli (renamed from lib/models/role_j.mli)0
-rw-r--r--lib/models/gen/role_t.ml (renamed from lib/models/role_t.ml)0
-rw-r--r--lib/models/gen/role_t.mli (renamed from lib/models/role_t.mli)0
-rw-r--r--lib/models/gen/snowflake.atd (renamed from lib/models/snowflake.atd)0
-rw-r--r--lib/models/gen/snowflake_j.ml (renamed from lib/models/snowflake_j.ml)0
-rw-r--r--lib/models/gen/snowflake_j.mli (renamed from lib/models/snowflake_j.mli)0
-rw-r--r--lib/models/gen/snowflake_t.ml (renamed from lib/models/snowflake_t.ml)0
-rw-r--r--lib/models/gen/snowflake_t.mli (renamed from lib/models/snowflake_t.mli)0
-rw-r--r--lib/models/gen/user.atd (renamed from lib/models/user.atd)0
-rw-r--r--lib/models/gen/user_j.ml (renamed from lib/models/user_j.ml)0
-rw-r--r--lib/models/gen/user_j.mli (renamed from lib/models/user_j.mli)0
-rw-r--r--lib/models/gen/user_t.ml (renamed from lib/models/user_t.ml)0
-rw-r--r--lib/models/gen/user_t.mli (renamed from lib/models/user_t.mli)0
-rw-r--r--lib/models/guild.ml2
-rw-r--r--lib/models/member.ml2
-rw-r--r--lib/models/message.ml2
-rw-r--r--lib/models/presence.ml2
-rw-r--r--lib/models/reaction.ml2
-rw-r--r--lib/models/role.ml2
-rw-r--r--lib/models/snowflake.ml2
-rw-r--r--lib/models/user.ml2
-rw-r--r--lib/s.ml52
-rw-r--r--lib/sharder.ml1
91 files changed, 354 insertions, 448 deletions
diff --git a/lib/client.ml b/lib/client.ml
index 9211281..229c9cc 100644
--- a/lib/client.ml
+++ b/lib/client.ml
@@ -1,10 +1,12 @@
open Async
-module Make(T : S.Token)(H : S.Handler) = struct
+module Make(T : S.Token)(H : S.Handler_f) = struct
include T
module Http = Http.Make(T)
- module Dispatch = Dispatch.Make(H)
+ module Models = Models.Make(Http)
+ module Handler = H.Make(Models)
+ module Dispatch = Dispatch.Make(Handler)
module Sharder = Sharder.Make(Http)(Dispatch)
type t = {
diff --git a/lib/dispatch.ml b/lib/dispatch.ml
index a4341e1..c38afe2 100644
--- a/lib/dispatch.ml
+++ b/lib/dispatch.ml
@@ -1,85 +1,6 @@
-open Core
-
module Make(H : S.Handler) : S.Dispatch = struct
- type dispatch_event =
- | HELLO of Yojson.Safe.json
- | READY of Yojson.Safe.json
- | RESUMED of Yojson.Safe.json
- | INVALID_SESSION of Yojson.Safe.json
- | CHANNEL_CREATE of Channel_t.t
- | CHANNEL_UPDATE of Channel_t.t
- | CHANNEL_DELETE of Channel_t.t
- | CHANNEL_PINS_UPDATE of Yojson.Safe.json
- | GUILD_CREATE of Guild_t.t
- | GUILD_UPDATE of Guild_t.t
- | GUILD_DELETE of Guild_t.t
- | GUILD_BAN_ADD of Ban_t.t
- | GUILD_BAN_REMOVE of Ban_t.t
- | GUILD_EMOJIS_UPDATE of Yojson.Safe.json
- | GUILD_INTEGRATIONS_UPDATE of Yojson.Safe.json
- | GUILD_MEMBER_ADD of Member_t.t
- | GUILD_MEMBER_REMOVE of Member_t.t
- | GUILD_MEMBER_UPDATE of Member_t.t
- | GUILD_MEMBERS_CHUNK of Member_t.t list
- | GUILD_ROLE_CREATE of Role_t.t (* * Guild.t *)
- | GUILD_ROLE_UPDATE of Role_t.t (* * Guild.t *)
- | GUILD_ROLE_DELETE of Role_t.t (* * Guild.t *)
- | MESSAGE_CREATE of Message_t.t
- | MESSAGE_UPDATE of Message_t.t
- | MESSAGE_DELETE of Message_t.t
- | MESSAGE_BULK_DELETE of Message_t.t list
- | MESSAGE_REACTION_ADD of (* Message.t * *) Reaction_t.t
- | MESSAGE_REACTION_REMOVE of (* Message.t * *) Reaction_t.t
- | MESSAGE_REACTION_REMOVE_ALL of (* Message.t * *) Reaction_t.t list
- | PRESENCE_UPDATE of Presence_t.t
- | TYPING_START of Yojson.Safe.json
- | USER_UPDATE of Yojson.Safe.json
- | VOICE_STATE_UPDATE of Yojson.Safe.json
- | VOICE_SERVER_UPDATE of Yojson.Safe.json
- | WEBHOOKS_UPDATE of Yojson.Safe.json
-
- exception Invalid_event of string
-
- let event_of_string ~contents t = match t with
- | "HELLO" -> HELLO (Yojson.Safe.from_string contents)
- | "READY" -> READY (Yojson.Safe.from_string contents)
- | "RESUMED" -> RESUMED (Yojson.Safe.from_string contents)
- | "INVALID_SESSION" -> INVALID_SESSION (Yojson.Safe.from_string contents)
- | "CHANNEL_CREATE" -> CHANNEL_CREATE (Channel_j.t_of_string contents)
- | "CHANNEL_UPDATE" -> CHANNEL_UPDATE (Channel_j.t_of_string contents)
- | "CHANNEL_DELETE" -> CHANNEL_DELETE (Channel_j.t_of_string contents)
- | "CHANNEL_PINS_UPDATE" -> CHANNEL_PINS_UPDATE (Yojson.Safe.from_string contents)
- | "GUILD_CREATE" -> GUILD_CREATE (Guild_j.t_of_string contents)
- | "GUILD_UPDATE" -> GUILD_UPDATE (Guild_j.t_of_string contents)
- | "GUILD_DELETE" -> GUILD_DELETE (Guild_j.t_of_string contents)
- | "GUILD_BAN_ADD" -> GUILD_BAN_ADD (Ban_j.t_of_string contents)
- | "GUILD_BAN_REMOVE" -> GUILD_BAN_REMOVE (Ban_j.t_of_string contents)
- | "GUILD_EMOJIS_UPDATE" -> GUILD_EMOJIS_UPDATE (Yojson.Safe.from_string contents)
- | "GUILD_INTEGRATIONS_UPDATE" -> GUILD_INTEGRATIONS_UPDATE (Yojson.Safe.from_string contents)
- | "GUILD_MEMBER_ADD" -> GUILD_MEMBER_ADD (Member_j.t_of_string contents)
- | "GUILD_MEMBER_REMOVE" -> GUILD_MEMBER_REMOVE (Member_j.t_of_string contents)
- | "GUILD_MEMBER_UPDATE" -> GUILD_MEMBER_UPDATE (Member_j.t_of_string contents)
- | "GUILD_MEMBERS_CHUNK" -> GUILD_MEMBERS_CHUNK (Yojson.Safe.(from_string contents |> Util.to_list) |> List.map ~f:(fun m -> Yojson.Safe.to_string m |> Member_j.t_of_string))
- | "GUILD_ROLE_CREATE" -> GUILD_ROLE_CREATE (Role_j.t_of_string contents)
- | "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE (Role_j.t_of_string contents)
- | "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE (Role_j.t_of_string contents)
- | "MESSAGE_CREATE" -> MESSAGE_CREATE (Message_j.t_of_string contents)
- | "MESSAGE_UPDATE" -> MESSAGE_UPDATE (Message_j.t_of_string contents)
- | "MESSAGE_DELETE" -> MESSAGE_DELETE (Message_j.t_of_string contents)
- | "MESSAGE_BULK_DELETE" -> MESSAGE_BULK_DELETE (Yojson.Safe.(from_string contents |> Util.to_list) |> List.map ~f:(fun m -> Yojson.Safe.to_string m |> Message_j.t_of_string))
- | "MESSAGE_REACTION_ADD" -> MESSAGE_REACTION_ADD (Reaction_j.t_of_string contents)
- | "MESSAGE_REACTION_REMOVE" -> MESSAGE_REACTION_REMOVE (Reaction_j.t_of_string contents)
- | "MESSAGE_REACTION_REMOVE_ALL" -> MESSAGE_REACTION_REMOVE_ALL (Yojson.Safe.(from_string contents |> Util.to_list) |> List.map ~f:(fun m -> Yojson.Safe.to_string m |> Reaction_j.t_of_string))
- | "PRESENCE_UPDATE" -> PRESENCE_UPDATE (Presence_j.t_of_string contents)
- | "TYPING_START" -> TYPING_START (Yojson.Safe.from_string contents)
- | "USER_UPDATE" -> USER_UPDATE (Yojson.Safe.from_string contents)
- | "VOICE_STATE_UPDATE" -> VOICE_STATE_UPDATE (Yojson.Safe.from_string contents)
- | "VOICE_SERVER_UPDATE" -> VOICE_SERVER_UPDATE (Yojson.Safe.from_string contents)
- | "WEBHOOKS_UPDATE" -> WEBHOOKS_UPDATE (Yojson.Safe.from_string contents)
- | s -> raise (Invalid_event s)
-
let dispatch ~ev contents =
- let ctx = () in
- event_of_string ~contents ev
- |> H.handle_event ctx
+ print_endline (Yojson.Safe.prettify contents);
+ Event.event_of_string ~contents ev
+ |> H.handle_event
end \ No newline at end of file
diff --git a/lib/dispatch.mli b/lib/dispatch.mli
new file mode 100644
index 0000000..100a34b
--- /dev/null
+++ b/lib/dispatch.mli
@@ -0,0 +1 @@
+module Make(H : S.Handler) : S.Dispatch \ No newline at end of file
diff --git a/lib/event.ml b/lib/event.ml
index 8b5b125..6e35c75 100644
--- a/lib/event.ml
+++ b/lib/event.ml
@@ -1,113 +1,78 @@
-type t =
-| HELLO
-| READY
-| RESUMED
-| INVALID_SESSION
-| CHANNEL_CREATE
-| CHANNEL_UPDATE
-| CHANNEL_DELETE
-| CHANNEL_PINS_UPDATE
-| GUILD_CREATE
-| GUILD_UPDATE
-| GUILD_DELETE
-| GUILD_BAN_ADD
-| GUILD_BAN_REMOVE
-| GUILD_EMOJIS_UPDATE
-| GUILD_INTEGRATIONS_UPDATE
-| GUILD_MEMBER_ADD
-| GUILD_MEMBER_REMOVE
-| GUILD_MEMBER_UPDATE
-| GUILD_MEMBERS_CHUNK
-| GUILD_ROLE_CREATE
-| GUILD_ROLE_UPDATE
-| GUILD_ROLE_DELETE
-| MESSAGE_CREATE
-| MESSAGE_UPDATE
-| MESSAGE_DELETE
-| MESSAGE_BULK_DELETE
-| MESSAGE_REACTION_ADD
-| MESSAGE_REACTION_REMOVE
-| MESSAGE_REACTION_REMOVE_ALL
-| PRESENCE_UPDATE
-| TYPING_START
-| USER_UPDATE
-| VOICE_STATE_UPDATE
-| VOICE_SERVER_UPDATE
-| WEBHOOKS_UPDATE
+open Core
-exception Invalid_Event of string
+type t =
+| HELLO of Yojson.Safe.json
+| READY of Yojson.Safe.json
+| RESUMED of Yojson.Safe.json
+| INVALID_SESSION of Yojson.Safe.json
+| CHANNEL_CREATE of Channel_t.t
+| CHANNEL_UPDATE of Channel_t.t
+| CHANNEL_DELETE of Channel_t.t
+| CHANNEL_PINS_UPDATE of Yojson.Safe.json
+| GUILD_CREATE of Guild_t.t
+| GUILD_UPDATE of Guild_t.t
+| GUILD_DELETE of Guild_t.t
+| GUILD_BAN_ADD of Ban_t.t
+| GUILD_BAN_REMOVE of Ban_t.t
+| GUILD_EMOJIS_UPDATE of Yojson.Safe.json
+| GUILD_INTEGRATIONS_UPDATE of Yojson.Safe.json
+| GUILD_MEMBER_ADD of Member_t.t
+| GUILD_MEMBER_REMOVE of Member_t.t
+| GUILD_MEMBER_UPDATE of Member_t.t
+| GUILD_MEMBERS_CHUNK of Member_t.t list
+| GUILD_ROLE_CREATE of Role_t.t (* * Guild.t *)
+| GUILD_ROLE_UPDATE of Role_t.t (* * Guild.t *)
+| GUILD_ROLE_DELETE of Role_t.t (* * Guild.t *)
+| MESSAGE_CREATE of Message_t.t
+| MESSAGE_UPDATE of Message_t.t
+| MESSAGE_DELETE of Message_t.t
+| MESSAGE_BULK_DELETE of Message_t.t list
+| MESSAGE_REACTION_ADD of (* Message.t * *) Reaction_t.t
+| MESSAGE_REACTION_REMOVE of (* Message.t * *) Reaction_t.t
+| MESSAGE_REACTION_REMOVE_ALL of (* Message.t * *) Reaction_t.t list
+| PRESENCE_UPDATE of Presence_t.t
+| TYPING_START of Yojson.Safe.json
+| USER_UPDATE of Yojson.Safe.json
+| VOICE_STATE_UPDATE of Yojson.Safe.json
+| VOICE_SERVER_UPDATE of Yojson.Safe.json
+| WEBHOOKS_UPDATE of Yojson.Safe.json
-let from_string = function
- | "HELLO" -> HELLO
- | "READY" -> READY
- | "RESUMED" -> RESUMED
- | "INVALID_SESSION" -> INVALID_SESSION
- | "CHANNEL_CREATE" -> CHANNEL_CREATE
- | "CHANNEL_UPDATE" -> CHANNEL_UPDATE
- | "CHANNEL_DELETE" -> CHANNEL_DELETE
- | "CHANNEL_PINS_UPDATE" -> CHANNEL_PINS_UPDATE
- | "GUILD_CREATE" -> GUILD_CREATE
- | "GUILD_UPDATE" -> GUILD_UPDATE
- | "GUILD_DELETE" -> GUILD_DELETE
- | "GUILD_BAN_ADD" -> GUILD_BAN_ADD
- | "GUILD_BAN_REMOVE" -> GUILD_BAN_REMOVE
- | "GUILD_EMOJIS_UPDATE" -> GUILD_EMOJIS_UPDATE
- | "GUILD_INTEGRATIONS_UPDATE" -> GUILD_INTEGRATIONS_UPDATE
- | "GUILD_MEMBER_ADD" -> GUILD_MEMBER_ADD
- | "GUILD_MEMBER_REMOVE" -> GUILD_MEMBER_REMOVE
- | "GUILD_MEMBER_UPDATE" -> GUILD_MEMBER_UPDATE
- | "GUILD_MEMBERS_CHUNK" -> GUILD_MEMBERS_CHUNK
- | "GUILD_ROLE_CREATE" -> GUILD_ROLE_CREATE
- | "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE
- | "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE
- | "MESSAGE_CREATE" -> MESSAGE_CREATE
- | "MESSAGE_UPDATE" -> MESSAGE_UPDATE
- | "MESSAGE_DELETE" -> MESSAGE_DELETE
- | "MESSAGE_BULK_DELETE" -> MESSAGE_BULK_DELETE
- | "MESSAGE_REACTION_ADD" -> MESSAGE_REACTION_ADD
- | "MESSAGE_REACTION_REMOVE" -> MESSAGE_REACTION_REMOVE
- | "MESSAGE_REACTION_REMOVE_ALL" -> MESSAGE_REACTION_REMOVE_ALL
- | "PRESENCE_UPDATE" -> PRESENCE_UPDATE
- | "TYPING_START" -> TYPING_START
- | "USER_UPDATE" -> USER_UPDATE
- | "VOICE_STATE_UPDATE" -> VOICE_STATE_UPDATE
- | "VOICE_SERVER_UPDATE" -> VOICE_SERVER_UPDATE
- | "WEBHOOKS_UPDATE" -> WEBHOOKS_UPDATE
- | ev -> raise (Invalid_Event ev)
+exception Invalid_event of string
-let to_string = function
- | HELLO -> "HELLO"
- | READY -> "READY"
- | RESUMED -> "RESUMED"
- | INVALID_SESSION -> "INVALID_SESSION"
- | CHANNEL_CREATE -> "CHANNEL_CREATE"
- | CHANNEL_UPDATE -> "CHANNEL_UPDATE"
- | CHANNEL_DELETE -> "CHANNEL_DELETE"
- | CHANNEL_PINS_UPDATE -> "CHANNEL_PINS_UPDATE"
- | GUILD_CREATE -> "GUILD_CREATE"
- | GUILD_UPDATE -> "GUILD_UPDATE"
- | GUILD_DELETE -> "GUILD_DELETE"
- | GUILD_BAN_ADD -> "GUILD_BAN_ADD"
- | GUILD_BAN_REMOVE -> "GUILD_BAN_REMOVE"
- | GUILD_EMOJIS_UPDATE -> "GUILD_EMOJIS_UPDATE"
- | GUILD_INTEGRATIONS_UPDATE -> "GUILD_INTEGRATIONS_UPDATE"
- | GUILD_MEMBER_ADD -> "GUILD_MEMBER_ADD"
- | GUILD_MEMBER_REMOVE -> "GUILD_MEMBER_REMOVE"
- | GUILD_MEMBER_UPDATE -> "GUILD_MEMBER_UPDATE"
- | GUILD_MEMBERS_CHUNK -> "GUILD_MEMBERS_CHUNK"
- | GUILD_ROLE_CREATE -> "GUILD_ROLE_CREATE"
- | GUILD_ROLE_UPDATE -> "GUILD_ROLE_UPDATE"
- | GUILD_ROLE_DELETE -> "GUILD_ROLE_DELETE"
- | MESSAGE_CREATE -> "MESSAGE_CREATE"
- | MESSAGE_UPDATE -> "MESSAGE_UPDATE"
- | MESSAGE_DELETE -> "MESSAGE_DELETE"
- | MESSAGE_BULK_DELETE -> "MESSAGE_BULK_DELETE"
- | MESSAGE_REACTION_ADD -> "MESSAGE_REACTION_ADD"
- | MESSAGE_REACTION_REMOVE -> "MESSAGE_REACTION_REMOVE"
- | MESSAGE_REACTION_REMOVE_ALL -> "MESSAGE_REACTION_REMOVE_ALL"
- | PRESENCE_UPDATE -> "PRESENCE_UPDATE"
- | TYPING_START -> "TYPING_START"
- | USER_UPDATE -> "USER_UPDATE"
- | VOICE_STATE_UPDATE -> "VOICE_STATE_UPDATE"
- | VOICE_SERVER_UPDATE -> "VOICE_SERVER_UPDATE"
- | WEBHOOKS_UPDATE -> "WEBHOOKS_UPDATE" \ No newline at end of file
+let event_of_string ~contents t = match t with
+ | "HELLO" -> HELLO (Yojson.Safe.from_string contents)
+ | "READY" -> READY (Yojson.Safe.from_string contents)
+ | "RESUMED" -> RESUMED (Yojson.Safe.from_string contents)
+ | "INVALID_SESSION" -> INVALID_SESSION (Yojson.Safe.from_string contents)
+ | "CHANNEL_CREATE" -> CHANNEL_CREATE (Channel_j.t_of_string contents)
+ | "CHANNEL_UPDATE" -> CHANNEL_UPDATE (Channel_j.t_of_string contents)
+ | "CHANNEL_DELETE" -> CHANNEL_DELETE (Channel_j.t_of_string contents)
+ | "CHANNEL_PINS_UPDATE" -> CHANNEL_PINS_UPDATE (Yojson.Safe.from_string contents)
+ | "GUILD_CREATE" -> GUILD_CREATE (Guild_j.t_of_string contents)
+ | "GUILD_UPDATE" -> GUILD_UPDATE (Guild_j.t_of_string contents)
+ | "GUILD_DELETE" -> GUILD_DELETE (Guild_j.t_of_string contents)
+ | "GUILD_BAN_ADD" -> GUILD_BAN_ADD (Ban_j.t_of_string contents)
+ | "GUILD_BAN_REMOVE" -> GUILD_BAN_REMOVE (Ban_j.t_of_string contents)
+ | "GUILD_EMOJIS_UPDATE" -> GUILD_EMOJIS_UPDATE (Yojson.Safe.from_string contents)
+ | "GUILD_INTEGRATIONS_UPDATE" -> GUILD_INTEGRATIONS_UPDATE (Yojson.Safe.from_string contents)
+ | "GUILD_MEMBER_ADD" -> GUILD_MEMBER_ADD (Member_j.t_of_string contents)
+ | "GUILD_MEMBER_REMOVE" -> GUILD_MEMBER_REMOVE (Member_j.t_of_string contents)
+ | "GUILD_MEMBER_UPDATE" -> GUILD_MEMBER_UPDATE (Member_j.t_of_string contents)
+ | "GUILD_MEMBERS_CHUNK" -> GUILD_MEMBERS_CHUNK (Yojson.Safe.(from_string contents |> Util.to_list) |> List.map ~f:(fun m -> Yojson.Safe.to_string m |> Member_j.t_of_string))
+ | "GUILD_ROLE_CREATE" -> GUILD_ROLE_CREATE (Role_j.t_of_string contents)
+ | "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE (Role_j.t_of_string contents)
+ | "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE (Role_j.t_of_string contents)
+ | "MESSAGE_CREATE" -> MESSAGE_CREATE (Message_j.t_of_string contents)
+ | "MESSAGE_UPDATE" -> MESSAGE_UPDATE (Message_j.t_of_string contents)
+ | "MESSAGE_DELETE" -> MESSAGE_DELETE (Message_j.t_of_string contents)
+ | "MESSAGE_BULK_DELETE" -> MESSAGE_BULK_DELETE (Yojson.Safe.(from_string contents |> Util.to_list) |> List.map ~f:(fun m -> Yojson.Safe.to_string m |> Message_j.t_of_string))
+ | "MESSAGE_REACTION_ADD" -> MESSAGE_REACTION_ADD (Reaction_j.t_of_string contents)
+ | "MESSAGE_REACTION_REMOVE" -> MESSAGE_REACTION_REMOVE (Reaction_j.t_of_string contents)
+ | "MESSAGE_REACTION_REMOVE_ALL" -> MESSAGE_REACTION_REMOVE_ALL (Yojson.Safe.(from_string contents |> Util.to_list) |> List.map ~f:(fun m -> Yojson.Safe.to_string m |> Reaction_j.t_of_string))
+ | "PRESENCE_UPDATE" -> PRESENCE_UPDATE (Presence_j.t_of_string contents)
+ | "TYPING_START" -> TYPING_START (Yojson.Safe.from_string contents)
+ | "USER_UPDATE" -> USER_UPDATE (Yojson.Safe.from_string contents)
+ | "VOICE_STATE_UPDATE" -> VOICE_STATE_UPDATE (Yojson.Safe.from_string contents)
+ | "VOICE_SERVER_UPDATE" -> VOICE_SERVER_UPDATE (Yojson.Safe.from_string contents)
+ | "WEBHOOKS_UPDATE" -> WEBHOOKS_UPDATE (Yojson.Safe.from_string contents)
+ | s -> raise (Invalid_event s) \ No newline at end of file
diff --git a/lib/models.ml b/lib/models.ml
new file mode 100644
index 0000000..1b23a21
--- /dev/null
+++ b/lib/models.ml
@@ -0,0 +1,16 @@
+module Make(H : S.Http) = struct
+ module Activity = Activity.Make(H)
+ module Attachment = Attachment.Make(H)
+ module Ban = Ban.Make(H)
+ module Channel = Channel.Make(H)
+ module Embed = Embed.Make(H)
+ module Emoji = Emoji.Make(H)
+ module Guild = Guild.Make(H)
+ module Member = Member.Make(H)
+ module Message = Message.Make(H)
+ module Presence = Presence.Make(H)
+ module Reaction = Reaction.Make(H)
+ module Role = Role.Make(H)
+ module Snowflake = Snowflake.Make(H)
+ module User = User.Make(H)
+end \ No newline at end of file
diff --git a/lib/models/activity.ml b/lib/models/activity.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/activity.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/attachment.ml b/lib/models/attachment.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/attachment.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/ban.ml b/lib/models/ban.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/ban.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/channel.ml b/lib/models/channel.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/channel.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/embed.ml b/lib/models/embed.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/embed.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/emoji.ml b/lib/models/emoji.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/emoji.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/activity.atd b/lib/models/gen/activity.atd
index 8e02191..8e02191 100644
--- a/lib/models/activity.atd
+++ b/lib/models/gen/activity.atd
diff --git a/lib/models/activity_j.ml b/lib/models/gen/activity_j.ml
index eb1a62e..eb1a62e 100644
--- a/lib/models/activity_j.ml
+++ b/lib/models/gen/activity_j.ml
diff --git a/lib/models/activity_j.mli b/lib/models/gen/activity_j.mli
index c179efb..c179efb 100644
--- a/lib/models/activity_j.mli
+++ b/lib/models/gen/activity_j.mli
diff --git a/lib/models/activity_t.ml b/lib/models/gen/activity_t.ml
index 6bb2049..6bb2049 100644
--- a/lib/models/activity_t.ml
+++ b/lib/models/gen/activity_t.ml
diff --git a/lib/models/activity_t.mli b/lib/models/gen/activity_t.mli
index 6bb2049..6bb2049 100644
--- a/lib/models/activity_t.mli
+++ b/lib/models/gen/activity_t.mli
diff --git a/lib/models/attachment.atd b/lib/models/gen/attachment.atd
index 9757b49..9757b49 100644
--- a/lib/models/attachment.atd
+++ b/lib/models/gen/attachment.atd
diff --git a/lib/models/attachment_j.ml b/lib/models/gen/attachment_j.ml
index 28f909d..28f909d 100644
--- a/lib/models/attachment_j.ml
+++ b/lib/models/gen/attachment_j.ml
diff --git a/lib/models/attachment_j.mli b/lib/models/gen/attachment_j.mli
index 6b11b08..6b11b08 100644
--- a/lib/models/attachment_j.mli
+++ b/lib/models/gen/attachment_j.mli
diff --git a/lib/models/attachment_t.ml b/lib/models/gen/attachment_t.ml
index 0485dcc..0485dcc 100644
--- a/lib/models/attachment_t.ml
+++ b/lib/models/gen/attachment_t.ml
diff --git a/lib/models/attachment_t.mli b/lib/models/gen/attachment_t.mli
index 0485dcc..0485dcc 100644
--- a/lib/models/attachment_t.mli
+++ b/lib/models/gen/attachment_t.mli
diff --git a/lib/models/ban.atd b/lib/models/gen/ban.atd
index 0a87338..0a87338 100644
--- a/lib/models/ban.atd
+++ b/lib/models/gen/ban.atd
diff --git a/lib/models/ban_j.ml b/lib/models/gen/ban_j.ml
index e608f67..e608f67 100644
--- a/lib/models/ban_j.ml
+++ b/lib/models/gen/ban_j.ml
diff --git a/lib/models/ban_j.mli b/lib/models/gen/ban_j.mli
index 9449b5c..9449b5c 100644
--- a/lib/models/ban_j.mli
+++ b/lib/models/gen/ban_j.mli
diff --git a/lib/models/ban_t.ml b/lib/models/gen/ban_t.ml
index 7d9c5a0..7d9c5a0 100644
--- a/lib/models/ban_t.ml
+++ b/lib/models/gen/ban_t.ml
diff --git a/lib/models/ban_t.mli b/lib/models/gen/ban_t.mli
index 7d9c5a0..7d9c5a0 100644
--- a/lib/models/ban_t.mli
+++ b/lib/models/gen/ban_t.mli
diff --git a/lib/models/channel.atd b/lib/models/gen/channel.atd
index 6ab58cf..6ab58cf 100644
--- a/lib/models/channel.atd
+++ b/lib/models/gen/channel.atd
diff --git a/lib/models/channel_j.ml b/lib/models/gen/channel_j.ml
index 7369230..7369230 100644
--- a/lib/models/channel_j.ml
+++ b/lib/models/gen/channel_j.ml
diff --git a/lib/models/channel_j.mli b/lib/models/gen/channel_j.mli
index ec4048c..ec4048c 100644
--- a/lib/models/channel_j.mli
+++ b/lib/models/gen/channel_j.mli
diff --git a/lib/models/channel_t.ml b/lib/models/gen/channel_t.ml
index a5c9ce4..a5c9ce4 100644
--- a/lib/models/channel_t.ml
+++ b/lib/models/gen/channel_t.ml
diff --git a/lib/models/channel_t.mli b/lib/models/gen/channel_t.mli
index a5c9ce4..a5c9ce4 100644
--- a/lib/models/channel_t.mli
+++ b/lib/models/gen/channel_t.mli
diff --git a/lib/models/embed.atd b/lib/models/gen/embed.atd
index 0d3aed4..0d3aed4 100644
--- a/lib/models/embed.atd
+++ b/lib/models/gen/embed.atd
diff --git a/lib/models/embed_j.ml b/lib/models/gen/embed_j.ml
index 560c517..560c517 100644
--- a/lib/models/embed_j.ml
+++ b/lib/models/gen/embed_j.ml
diff --git a/lib/models/embed_j.mli b/lib/models/gen/embed_j.mli
index 8872d89..8872d89 100644
--- a/lib/models/embed_j.mli
+++ b/lib/models/gen/embed_j.mli
diff --git a/lib/models/embed_t.ml b/lib/models/gen/embed_t.ml
index 9eb5059..9eb5059 100644
--- a/lib/models/embed_t.ml
+++ b/lib/models/gen/embed_t.ml
diff --git a/lib/models/embed_t.mli b/lib/models/gen/embed_t.mli
index 9eb5059..9eb5059 100644
--- a/lib/models/embed_t.mli
+++ b/lib/models/gen/embed_t.mli
diff --git a/lib/models/emoji.atd b/lib/models/gen/emoji.atd
index 877323b..877323b 100644
--- a/lib/models/emoji.atd
+++ b/lib/models/gen/emoji.atd
diff --git a/lib/models/emoji_j.ml b/lib/models/gen/emoji_j.ml
index d621de2..d621de2 100644
--- a/lib/models/emoji_j.ml
+++ b/lib/models/gen/emoji_j.ml
diff --git a/lib/models/emoji_j.mli b/lib/models/gen/emoji_j.mli
index 596deeb..596deeb 100644
--- a/lib/models/emoji_j.mli
+++ b/lib/models/gen/emoji_j.mli
diff --git a/lib/models/emoji_t.ml b/lib/models/gen/emoji_t.ml
index 333939d..333939d 100644
--- a/lib/models/emoji_t.ml
+++ b/lib/models/gen/emoji_t.ml
diff --git a/lib/models/emoji_t.mli b/lib/models/gen/emoji_t.mli
index 333939d..333939d 100644
--- a/lib/models/emoji_t.mli
+++ b/lib/models/gen/emoji_t.mli
diff --git a/lib/models/guild.atd b/lib/models/gen/guild.atd
index c622eea..c622eea 100644
--- a/lib/models/guild.atd
+++ b/lib/models/gen/guild.atd
diff --git a/lib/models/guild_j.ml b/lib/models/gen/guild_j.ml
index 9f7b069..9f7b069 100644
--- a/lib/models/guild_j.ml
+++ b/lib/models/gen/guild_j.ml
diff --git a/lib/models/guild_j.mli b/lib/models/gen/guild_j.mli
index d430b2a..d430b2a 100644
--- a/lib/models/guild_j.mli
+++ b/lib/models/gen/guild_j.mli
diff --git a/lib/models/guild_t.ml b/lib/models/gen/guild_t.ml
index 9ffe83f..9ffe83f 100644
--- a/lib/models/guild_t.ml
+++ b/lib/models/gen/guild_t.ml
diff --git a/lib/models/guild_t.mli b/lib/models/gen/guild_t.mli
index 9ffe83f..9ffe83f 100644
--- a/lib/models/guild_t.mli
+++ b/lib/models/gen/guild_t.mli
diff --git a/lib/models/member.atd b/lib/models/gen/member.atd
index 11d8b62..11d8b62 100644
--- a/lib/models/member.atd
+++ b/lib/models/gen/member.atd
diff --git a/lib/models/member_j.ml b/lib/models/gen/member_j.ml
index 7fd4aec..7fd4aec 100644
--- a/lib/models/member_j.ml
+++ b/lib/models/gen/member_j.ml
diff --git a/lib/models/member_j.mli b/lib/models/gen/member_j.mli
index f160b6d..f160b6d 100644
--- a/lib/models/member_j.mli
+++ b/lib/models/gen/member_j.mli
diff --git a/lib/models/member_t.ml b/lib/models/gen/member_t.ml
index 6262e1b..6262e1b 100644
--- a/lib/models/member_t.ml
+++ b/lib/models/gen/member_t.ml
diff --git a/lib/models/member_t.mli b/lib/models/gen/member_t.mli
index 6262e1b..6262e1b 100644
--- a/lib/models/member_t.mli
+++ b/lib/models/gen/member_t.mli
diff --git a/lib/models/message.atd b/lib/models/gen/message.atd
index 1c90be9..8611f6a 100644
--- a/lib/models/message.atd
+++ b/lib/models/gen/message.atd
@@ -2,7 +2,6 @@ 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
@@ -18,13 +17,13 @@ type t = {
?edited_timestamp: string option;
tts: bool;
mention_everyone: bool;
- mentions: user list;
- role_mentions: role list;
+ mentions: snowflake list;
+ ?role_mentions: snowflake list option;
attachments: attachment list;
embeds: embed list;
- reactions: reaction list;
+ ?reactions: snowflake list option;
?nonce: snowflake option;
pinned: bool;
- webhook_id: snowflake;
+ ?webhook_id: snowflake option;
kind <json name="type">: int;
} \ No newline at end of file
diff --git a/lib/models/message_j.ml b/lib/models/gen/message_j.ml
index 206d69c..faea836 100644
--- a/lib/models/message_j.ml
+++ b/lib/models/gen/message_j.ml
@@ -5,10 +5,6 @@ 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
@@ -26,17 +22,19 @@ type t = Message_t.t = {
edited_timestamp: string option;
tts: bool;
mention_everyone: bool;
- mentions: user list;
- role_mentions: role list;
+ mentions: snowflake list;
+ role_mentions: snowflake list option;
attachments: attachment list;
embeds: embed list;
- reactions: reaction list;
+ reactions: snowflake list option;
nonce: snowflake option;
pinned: bool;
- webhook_id: snowflake;
+ webhook_id: snowflake option;
kind: int
}
+type reaction = Reaction_t.t
+
type member = Member_t.t
let write_user = (
@@ -63,30 +61,6 @@ let read_snowflake = (
)
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
)
@@ -123,22 +97,6 @@ let read_attachment = (
)
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
@@ -171,25 +129,9 @@ let read__6 = (
)
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
+ write_snowflake
)
)
let string_of__4 ?(len = 1024) x =
@@ -198,11 +140,68 @@ let string_of__4 ?(len = 1024) x =
Bi_outbuf.contents ob
let read__4 = (
Atdgen_runtime.Oj_run.read_list (
- read_user
+ read_snowflake
)
)
let _4_of_string s =
read__4 (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write__5 = (
+ Atdgen_runtime.Oj_run.write_option (
+ write__4
+ )
+)
+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__4
+ ) 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__4
+ ) 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__3 = (
Atdgen_runtime.Oj_run.write_option (
Yojson.Safe.write_string
@@ -483,15 +482,17 @@ let write_t : _ -> t -> _ = (
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;
+ (match x.role_mentions with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"role_mentions\":";
+ (
+ write__4
+ )
+ ob x;
+ );
if !is_first then
is_first := false
else
@@ -510,15 +511,17 @@ let write_t : _ -> t -> _ = (
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.reactions with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"reactions\":";
+ (
+ write__4
+ )
+ ob x;
+ );
(match x.nonce with None -> () | Some x ->
if !is_first then
is_first := false
@@ -539,15 +542,17 @@ let write_t : _ -> t -> _ = (
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;
+ (match x.webhook_id with None -> () | Some x ->
+ if !is_first then
+ is_first := false
+ else
+ Bi_outbuf.add_char ob ',';
+ Bi_outbuf.add_string ob "\"webhook_id\":";
+ (
+ write_snowflake
+ )
+ ob x;
+ );
if !is_first then
is_first := false
else
@@ -578,13 +583,13 @@ let read_t = (
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_role_mentions = ref (None) 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_reactions = ref (None) 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_webhook_id = ref (None) in
let field_kind = ref (Obj.magic (Sys.opaque_identity 0.0)) in
let bits0 = ref 0 in
try
@@ -873,33 +878,39 @@ let read_t = (
);
bits0 := !bits0 lor 0x80;
| 11 ->
- field_role_mentions := (
- (
- read__5
- ) p lb
- );
- bits0 := !bits0 lor 0x100;
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_role_mentions := (
+ Some (
+ (
+ read__4
+ ) p lb
+ )
+ );
+ )
| 12 ->
field_attachments := (
(
read__6
) p lb
);
- bits0 := !bits0 lor 0x200;
+ bits0 := !bits0 lor 0x100;
| 13 ->
field_embeds := (
(
read__7
) p lb
);
- bits0 := !bits0 lor 0x400;
+ bits0 := !bits0 lor 0x200;
| 14 ->
- field_reactions := (
- (
- read__8
- ) p lb
- );
- bits0 := !bits0 lor 0x800;
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_reactions := (
+ Some (
+ (
+ read__4
+ ) p lb
+ )
+ );
+ )
| 15 ->
if not (Yojson.Safe.read_null_if_possible p lb) then (
field_nonce := (
@@ -916,21 +927,24 @@ let read_t = (
Atdgen_runtime.Oj_run.read_bool
) p lb
);
- bits0 := !bits0 lor 0x1000;
+ bits0 := !bits0 lor 0x400;
| 17 ->
- field_webhook_id := (
- (
- read_snowflake
- ) p lb
- );
- bits0 := !bits0 lor 0x2000;
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_webhook_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
| 18 ->
field_kind := (
(
Atdgen_runtime.Oj_run.read_int
) p lb
);
- bits0 := !bits0 lor 0x4000;
+ bits0 := !bits0 lor 0x800;
| _ -> (
Yojson.Safe.skip_json p lb
)
@@ -1221,33 +1235,39 @@ let read_t = (
);
bits0 := !bits0 lor 0x80;
| 11 ->
- field_role_mentions := (
- (
- read__5
- ) p lb
- );
- bits0 := !bits0 lor 0x100;
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_role_mentions := (
+ Some (
+ (
+ read__4
+ ) p lb
+ )
+ );
+ )
| 12 ->
field_attachments := (
(
read__6
) p lb
);
- bits0 := !bits0 lor 0x200;
+ bits0 := !bits0 lor 0x100;
| 13 ->
field_embeds := (
(
read__7
) p lb
);
- bits0 := !bits0 lor 0x400;
+ bits0 := !bits0 lor 0x200;
| 14 ->
- field_reactions := (
- (
- read__8
- ) p lb
- );
- bits0 := !bits0 lor 0x800;
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_reactions := (
+ Some (
+ (
+ read__4
+ ) p lb
+ )
+ );
+ )
| 15 ->
if not (Yojson.Safe.read_null_if_possible p lb) then (
field_nonce := (
@@ -1264,21 +1284,24 @@ let read_t = (
Atdgen_runtime.Oj_run.read_bool
) p lb
);
- bits0 := !bits0 lor 0x1000;
+ bits0 := !bits0 lor 0x400;
| 17 ->
- field_webhook_id := (
- (
- read_snowflake
- ) p lb
- );
- bits0 := !bits0 lor 0x2000;
+ if not (Yojson.Safe.read_null_if_possible p lb) then (
+ field_webhook_id := (
+ Some (
+ (
+ read_snowflake
+ ) p lb
+ )
+ );
+ )
| 18 ->
field_kind := (
(
Atdgen_runtime.Oj_run.read_int
) p lb
);
- bits0 := !bits0 lor 0x4000;
+ bits0 := !bits0 lor 0x800;
| _ -> (
Yojson.Safe.skip_json p lb
)
@@ -1286,7 +1309,7 @@ let read_t = (
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" |];
+ if !bits0 <> 0xfff then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id"; "author"; "channel_id"; "content"; "timestamp"; "tts"; "mention_everyone"; "mentions"; "attachments"; "embeds"; "pinned"; "kind" |];
(
{
id = !field_id;
@@ -1314,6 +1337,18 @@ let read_t = (
)
let t_of_string s =
read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
+let write_reaction = (
+ Reaction_j.write_t
+)
+let string_of_reaction ?(len = 1024) x =
+ let ob = Bi_outbuf.create len in
+ write_reaction ob x;
+ Bi_outbuf.contents ob
+let read_reaction = (
+ Reaction_j.read_t
+)
+let reaction_of_string s =
+ read_reaction (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
let write_member = (
Member_j.write_t
)
diff --git a/lib/models/message_j.mli b/lib/models/gen/message_j.mli
index e3a3e5b..04aa440 100644
--- a/lib/models/message_j.mli
+++ b/lib/models/gen/message_j.mli
@@ -5,10 +5,6 @@ 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
@@ -26,17 +22,19 @@ type t = Message_t.t = {
edited_timestamp: string option;
tts: bool;
mention_everyone: bool;
- mentions: user list;
- role_mentions: role list;
+ mentions: snowflake list;
+ role_mentions: snowflake list option;
attachments: attachment list;
embeds: embed list;
- reactions: reaction list;
+ reactions: snowflake list option;
nonce: snowflake option;
pinned: bool;
- webhook_id: snowflake;
+ webhook_id: snowflake option;
kind: int
}
+type reaction = Reaction_t.t
+
type member = Member_t.t
val write_user :
@@ -79,46 +77,6 @@ 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}. *)
@@ -199,6 +157,26 @@ val t_of_string :
string -> t
(** Deserialize JSON data of type {!t}. *)
+val write_reaction :
+ Bi_outbuf.t -> reaction -> unit
+ (** Output a JSON value of type {!reaction}. *)
+
+val string_of_reaction :
+ ?len:int -> reaction -> string
+ (** Serialize a value of type {!reaction}
+ into a JSON string.
+ @param len specifies the initial length
+ of the buffer used internally.
+ Default: 1024. *)
+
+val read_reaction :
+ Yojson.Safe.lexer_state -> Lexing.lexbuf -> reaction
+ (** Input JSON data of type {!reaction}. *)
+
+val reaction_of_string :
+ string -> reaction
+ (** Deserialize JSON data of type {!reaction}. *)
+
val write_member :
Bi_outbuf.t -> member -> unit
(** Output a JSON value of type {!member}. *)
diff --git a/lib/models/message_t.ml b/lib/models/gen/message_t.ml
index 2442d76..ce2d5a4 100644
--- a/lib/models/message_t.ml
+++ b/lib/models/gen/message_t.ml
@@ -5,10 +5,6 @@ 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
@@ -26,15 +22,17 @@ type t = {
edited_timestamp: string option;
tts: bool;
mention_everyone: bool;
- mentions: user list;
- role_mentions: role list;
+ mentions: snowflake list;
+ role_mentions: snowflake list option;
attachments: attachment list;
embeds: embed list;
- reactions: reaction list;
+ reactions: snowflake list option;
nonce: snowflake option;
pinned: bool;
- webhook_id: snowflake;
+ webhook_id: snowflake option;
kind: int
}
+type reaction = Reaction_t.t
+
type member = Member_t.t
diff --git a/lib/models/message_t.mli b/lib/models/gen/message_t.mli
index 2442d76..ce2d5a4 100644
--- a/lib/models/message_t.mli
+++ b/lib/models/gen/message_t.mli
@@ -5,10 +5,6 @@ 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
@@ -26,15 +22,17 @@ type t = {
edited_timestamp: string option;
tts: bool;
mention_everyone: bool;
- mentions: user list;
- role_mentions: role list;
+ mentions: snowflake list;
+ role_mentions: snowflake list option;
attachments: attachment list;
embeds: embed list;
- reactions: reaction list;
+ reactions: snowflake list option;
nonce: snowflake option;
pinned: bool;
- webhook_id: snowflake;
+ webhook_id: snowflake option;
kind: int
}
+type reaction = Reaction_t.t
+
type member = Member_t.t
diff --git a/lib/models/presence.atd b/lib/models/gen/presence.atd
index da9b3fd..da9b3fd 100644
--- a/lib/models/presence.atd
+++ b/lib/models/gen/presence.atd
diff --git a/lib/models/presence_j.ml b/lib/models/gen/presence_j.ml
index b4ea497..b4ea497 100644
--- a/lib/models/presence_j.ml
+++ b/lib/models/gen/presence_j.ml
diff --git a/lib/models/presence_j.mli b/lib/models/gen/presence_j.mli
index be68b3f..be68b3f 100644
--- a/lib/models/presence_j.mli
+++ b/lib/models/gen/presence_j.mli
diff --git a/lib/models/presence_t.ml b/lib/models/gen/presence_t.ml
index 940d986..940d986 100644
--- a/lib/models/presence_t.ml
+++ b/lib/models/gen/presence_t.ml
diff --git a/lib/models/presence_t.mli b/lib/models/gen/presence_t.mli
index 940d986..940d986 100644
--- a/lib/models/presence_t.mli
+++ b/lib/models/gen/presence_t.mli
diff --git a/lib/models/reaction.atd b/lib/models/gen/reaction.atd
index aa41483..aa41483 100644
--- a/lib/models/reaction.atd
+++ b/lib/models/gen/reaction.atd
diff --git a/lib/models/reaction_j.ml b/lib/models/gen/reaction_j.ml
index fe91833..fe91833 100644
--- a/lib/models/reaction_j.ml
+++ b/lib/models/gen/reaction_j.ml
diff --git a/lib/models/reaction_j.mli b/lib/models/gen/reaction_j.mli
index 0d6a598..0d6a598 100644
--- a/lib/models/reaction_j.mli
+++ b/lib/models/gen/reaction_j.mli
diff --git a/lib/models/reaction_t.ml b/lib/models/gen/reaction_t.ml
index 666030b..666030b 100644
--- a/lib/models/reaction_t.ml
+++ b/lib/models/gen/reaction_t.ml
diff --git a/lib/models/reaction_t.mli b/lib/models/gen/reaction_t.mli
index 666030b..666030b 100644
--- a/lib/models/reaction_t.mli
+++ b/lib/models/gen/reaction_t.mli
diff --git a/lib/models/role.atd b/lib/models/gen/role.atd
index a6bdcba..a6bdcba 100644
--- a/lib/models/role.atd
+++ b/lib/models/gen/role.atd
diff --git a/lib/models/role_j.ml b/lib/models/gen/role_j.ml
index a15b6cf..a15b6cf 100644
--- a/lib/models/role_j.ml
+++ b/lib/models/gen/role_j.ml
diff --git a/lib/models/role_j.mli b/lib/models/gen/role_j.mli
index b4ea78c..b4ea78c 100644
--- a/lib/models/role_j.mli
+++ b/lib/models/gen/role_j.mli
diff --git a/lib/models/role_t.ml b/lib/models/gen/role_t.ml
index a4e83c5..a4e83c5 100644
--- a/lib/models/role_t.ml
+++ b/lib/models/gen/role_t.ml
diff --git a/lib/models/role_t.mli b/lib/models/gen/role_t.mli
index a4e83c5..a4e83c5 100644
--- a/lib/models/role_t.mli
+++ b/lib/models/gen/role_t.mli
diff --git a/lib/models/snowflake.atd b/lib/models/gen/snowflake.atd
index 98dc032..98dc032 100644
--- a/lib/models/snowflake.atd
+++ b/lib/models/gen/snowflake.atd
diff --git a/lib/models/snowflake_j.ml b/lib/models/gen/snowflake_j.ml
index 80f6f63..80f6f63 100644
--- a/lib/models/snowflake_j.ml
+++ b/lib/models/gen/snowflake_j.ml
diff --git a/lib/models/snowflake_j.mli b/lib/models/gen/snowflake_j.mli
index fed97a4..fed97a4 100644
--- a/lib/models/snowflake_j.mli
+++ b/lib/models/gen/snowflake_j.mli
diff --git a/lib/models/snowflake_t.ml b/lib/models/gen/snowflake_t.ml
index a7bdb08..a7bdb08 100644
--- a/lib/models/snowflake_t.ml
+++ b/lib/models/gen/snowflake_t.ml
diff --git a/lib/models/snowflake_t.mli b/lib/models/gen/snowflake_t.mli
index a7bdb08..a7bdb08 100644
--- a/lib/models/snowflake_t.mli
+++ b/lib/models/gen/snowflake_t.mli
diff --git a/lib/models/user.atd b/lib/models/gen/user.atd
index 106b3b0..106b3b0 100644
--- a/lib/models/user.atd
+++ b/lib/models/gen/user.atd
diff --git a/lib/models/user_j.ml b/lib/models/gen/user_j.ml
index 552a20d..552a20d 100644
--- a/lib/models/user_j.ml
+++ b/lib/models/gen/user_j.ml
diff --git a/lib/models/user_j.mli b/lib/models/gen/user_j.mli
index 576768e..576768e 100644
--- a/lib/models/user_j.mli
+++ b/lib/models/gen/user_j.mli
diff --git a/lib/models/user_t.ml b/lib/models/gen/user_t.ml
index 294cf0a..294cf0a 100644
--- a/lib/models/user_t.ml
+++ b/lib/models/gen/user_t.ml
diff --git a/lib/models/user_t.mli b/lib/models/gen/user_t.mli
index 294cf0a..294cf0a 100644
--- a/lib/models/user_t.mli
+++ b/lib/models/gen/user_t.mli
diff --git a/lib/models/guild.ml b/lib/models/guild.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/guild.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/member.ml b/lib/models/member.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/member.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/message.ml b/lib/models/message.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/message.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/presence.ml b/lib/models/presence.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/presence.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/reaction.ml b/lib/models/reaction.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/reaction.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/role.ml b/lib/models/role.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/role.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/snowflake.ml b/lib/models/snowflake.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/snowflake.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/models/user.ml b/lib/models/user.ml
new file mode 100644
index 0000000..36b7d4b
--- /dev/null
+++ b/lib/models/user.ml
@@ -0,0 +1,2 @@
+module Make(Http : S.Http) = struct
+end \ No newline at end of file
diff --git a/lib/s.ml b/lib/s.ml
index 32347cb..1fb8fdf 100644
--- a/lib/s.ml
+++ b/lib/s.ml
@@ -4,55 +4,21 @@ module type Token = sig
val token : string
end
+module type Models = sig
+end
+
module type Handler = sig
val handle_event :
- 'a ->
- 'b ->
+ Event.t ->
unit
end
-module type Dispatch = sig
- type dispatch_event =
- | HELLO of Yojson.Safe.json
- | READY of Yojson.Safe.json
- | RESUMED of Yojson.Safe.json
- | INVALID_SESSION of Yojson.Safe.json
- | CHANNEL_CREATE of Channel_t.t
- | CHANNEL_UPDATE of Channel_t.t
- | CHANNEL_DELETE of Channel_t.t
- | CHANNEL_PINS_UPDATE of Yojson.Safe.json
- | GUILD_CREATE of Guild_t.t
- | GUILD_UPDATE of Guild_t.t
- | GUILD_DELETE of Guild_t.t
- | GUILD_BAN_ADD of Ban_t.t
- | GUILD_BAN_REMOVE of Ban_t.t
- | GUILD_EMOJIS_UPDATE of Yojson.Safe.json
- | GUILD_INTEGRATIONS_UPDATE of Yojson.Safe.json
- | GUILD_MEMBER_ADD of Member_t.t
- | GUILD_MEMBER_REMOVE of Member_t.t
- | GUILD_MEMBER_UPDATE of Member_t.t
- | GUILD_MEMBERS_CHUNK of Member_t.t list
- | GUILD_ROLE_CREATE of Role_t.t (* * Guild.t *)
- | GUILD_ROLE_UPDATE of Role_t.t (* * Guild.t *)
- | GUILD_ROLE_DELETE of Role_t.t (* * Guild.t *)
- | MESSAGE_CREATE of Message_t.t
- | MESSAGE_UPDATE of Message_t.t
- | MESSAGE_DELETE of Message_t.t
- | MESSAGE_BULK_DELETE of Message_t.t list
- | MESSAGE_REACTION_ADD of (* Message.t * *) Reaction_t.t
- | MESSAGE_REACTION_REMOVE of (* Message.t * *) Reaction_t.t
- | MESSAGE_REACTION_REMOVE_ALL of (* Message.t * *) Reaction_t.t list
- | PRESENCE_UPDATE of Presence_t.t
- | TYPING_START of Yojson.Safe.json
- | USER_UPDATE of Yojson.Safe.json
- | VOICE_STATE_UPDATE of Yojson.Safe.json
- | VOICE_SERVER_UPDATE of Yojson.Safe.json
- | WEBHOOKS_UPDATE of Yojson.Safe.json
-
- exception Invalid_event of string
+module type Handler_f = sig
+ module Make(Models : Models) : Handler
+end
- val event_of_string : contents:string -> string -> dispatch_event
- val dispatch : ev: -> string -> unit
+module type Dispatch = sig
+ val dispatch : ev:string -> string -> unit
end
module type Http = sig
diff --git a/lib/sharder.ml b/lib/sharder.ml
index 7366fd9..98df132 100644
--- a/lib/sharder.ml
+++ b/lib/sharder.ml
@@ -70,7 +70,6 @@ module Make(H : S.Http)(D : S.Dispatch) : S.Sharder = struct
if t = "READY" then begin
Ivar.fill_if_empty shard.ready ()
end;
- print_endline @@ Yojson.Safe.pretty_to_string data;
D.dispatch ~ev:t (Yojson.Safe.to_string data);
return { shard with
seq = seq;