From ffd7237f62ff8b286a05c9256ab90c92770241a9 Mon Sep 17 00:00:00 2001 From: Mishio595 Date: Sun, 25 Nov 2018 20:30:11 -0700 Subject: More models, some dispatch rework starting --- lib/event.ml | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 lib/event.ml (limited to 'lib/event.ml') 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 -- cgit v1.2.3 From af684566617ebce536e9f30693aa3e225af906c4 Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Fri, 14 Dec 2018 10:52:36 -0700 Subject: There's a lot going on --- lib/event.ml | 185 ++++++++++++++++++++++++----------------------------------- 1 file changed, 75 insertions(+), 110 deletions(-) (limited to 'lib/event.ml') 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 -- cgit v1.2.3