aboutsummaryrefslogtreecommitdiff
path: root/lib/event.ml
diff options
context:
space:
mode:
authorAdelyn Breedlove <[email protected]>2018-12-14 16:49:37 -0700
committerAdelyn Breedlove <[email protected]>2018-12-14 16:49:37 -0700
commit41fbba7d0b7dd9fff8dcb9985a474cfbbd2408f2 (patch)
tree690861418bed15de47e7cf5672d96fdacc9abe5e /lib/event.ml
parentMerge branch 'dev' of https://gitlab.com/Mishio595/disml into dev (diff)
parentA few metafile updates (diff)
downloaddisml-41fbba7d0b7dd9fff8dcb9985a474cfbbd2408f2.tar.xz
disml-41fbba7d0b7dd9fff8dcb9985a474cfbbd2408f2.zip
Merging
Diffstat (limited to 'lib/event.ml')
-rw-r--r--lib/event.ml185
1 files changed, 75 insertions, 110 deletions
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