From 1a73007b3aaa17940173eaff1eb4f6703fd9ec0c Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Wed, 19 Dec 2018 13:44:04 -0700 Subject: Re-arrange autogen serialization files and incorporate into dune file --- lib/event.ml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'lib/event.ml') diff --git a/lib/event.ml b/lib/event.ml index 6e35c75..bbb0ebf 100644 --- a/lib/event.ml +++ b/lib/event.ml @@ -39,6 +39,12 @@ type t = exception Invalid_event of string +let wrap_role Role_t.{ id; role; } = + let open Role_t in + let guild_id = id in + let {id;name;colour;hoist;position;permissions;managed;mentionable} = role in + {id;name;colour;hoist;position;permissions;managed;mentionable;guild_id} + let event_of_string ~contents t = match t with | "HELLO" -> HELLO (Yojson.Safe.from_string contents) | "READY" -> READY (Yojson.Safe.from_string contents) @@ -59,9 +65,9 @@ let event_of_string ~contents t = match t with | "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) + | "GUILD_ROLE_CREATE" -> GUILD_ROLE_CREATE (Role_j.role_update_of_string contents |> wrap_role) + | "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE (Role_j.role_update_of_string contents |> wrap_role) + | "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE (Role_j.role_update_of_string contents |> wrap_role) | "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) -- cgit v1.2.3 From 9ed5707b63eadb17561fb8d23b0192c726398e6e Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Wed, 19 Dec 2018 15:10:57 -0700 Subject: Add proper type parsing to Guild --- lib/event.ml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'lib/event.ml') diff --git a/lib/event.ml b/lib/event.ml index bbb0ebf..988e017 100644 --- a/lib/event.ml +++ b/lib/event.ml @@ -39,11 +39,16 @@ type t = exception Invalid_event of string -let wrap_role Role_t.{ id; role; } = - let open Role_t in - let guild_id = id in - let {id;name;colour;hoist;position;permissions;managed;mentionable} = role in - {id;name;colour;hoist;position;permissions;managed;mentionable;guild_id} +let wrap_role_update Role_t.{ id; role; } = + let open Role_t in + let guild_id = id in + let {id;name;colour;hoist;position;permissions;managed;mentionable} = role in + {id;name;colour;hoist;position;permissions;managed;mentionable;guild_id} + +let wrap_role_with_id ~guild_id role = + let open Role_t in + let {id;name;colour;hoist;position;permissions;managed;mentionable} = role in + {id;name;colour;hoist;position;permissions;managed;mentionable;guild_id} let event_of_string ~contents t = match t with | "HELLO" -> HELLO (Yojson.Safe.from_string contents) @@ -65,9 +70,9 @@ let event_of_string ~contents t = match t with | "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.role_update_of_string contents |> wrap_role) - | "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE (Role_j.role_update_of_string contents |> wrap_role) - | "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE (Role_j.role_update_of_string contents |> wrap_role) + | "GUILD_ROLE_CREATE" -> GUILD_ROLE_CREATE (Role_j.role_update_of_string contents |> wrap_role_update) + | "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE (Role_j.role_update_of_string contents |> wrap_role_update) + | "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE (Role_j.role_update_of_string contents |> wrap_role_update) | "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) -- cgit v1.2.3 From 66e1462b8dd3f2b89cf066f314eeb9070b05be69 Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Wed, 19 Dec 2018 15:50:16 -0700 Subject: Fix member abstraction and helper methods --- lib/event.ml | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'lib/event.ml') diff --git a/lib/event.ml b/lib/event.ml index 988e017..6796ef5 100644 --- a/lib/event.ml +++ b/lib/event.ml @@ -39,16 +39,15 @@ type t = exception Invalid_event of string -let wrap_role_update Role_t.{ id; role; } = +let wrap_role ~guild_id role = let open Role_t in - let guild_id = id in let {id;name;colour;hoist;position;permissions;managed;mentionable} = role in {id;name;colour;hoist;position;permissions;managed;mentionable;guild_id} -let wrap_role_with_id ~guild_id role = - let open Role_t in - let {id;name;colour;hoist;position;permissions;managed;mentionable} = role in - {id;name;colour;hoist;position;permissions;managed;mentionable;guild_id} +let wrap_member ~guild_id member = + let open Member_t in + let {nick;roles;joined_at;deaf;mute;user} = member in + {nick;roles;joined_at;deaf;mute;user;guild_id} let event_of_string ~contents t = match t with | "HELLO" -> HELLO (Yojson.Safe.from_string contents) @@ -66,13 +65,13 @@ let event_of_string ~contents t = match t with | "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_MEMBER_ADD" -> GUILD_MEMBER_ADD (let Member_t.{guild_id;member} = Member_j.member_update_of_string contents in wrap_member ~guild_id member) + | "GUILD_MEMBER_REMOVE" -> GUILD_MEMBER_REMOVE (let Member_t.{guild_id;member} = Member_j.member_update_of_string contents in wrap_member ~guild_id member) + | "GUILD_MEMBER_UPDATE" -> GUILD_MEMBER_UPDATE (let Member_t.{guild_id;member} = Member_j.member_update_of_string contents in wrap_member ~guild_id member) | "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.role_update_of_string contents |> wrap_role_update) - | "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE (Role_j.role_update_of_string contents |> wrap_role_update) - | "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE (Role_j.role_update_of_string contents |> wrap_role_update) + | "GUILD_ROLE_CREATE" -> GUILD_ROLE_CREATE (let Role_t.{guild_id;role} = Role_j.role_update_of_string contents in wrap_role ~guild_id role) + | "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE (let Role_t.{guild_id;role} = Role_j.role_update_of_string contents in wrap_role ~guild_id role) + | "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE (let Role_t.{guild_id;role} = Role_j.role_update_of_string contents in wrap_role ~guild_id role) | "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) -- cgit v1.2.3 From 9e3c97eb4f5d8a808844cb2e448371ce1cc150e1 Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Thu, 20 Dec 2018 16:03:27 -0700 Subject: Working with Discord's channel bullshit --- lib/event.ml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'lib/event.ml') diff --git a/lib/event.ml b/lib/event.ml index 6796ef5..8e04fee 100644 --- a/lib/event.ml +++ b/lib/event.ml @@ -49,14 +49,24 @@ let wrap_member ~guild_id member = let {nick;roles;joined_at;deaf;mute;user} = member in {nick;roles;joined_at;deaf;mute;user;guild_id} +let wrap_channel s : Channel_t.t = + let module J = Yojson.Safe in + match J.(from_string s |> Util.member "kind" |> Util.to_int) with + | 0 -> `GuildText (Channel_j.guild_text_of_string s) + | 1 -> `Private (Channel_j.dm_of_string s) + | 2 -> `GuildVoice (Channel_j.guild_voice_of_string s) + | 3 -> `Group (Channel_j.group_of_string s) + | 4 -> `Category (Channel_j.category_of_string s) + | _ -> raise (Invalid_event s) + 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_CREATE" -> CHANNEL_CREATE (wrap_channel contents) + | "CHANNEL_UPDATE" -> CHANNEL_UPDATE (wrap_channel contents) + | "CHANNEL_DELETE" -> CHANNEL_DELETE (wrap_channel 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) -- cgit v1.2.3