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/dispatch.ml | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 lib/dispatch.ml (limited to 'lib/dispatch.ml') 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 -- cgit v1.2.3 From 77f522a5f3fd74749e7a2cd4c849e520f2b6ba89 Mon Sep 17 00:00:00 2001 From: Mishio595 Date: Thu, 29 Nov 2018 06:16:23 -0700 Subject: Some sharding work, reconnect is mostly working --- lib/dispatch.ml | 152 ++++++++++++++------------------------------------------ 1 file changed, 37 insertions(+), 115 deletions(-) (limited to 'lib/dispatch.ml') diff --git a/lib/dispatch.ml b/lib/dispatch.ml index c6d717b..43ffe1f 100644 --- a/lib/dispatch.ml +++ b/lib/dispatch.ml @@ -1,116 +1,38 @@ -open Async +(* 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 +type dispatch_event = +| HELLO of Yojson.Basic.json +| READY of Yojson.Basic.json +| RESUMED of Yojson.Basic.json +| INVALID_SESSION of Yojson.Basic.json +| CHANNEL_CREATE of Channel.t +| CHANNEL_UPDATE of Channel.t +| CHANNEL_DELETE of Channel.t +| CHANNEL_PINS_UPDATE of Yojson.Basic.json +| GUILD_CREATE of Guild.t +| GUILD_UPDATE of Guild.t +| GUILD_DELETE of Guild.t +| GUILD_BAN_ADD of Ban.t +| GUILD_BAN_REMOVE of Ban.t +| GUILD_EMOJIS_UPDATE of Yojson.Basic.json +| GUILD_INTEGRATIONS_UPDATE of Yojson.Basic.json +| GUILD_MEMBER_ADD of Member.t +| GUILD_MEMBER_REMOVE of Member.t +| GUILD_MEMBER_UPDATE of Member.t +| GUILD_MEMBERS_CHUNK of Member.t list +| GUILD_ROLE_CREATE of Role.t * Guild.t +| GUILD_ROLE_UPDATE of Role.t * Guild.t +| GUILD_ROLE_DELETE of Role.t * Guild.t +| MESSAGE_CREATE of Message.t +| MESSAGE_UPDATE of Message.t +| MESSAGE_DELETE of Message.t +| MESSAGE_BULK_DELETE of Message.t list +| MESSAGE_REACTION_ADD of Message.t * Reaction.t +| MESSAGE_REACTION_REMOVE of Message.t * Reaction.t +| MESSAGE_REACTION_REMOVE_ALL of Message.t * Reaction.t list +| PRESENCE_UPDATE of Presence.t +| TYPING_START of Yojson.Basic.json +| USER_UPDATE of Yojson.Basic.json +| VOICE_STATE_UPDATE of Yojson.Basic.json +| VOICE_SERVER_UPDATE of Yojson.Basic.json +| WEBHOOKS_UPDATE of Yojson.Basic.json -- cgit v1.2.3 From 260ccd9960b852b9c69b88e9840d5a8b22bb8e1d Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Wed, 12 Dec 2018 15:00:46 -0700 Subject: Work on event dispatch and add model derives --- lib/dispatch.ml | 121 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 84 insertions(+), 37 deletions(-) (limited to 'lib/dispatch.ml') diff --git a/lib/dispatch.ml b/lib/dispatch.ml index 43ffe1f..c75dc26 100644 --- a/lib/dispatch.ml +++ b/lib/dispatch.ml @@ -1,38 +1,85 @@ -(* open Async *) +open Core -type dispatch_event = -| HELLO of Yojson.Basic.json -| READY of Yojson.Basic.json -| RESUMED of Yojson.Basic.json -| INVALID_SESSION of Yojson.Basic.json -| CHANNEL_CREATE of Channel.t -| CHANNEL_UPDATE of Channel.t -| CHANNEL_DELETE of Channel.t -| CHANNEL_PINS_UPDATE of Yojson.Basic.json -| GUILD_CREATE of Guild.t -| GUILD_UPDATE of Guild.t -| GUILD_DELETE of Guild.t -| GUILD_BAN_ADD of Ban.t -| GUILD_BAN_REMOVE of Ban.t -| GUILD_EMOJIS_UPDATE of Yojson.Basic.json -| GUILD_INTEGRATIONS_UPDATE of Yojson.Basic.json -| GUILD_MEMBER_ADD of Member.t -| GUILD_MEMBER_REMOVE of Member.t -| GUILD_MEMBER_UPDATE of Member.t -| GUILD_MEMBERS_CHUNK of Member.t list -| GUILD_ROLE_CREATE of Role.t * Guild.t -| GUILD_ROLE_UPDATE of Role.t * Guild.t -| GUILD_ROLE_DELETE of Role.t * Guild.t -| MESSAGE_CREATE of Message.t -| MESSAGE_UPDATE of Message.t -| MESSAGE_DELETE of Message.t -| MESSAGE_BULK_DELETE of Message.t list -| MESSAGE_REACTION_ADD of Message.t * Reaction.t -| MESSAGE_REACTION_REMOVE of Message.t * Reaction.t -| MESSAGE_REACTION_REMOVE_ALL of Message.t * Reaction.t list -| PRESENCE_UPDATE of Presence.t -| TYPING_START of Yojson.Basic.json -| USER_UPDATE of Yojson.Basic.json -| VOICE_STATE_UPDATE of Yojson.Basic.json -| VOICE_SERVER_UPDATE of Yojson.Basic.json -| WEBHOOKS_UPDATE of Yojson.Basic.json +module Make(H : S.Handler) = 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 + | CHANNEL_UPDATE of Channel.t + | CHANNEL_DELETE of Channel.t + | CHANNEL_PINS_UPDATE of Yojson.Safe.json + | GUILD_CREATE of Guild.t + | GUILD_UPDATE of Guild.t + | GUILD_DELETE of Guild.t + | GUILD_BAN_ADD of Ban.t + | GUILD_BAN_REMOVE of Ban.t + | GUILD_EMOJIS_UPDATE of Yojson.Safe.json + | GUILD_INTEGRATIONS_UPDATE of Yojson.Safe.json + | GUILD_MEMBER_ADD of Member.t + | GUILD_MEMBER_REMOVE of Member.t + | GUILD_MEMBER_UPDATE of Member.t + | GUILD_MEMBERS_CHUNK of Member.t list + | GUILD_ROLE_CREATE of Role.t (* * Guild.t *) + | GUILD_ROLE_UPDATE of Role.t (* * Guild.t *) + | GUILD_ROLE_DELETE of Role.t (* * Guild.t *) + | MESSAGE_CREATE of Message.t + | MESSAGE_UPDATE of Message.t + | MESSAGE_DELETE of Message.t + | MESSAGE_BULK_DELETE of Message.t list + | MESSAGE_REACTION_ADD of (* Message.t * *) Reaction.t + | MESSAGE_REACTION_REMOVE of (* Message.t * *) Reaction.t + | MESSAGE_REACTION_REMOVE_ALL of (* Message.t * *) Reaction.t list + | PRESENCE_UPDATE of Presence.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 contents + | "READY" -> READY contents + | "RESUMED" -> RESUMED contents + | "INVALID_SESSION" -> INVALID_SESSION contents + | "CHANNEL_CREATE" -> CHANNEL_CREATE (Channel.of_yojson_exn contents) + | "CHANNEL_UPDATE" -> CHANNEL_UPDATE (Channel.of_yojson_exn contents) + | "CHANNEL_DELETE" -> CHANNEL_DELETE (Channel.of_yojson_exn contents) + | "CHANNEL_PINS_UPDATE" -> CHANNEL_PINS_UPDATE contents + | "GUILD_CREATE" -> GUILD_CREATE (Guild.of_yojson_exn contents) + | "GUILD_UPDATE" -> GUILD_UPDATE (Guild.of_yojson_exn contents) + | "GUILD_DELETE" -> GUILD_DELETE (Guild.of_yojson_exn contents) + | "GUILD_BAN_ADD" -> GUILD_BAN_ADD (Ban.of_yojson_exn contents) + | "GUILD_BAN_REMOVE" -> GUILD_BAN_REMOVE (Ban.of_yojson_exn contents) + | "GUILD_EMOJIS_UPDATE" -> GUILD_EMOJIS_UPDATE contents + | "GUILD_INTEGRATIONS_UPDATE" -> GUILD_INTEGRATIONS_UPDATE contents + | "GUILD_MEMBER_ADD" -> GUILD_MEMBER_ADD (Member.of_yojson_exn contents) + | "GUILD_MEMBER_REMOVE" -> GUILD_MEMBER_REMOVE (Member.of_yojson_exn contents) + | "GUILD_MEMBER_UPDATE" -> GUILD_MEMBER_UPDATE (Member.of_yojson_exn contents) + | "GUILD_MEMBERS_CHUNK" -> GUILD_MEMBERS_CHUNK (Yojson.Safe.Util.to_list contents |> List.map ~f:(fun m -> Member.of_yojson_exn m)) + | "GUILD_ROLE_CREATE" -> GUILD_ROLE_CREATE (Role.of_yojson_exn contents) + | "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE (Role.of_yojson_exn contents) + | "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE (Role.of_yojson_exn contents) + | "MESSAGE_CREATE" -> MESSAGE_CREATE (Message.of_yojson_exn contents) + | "MESSAGE_UPDATE" -> MESSAGE_UPDATE (Message.of_yojson_exn contents) + | "MESSAGE_DELETE" -> MESSAGE_DELETE (Message.of_yojson_exn contents) + | "MESSAGE_BULK_DELETE" -> MESSAGE_BULK_DELETE (Yojson.Safe.Util.to_list contents |> List.map ~f:(fun m -> Message.of_yojson_exn m)) + | "MESSAGE_REACTION_ADD" -> MESSAGE_REACTION_ADD (Reaction.of_yojson_exn contents) + | "MESSAGE_REACTION_REMOVE" -> MESSAGE_REACTION_REMOVE (Reaction.of_yojson_exn contents) + | "MESSAGE_REACTION_REMOVE_ALL" -> MESSAGE_REACTION_REMOVE_ALL (Yojson.Safe.Util.to_list contents |> List.map ~f:(fun r -> Reaction.of_yojson_exn r)) + | "PRESENCE_UPDATE" -> PRESENCE_UPDATE (Presence.of_yojson_exn contents) + | "TYPING_START" -> TYPING_START contents + | "USER_UPDATE" -> USER_UPDATE contents + | "VOICE_STATE_UPDATE" -> VOICE_STATE_UPDATE contents + | "VOICE_SERVER_UPDATE" -> VOICE_SERVER_UPDATE contents + | "WEBHOOKS_UPDATE" -> WEBHOOKS_UPDATE contents + | s -> raise (Invalid_event s) + + let dispatch ~ev contents = + let ctx = () in + event_of_string ~contents ev + |> H.handle_event ctx +end \ No newline at end of file -- cgit v1.2.3 From c046760eb599e42226c683aecbe33753dfc4d500 Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Wed, 12 Dec 2018 15:23:14 -0700 Subject: Complete event dispatch --- lib/dispatch.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/dispatch.ml') diff --git a/lib/dispatch.ml b/lib/dispatch.ml index c75dc26..65c84ef 100644 --- a/lib/dispatch.ml +++ b/lib/dispatch.ml @@ -1,6 +1,6 @@ open Core -module Make(H : S.Handler) = struct +module Make(H : S.Handler) : S.Dispatch = struct type dispatch_event = | HELLO of Yojson.Safe.json | READY of Yojson.Safe.json -- cgit v1.2.3 From 73d115ce6260e97f5f7ee47f743d842ffd292662 Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Thu, 13 Dec 2018 14:11:54 -0700 Subject: Working on deriving types from json --- lib/dispatch.ml | 116 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 58 insertions(+), 58 deletions(-) (limited to 'lib/dispatch.ml') diff --git a/lib/dispatch.ml b/lib/dispatch.ml index 65c84ef..cb6e5d9 100644 --- a/lib/dispatch.ml +++ b/lib/dispatch.ml @@ -6,32 +6,32 @@ module Make(H : S.Handler) : S.Dispatch = struct | READY of Yojson.Safe.json | RESUMED of Yojson.Safe.json | INVALID_SESSION of Yojson.Safe.json - | CHANNEL_CREATE of Channel.t - | CHANNEL_UPDATE of Channel.t - | CHANNEL_DELETE of Channel.t + | 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 - | GUILD_UPDATE of Guild.t - | GUILD_DELETE of Guild.t - | GUILD_BAN_ADD of Ban.t - | GUILD_BAN_REMOVE of Ban.t + | 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 - | GUILD_MEMBER_REMOVE of Member.t - | GUILD_MEMBER_UPDATE of Member.t - | GUILD_MEMBERS_CHUNK of Member.t list - | GUILD_ROLE_CREATE of Role.t (* * Guild.t *) - | GUILD_ROLE_UPDATE of Role.t (* * Guild.t *) - | GUILD_ROLE_DELETE of Role.t (* * Guild.t *) - | MESSAGE_CREATE of Message.t - | MESSAGE_UPDATE of Message.t - | MESSAGE_DELETE of Message.t - | MESSAGE_BULK_DELETE of Message.t list - | MESSAGE_REACTION_ADD of (* Message.t * *) Reaction.t - | MESSAGE_REACTION_REMOVE of (* Message.t * *) Reaction.t - | MESSAGE_REACTION_REMOVE_ALL of (* Message.t * *) Reaction.t list - | PRESENCE_UPDATE of Presence.t + | 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 @@ -41,41 +41,41 @@ module Make(H : S.Handler) : S.Dispatch = struct exception Invalid_event of string let event_of_string ~contents t = match t with - | "HELLO" -> HELLO contents - | "READY" -> READY contents - | "RESUMED" -> RESUMED contents - | "INVALID_SESSION" -> INVALID_SESSION contents - | "CHANNEL_CREATE" -> CHANNEL_CREATE (Channel.of_yojson_exn contents) - | "CHANNEL_UPDATE" -> CHANNEL_UPDATE (Channel.of_yojson_exn contents) - | "CHANNEL_DELETE" -> CHANNEL_DELETE (Channel.of_yojson_exn contents) - | "CHANNEL_PINS_UPDATE" -> CHANNEL_PINS_UPDATE contents - | "GUILD_CREATE" -> GUILD_CREATE (Guild.of_yojson_exn contents) - | "GUILD_UPDATE" -> GUILD_UPDATE (Guild.of_yojson_exn contents) - | "GUILD_DELETE" -> GUILD_DELETE (Guild.of_yojson_exn contents) - | "GUILD_BAN_ADD" -> GUILD_BAN_ADD (Ban.of_yojson_exn contents) - | "GUILD_BAN_REMOVE" -> GUILD_BAN_REMOVE (Ban.of_yojson_exn contents) - | "GUILD_EMOJIS_UPDATE" -> GUILD_EMOJIS_UPDATE contents - | "GUILD_INTEGRATIONS_UPDATE" -> GUILD_INTEGRATIONS_UPDATE contents - | "GUILD_MEMBER_ADD" -> GUILD_MEMBER_ADD (Member.of_yojson_exn contents) - | "GUILD_MEMBER_REMOVE" -> GUILD_MEMBER_REMOVE (Member.of_yojson_exn contents) - | "GUILD_MEMBER_UPDATE" -> GUILD_MEMBER_UPDATE (Member.of_yojson_exn contents) - | "GUILD_MEMBERS_CHUNK" -> GUILD_MEMBERS_CHUNK (Yojson.Safe.Util.to_list contents |> List.map ~f:(fun m -> Member.of_yojson_exn m)) - | "GUILD_ROLE_CREATE" -> GUILD_ROLE_CREATE (Role.of_yojson_exn contents) - | "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE (Role.of_yojson_exn contents) - | "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE (Role.of_yojson_exn contents) - | "MESSAGE_CREATE" -> MESSAGE_CREATE (Message.of_yojson_exn contents) - | "MESSAGE_UPDATE" -> MESSAGE_UPDATE (Message.of_yojson_exn contents) - | "MESSAGE_DELETE" -> MESSAGE_DELETE (Message.of_yojson_exn contents) - | "MESSAGE_BULK_DELETE" -> MESSAGE_BULK_DELETE (Yojson.Safe.Util.to_list contents |> List.map ~f:(fun m -> Message.of_yojson_exn m)) - | "MESSAGE_REACTION_ADD" -> MESSAGE_REACTION_ADD (Reaction.of_yojson_exn contents) - | "MESSAGE_REACTION_REMOVE" -> MESSAGE_REACTION_REMOVE (Reaction.of_yojson_exn contents) - | "MESSAGE_REACTION_REMOVE_ALL" -> MESSAGE_REACTION_REMOVE_ALL (Yojson.Safe.Util.to_list contents |> List.map ~f:(fun r -> Reaction.of_yojson_exn r)) - | "PRESENCE_UPDATE" -> PRESENCE_UPDATE (Presence.of_yojson_exn contents) - | "TYPING_START" -> TYPING_START contents - | "USER_UPDATE" -> USER_UPDATE contents - | "VOICE_STATE_UPDATE" -> VOICE_STATE_UPDATE contents - | "VOICE_SERVER_UPDATE" -> VOICE_SERVER_UPDATE contents - | "WEBHOOKS_UPDATE" -> WEBHOOKS_UPDATE contents + | "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.Util.to_list contents |> List.map ~f:(fun m -> Member_j.t_of_string m)) *) + | "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.Util.to_list contents |> List.map ~f:(fun m -> Message_j.t_of_string m)) *) + | "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.Util.to_list contents |> List.map ~f:(fun r -> Reaction_j.t_of_string r)) *) + | "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 = -- cgit v1.2.3 From 179d9598fe62e2966471b312fd438e98ff3a272a Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Thu, 13 Dec 2018 15:50:37 -0700 Subject: Fix more dispatch issues --- lib/dispatch.ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/dispatch.ml') diff --git a/lib/dispatch.ml b/lib/dispatch.ml index cb6e5d9..a4341e1 100644 --- a/lib/dispatch.ml +++ b/lib/dispatch.ml @@ -59,17 +59,17 @@ module Make(H : S.Handler) : S.Dispatch = struct | "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.Util.to_list contents |> List.map ~f:(fun m -> Member_j.t_of_string m)) *) + | "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.Util.to_list contents |> List.map ~f:(fun m -> Message_j.t_of_string m)) *) + | "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.Util.to_list contents |> List.map ~f:(fun r -> Reaction_j.t_of_string r)) *) + | "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) -- 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/dispatch.ml | 85 ++------------------------------------------------------- 1 file changed, 3 insertions(+), 82 deletions(-) (limited to 'lib/dispatch.ml') 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 -- cgit v1.2.3