diff options
| author | Mishio595 <[email protected]> | 2018-11-25 20:30:11 -0700 |
|---|---|---|
| committer | Mishio595 <[email protected]> | 2018-11-25 20:30:11 -0700 |
| commit | ffd7237f62ff8b286a05c9256ab90c92770241a9 (patch) | |
| tree | 98aeaec02dfa0d291d69ff981f9ae17e46ba5b55 /lib | |
| parent | convert to client from client_ez (diff) | |
| download | disml-ffd7237f62ff8b286a05c9256ab90c92770241a9.tar.xz disml-ffd7237f62ff8b286a05c9256ab90c92770241a9.zip | |
More models, some dispatch rework starting
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/dispatch.ml | 116 | ||||
| -rw-r--r-- | lib/event.ml | 113 | ||||
| -rw-r--r-- | lib/models/activity.ml | 1 | ||||
| -rw-r--r-- | lib/models/ban.ml | 4 | ||||
| -rw-r--r-- | lib/models/presence.ml | 8 |
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 |