aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMishio595 <[email protected]>2018-11-25 20:30:11 -0700
committerMishio595 <[email protected]>2018-11-25 20:30:11 -0700
commitffd7237f62ff8b286a05c9256ab90c92770241a9 (patch)
tree98aeaec02dfa0d291d69ff981f9ae17e46ba5b55 /lib
parentconvert to client from client_ez (diff)
downloaddisml-ffd7237f62ff8b286a05c9256ab90c92770241a9.tar.xz
disml-ffd7237f62ff8b286a05c9256ab90c92770241a9.zip
More models, some dispatch rework starting
Diffstat (limited to 'lib')
-rw-r--r--lib/dispatch.ml116
-rw-r--r--lib/event.ml113
-rw-r--r--lib/models/activity.ml1
-rw-r--r--lib/models/ban.ml4
-rw-r--r--lib/models/presence.ml8
5 files changed, 242 insertions, 0 deletions
diff --git a/lib/dispatch.ml b/lib/dispatch.ml
new file mode 100644
index 0000000..c6d717b
--- /dev/null
+++ b/lib/dispatch.ml
@@ -0,0 +1,116 @@
+open Async
+
+type t = {
+ hello: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ ready: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ resumed: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ invalid_session: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ channel_create: Channel.t Pipe.Reader.t * Channel.t Pipe.Writer.t;
+ channel_update: Channel.t Pipe.Reader.t * Channel.t Pipe.Writer.t;
+ channel_delete: Channel.t Pipe.Reader.t * Channel.t Pipe.Writer.t;
+ channel_pins_update: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ guild_create: Guild.t Pipe.Reader.t * Guild.t Pipe.Writer.t;
+ guild_update: Guild.t Pipe.Reader.t * Guild.t Pipe.Writer.t;
+ guild_delete: Guild.t Pipe.Reader.t * Guild.t Pipe.Writer.t;
+ guild_ban_add: Ban.t Pipe.Reader.t * Ban.t Pipe.Writer.t;
+ guild_ban_remove: Ban.t Pipe.Reader.t * Ban.t Pipe.Writer.t;
+ guild_emojis_update: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ guild_integrations_update: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ guild_member_add: Member.t Pipe.Reader.t * Member.t Pipe.Writer.t;
+ guild_member_remove: Member.t Pipe.Reader.t * Member.t Pipe.Writer.t;
+ guild_member_update: Member.t Pipe.Reader.t * Member.t Pipe.Writer.t;
+ guild_members_chunk: (Member.t list) Pipe.Reader.t * (Member.t list) Pipe.Writer.t;
+ guild_role_create: (Role.t * Guild.t) Pipe.Reader.t * (Role.t * Guild.t) Pipe.Writer.t;
+ guild_role_update: (Role.t * Guild.t) Pipe.Reader.t * (Role.t * Guild.t) Pipe.Writer.t;
+ guild_role_delete: (Role.t * Guild.t) Pipe.Reader.t * (Role.t * Guild.t) Pipe.Writer.t;
+ message_create: Message.t Pipe.Reader.t * Message.t Pipe.Writer.t;
+ message_update: Message.t Pipe.Reader.t * Message.t Pipe.Writer.t;
+ message_delete: Message.t Pipe.Reader.t * Message.t Pipe.Writer.t;
+ message_bulk_delete: (Message.t list) Pipe.Reader.t * (Message.t list) Pipe.Writer.t;
+ message_reaction_add: (Message.t * Reaction.t) Pipe.Reader.t * (Message.t * Reaction.t) Pipe.Writer.t;
+ message_reaction_remove: (Message.t * Reaction.t) Pipe.Reader.t * (Message.t * Reaction.t) Pipe.Writer.t;
+ message_reaction_remove_all: (Message.t * Reaction.t) Pipe.Reader.t * (Message.t * Reaction.t) Pipe.Writer.t;
+ presence_update: Presence.t Pipe.Reader.t * Presence.t Pipe.Writer.t;
+ typing_start: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ user_update: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ voice_state_update: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ voice_server_update: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+ webhooks_update: Yojson.Basic.json Pipe.Reader.t * Yojson.Basic.json Pipe.Writer.t;
+}
+
+let dispatcher =
+ {
+ hello = Pipe.create ();
+ ready = Pipe.create ();
+ resumed = Pipe.create ();
+ invalid_session = Pipe.create ();
+ channel_create = Pipe.create ();
+ channel_update = Pipe.create ();
+ channel_delete = Pipe.create ();
+ channel_pins_update = Pipe.create ();
+ guild_create = Pipe.create ();
+ guild_update = Pipe.create ();
+ guild_delete = Pipe.create ();
+ guild_ban_add = Pipe.create ();
+ guild_ban_remove = Pipe.create ();
+ guild_emojis_update = Pipe.create ();
+ guild_integrations_update = Pipe.create ();
+ guild_member_add = Pipe.create ();
+ guild_member_remove = Pipe.create ();
+ guild_member_update = Pipe.create ();
+ guild_members_chunk = Pipe.create ();
+ guild_role_create = Pipe.create ();
+ guild_role_update = Pipe.create ();
+ guild_role_delete = Pipe.create ();
+ message_create = Pipe.create ();
+ message_update = Pipe.create ();
+ message_delete = Pipe.create ();
+ message_bulk_delete = Pipe.create ();
+ message_reaction_add = Pipe.create ();
+ message_reaction_remove = Pipe.create ();
+ message_reaction_remove_all = Pipe.create ();
+ presence_update = Pipe.create ();
+ typing_start = Pipe.create ();
+ user_update = Pipe.create ();
+ voice_state_update = Pipe.create ();
+ voice_server_update = Pipe.create ();
+ webhooks_update = Pipe.create ();
+ }
+
+(* let write (ev:Event.t) =
+ let (read, _) = match ev with
+ | HELLO -> dispatcher.hello
+ | READY -> dispatcher.ready
+ | RESUMED -> dispatcher.resumed
+ | INVALID_SESSION -> dispatcher.invalid_session
+ | CHANNEL_CREATE -> dispatcher.channel_create
+ | CHANNEL_UPDATE -> dispatcher.channel_update
+ | CHANNEL_DELETE -> dispatcher.channel_delete
+ | CHANNEL_PINS_UPDATE -> dispatcher.channel_pins_update
+ | GUILD_CREATE -> dispatcher.guild_create
+ | GUILD_UPDATE -> dispatcher.guild_update
+ | GUILD_DELETE -> dispatcher.guild_delete
+ | GUILD_BAN_ADD -> dispatcher.guild_ban_add
+ | GUILD_BAN_REMOVE -> dispatcher.guild_ban_remove
+ | GUILD_EMOJIS_UPDATE -> dispatcher.guild_emojis_update
+ | GUILD_INTEGRATIONS_UPDATE -> dispatcher.guild_integrations_update
+ | GUILD_MEMBER_ADD -> dispatcher.guild_member_ad
+ | GUILD_MEMBER_REMOVE -> dispatcher.guild_member_remove
+ | GUILD_MEMBER_UPDATE -> dispatcher.guild_member_update
+ | GUILD_MEMBERS_CHUNK -> dispatcher.guild_members_chunk
+ | GUILD_ROLE_CREATE -> dispatcher.guild_role_create
+ | GUILD_ROLE_UPDATE -> dispatcher.guild_role_updatE
+ | GUILD_ROLE_DELETE -> dispatcher.guild_role_delete
+ | MESSAGE_CREATE -> dispatcher.message_create
+ | MESSAGE_UPDATE -> dispatcher.message_update
+ | MESSAGE_DELETE -> dispatcher.message_delete
+ | MESSAGE_BULK_DELETE -> dispatcher.message_bulk_delete
+ | MESSAGE_REACTION_ADD -> dispatcher.message_reaction_add
+ | MESSAGE_REACTION_REMOVE -> dispatcher.message_reaction_remove
+ | MESSAGE_REACTION_REMOVE_ALL -> dispatcher.message_reaction_remove_all
+ | PRESENCE_UPDATE -> dispatcher.presence_update
+ | TYPING_START -> dispatcher.typing_start
+ | USER_UPDATE -> dispatcher.user_update
+ | VOICE_STATE_UPDATE -> dispatcher.voice_state_update
+ | VOICE_SERVER_UPDATE -> dispatcher.voice_server_update
+ | WEBHOOKS_UPDATE -> dispatcher.webhooks_update *) \ No newline at end of file
diff --git a/lib/event.ml b/lib/event.ml
new file mode 100644
index 0000000..8b5b125
--- /dev/null
+++ b/lib/event.ml
@@ -0,0 +1,113 @@
+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
+
+exception Invalid_Event of string
+
+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)
+
+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
diff --git a/lib/models/activity.ml b/lib/models/activity.ml
new file mode 100644
index 0000000..eb6679e
--- /dev/null
+++ b/lib/models/activity.ml
@@ -0,0 +1 @@
+type t \ No newline at end of file
diff --git a/lib/models/ban.ml b/lib/models/ban.ml
new file mode 100644
index 0000000..510c2f5
--- /dev/null
+++ b/lib/models/ban.ml
@@ -0,0 +1,4 @@
+type t = {
+ id: Snowflake.t;
+ user: User.t;
+} \ No newline at end of file
diff --git a/lib/models/presence.ml b/lib/models/presence.ml
new file mode 100644
index 0000000..7243f43
--- /dev/null
+++ b/lib/models/presence.ml
@@ -0,0 +1,8 @@
+type t = {
+ user: User.t;
+ roles: Role.t list;
+ game: Activity.t option;
+ guild: Guild.t;
+ status: string;
+ activities: Activity.t list;
+} \ No newline at end of file