diff options
| author | Adelyn Breedlove <[email protected]> | 2019-01-13 16:51:04 -0700 |
|---|---|---|
| committer | Adelyn Breedlove <[email protected]> | 2019-01-13 16:51:04 -0700 |
| commit | c5bfc108ca6a1e7a21492b4318de78a74ed801f9 (patch) | |
| tree | 191164d198c07cf388d9aae8a54013e5613c272c | |
| parent | More deserialization fixes (diff) | |
| download | disml-c5bfc108ca6a1e7a21492b4318de78a74ed801f9.tar.xz disml-c5bfc108ca6a1e7a21492b4318de78a74ed801f9.zip | |
Add deriving sexp to models
| -rw-r--r-- | bin/handler.ml | 73 | ||||
| -rw-r--r-- | lib/models/activity.ml | 4 | ||||
| -rw-r--r-- | lib/models/attachment.ml | 4 | ||||
| -rw-r--r-- | lib/models/ban_t.ml | 4 | ||||
| -rw-r--r-- | lib/models/channel_t.ml | 14 | ||||
| -rw-r--r-- | lib/models/embed.ml | 16 | ||||
| -rw-r--r-- | lib/models/emoji.ml | 6 | ||||
| -rw-r--r-- | lib/models/guild_t.ml | 4 | ||||
| -rw-r--r-- | lib/models/member_t.ml | 12 | ||||
| -rw-r--r-- | lib/models/message_t.ml | 6 | ||||
| -rw-r--r-- | lib/models/presence.ml | 4 | ||||
| -rw-r--r-- | lib/models/reaction_t.ml | 6 | ||||
| -rw-r--r-- | lib/models/role_t.ml | 8 | ||||
| -rw-r--r-- | lib/models/snowflake.ml | 2 | ||||
| -rw-r--r-- | lib/models/user_t.ml | 6 |
15 files changed, 96 insertions, 73 deletions
diff --git a/bin/handler.ml b/bin/handler.ml index 43d908e..5afbbee 100644 --- a/bin/handler.ml +++ b/bin/handler.ml @@ -8,7 +8,8 @@ module Make(Models : Disml.S.Models) = struct if String.is_prefix ~prefix:"!ping" msg.content then Message.reply msg "Pong!" >>> ignore else if String.is_prefix ~prefix:"!spam" msg.content then - List.range 0 20 + let count = String.chop_prefix_exn ~prefix:"!spam" msg.content |> String.strip |> Int.of_string in + List.range 0 count |> List.iter ~f:(fun i -> Message.reply msg (string_of_int i) >>> ignore) else if String.is_prefix ~prefix:"!list" msg.content then let count = String.chop_prefix_exn ~prefix:"!list" msg.content |> String.strip |> Int.of_string in @@ -24,39 +25,39 @@ module Make(Models : Disml.S.Models) = struct Message.reply msg list >>> ignore let handle_event = function - | HELLO _ -> print_endline "Received HELLO" - | READY _ -> print_endline "Received READY" - | RESUMED _ -> print_endline "Received RESUMED" - | INVALID_SESSION _ -> print_endline "Received INVALID_SESSION" - | CHANNEL_CREATE _ -> print_endline "Received CHANNEL_CREATE" - | CHANNEL_UPDATE _ -> print_endline "Received CHANNEL_UPDATE" - | CHANNEL_DELETE _ -> print_endline "Received CHANNEL_DELETE" - | CHANNEL_PINS_UPDATE _ -> print_endline "Received CHANNEL_PINS_UPDATE" - | GUILD_CREATE _ -> print_endline "Received GUILD_CREATE" - | GUILD_UPDATE _ -> print_endline "Received GUILD_UPDATE" - | GUILD_DELETE _ -> print_endline "Received GUILD_DELETE" - | GUILD_BAN_ADD _ -> print_endline "Received GUILD_BAN_ADD" - | GUILD_BAN_REMOVE _ -> print_endline "Received GUILD_BAN_REMOVE" - | GUILD_EMOJIS_UPDATE _ -> print_endline "Received GUILD_EMOJIS_UPDATE" - | GUILD_INTEGRATIONS_UPDATE _ -> print_endline "Received GUILD_INTEGRATIONS_UPDATE" - | GUILD_MEMBER_ADD _ -> print_endline "Received GUILD_MEMBER_ADD" - | GUILD_MEMBER_REMOVE _ -> print_endline "Received GUILD_MEMBER_REMOVE" - | GUILD_MEMBER_UPDATE _ -> print_endline "Received GUILD_MEMBER_UPDATE" - | GUILD_MEMBERS_CHUNK _ -> print_endline "Received GUILD_MEMBERS_CHUNK" - | GUILD_ROLE_CREATE _ -> print_endline "Received GUILD_ROLE_CREATE" - | GUILD_ROLE_UPDATE _ -> print_endline "Received GUILD_ROLE_UPDATE" - | GUILD_ROLE_DELETE _ -> print_endline "Received GUILD_ROLE_DELETE" - | MESSAGE_CREATE msg -> check_command msg; print_endline "Received MESSAGE_CREATE" - | MESSAGE_UPDATE _ -> print_endline "Received MESSAGE_UPDATE" - | MESSAGE_DELETE _ -> print_endline "Received MESSAGE_DELETE" - | MESSAGE_BULK_DELETE _ -> print_endline "Received MESSAGE_BULK_DELETE" - | MESSAGE_REACTION_ADD _ -> print_endline "Received MESSAGE_REACTION_ADD" - | MESSAGE_REACTION_REMOVE _ -> print_endline "Received MESSAGE_REACTION_REMOVE" - | MESSAGE_REACTION_REMOVE_ALL _ -> print_endline "Received MESSAGE_REACTION_REMOVE_ALL" - | PRESENCE_UPDATE _ -> print_endline "Received PRESENCE_UPDATE" - | TYPING_START _ -> print_endline "Received TYPING_START" - | USER_UPDATE _ -> print_endline "Received USER_UPDATE" - | VOICE_STATE_UPDATE _ -> print_endline "Received VOICE_STATE_UPDATE" - | VOICE_SERVER_UPDATE _ -> print_endline "Received VOICE_SERVER_UPDATE" + | HELLO _ -> print_endline "Received HELLO" + | READY _ -> print_endline "Received READY" + | RESUMED _ -> print_endline "Received RESUMED" + | INVALID_SESSION _ -> print_endline "Received INVALID_SESSION" + | CHANNEL_CREATE _ -> print_endline "Received CHANNEL_CREATE" + | CHANNEL_UPDATE _ -> print_endline "Received CHANNEL_UPDATE" + | CHANNEL_DELETE _ -> print_endline "Received CHANNEL_DELETE" + | CHANNEL_PINS_UPDATE _ -> print_endline "Received CHANNEL_PINS_UPDATE" + | GUILD_CREATE _ -> print_endline "Received GUILD_CREATE" + | GUILD_UPDATE _ -> print_endline "Received GUILD_UPDATE" + | GUILD_DELETE _ -> print_endline "Received GUILD_DELETE" + | GUILD_BAN_ADD _ -> print_endline "Received GUILD_BAN_ADD" + | GUILD_BAN_REMOVE _ -> print_endline "Received GUILD_BAN_REMOVE" + | GUILD_EMOJIS_UPDATE _ -> print_endline "Received GUILD_EMOJIS_UPDATE" + | GUILD_INTEGRATIONS_UPDATE _ -> print_endline "Received GUILD_INTEGRATIONS_UPDATE" + | GUILD_MEMBER_ADD _ -> print_endline "Received GUILD_MEMBER_ADD" + | GUILD_MEMBER_REMOVE _ -> print_endline "Received GUILD_MEMBER_REMOVE" + | GUILD_MEMBER_UPDATE _ -> print_endline "Received GUILD_MEMBER_UPDATE" + | GUILD_MEMBERS_CHUNK _ -> print_endline "Received GUILD_MEMBERS_CHUNK" + | GUILD_ROLE_CREATE _ -> print_endline "Received GUILD_ROLE_CREATE" + | GUILD_ROLE_UPDATE _ -> print_endline "Received GUILD_ROLE_UPDATE" + | GUILD_ROLE_DELETE _ -> print_endline "Received GUILD_ROLE_DELETE" + | MESSAGE_CREATE msg -> check_command msg; print_endline "Received MESSAGE_CREATE" + | MESSAGE_UPDATE _ -> print_endline "Received MESSAGE_UPDATE" + | MESSAGE_DELETE _ -> print_endline "Received MESSAGE_DELETE" + | MESSAGE_BULK_DELETE _ -> print_endline "Received MESSAGE_BULK_DELETE" + | MESSAGE_REACTION_ADD _ -> print_endline "Received MESSAGE_REACTION_ADD" + | MESSAGE_REACTION_REMOVE _ -> print_endline "Received MESSAGE_REACTION_REMOVE" + | MESSAGE_REACTION_REMOVE_ALL _ -> print_endline "Received MESSAGE_REACTION_REMOVE_ALL" + | PRESENCE_UPDATE _ -> print_endline "Received PRESENCE_UPDATE" + | TYPING_START _ -> print_endline "Received TYPING_START" + | USER_UPDATE _ -> print_endline "Received USER_UPDATE" + | VOICE_STATE_UPDATE _ -> print_endline "Received VOICE_STATE_UPDATE" + | VOICE_SERVER_UPDATE _ -> print_endline "Received VOICE_SERVER_UPDATE" | WEBHOOKS_UPDATE _ -> print_endline "Received WEBHOOKS_UPDATE" -end
\ No newline at end of file +end diff --git a/lib/models/activity.ml b/lib/models/activity.ml index 6193ce9..8e6ff80 100644 --- a/lib/models/activity.ml +++ b/lib/models/activity.ml @@ -1,5 +1,7 @@ +open Core + type t = { name: string; kind: int [@key "type"]; url: string [@default ""]; -} [@@deriving yojson { strict = false}]
\ No newline at end of file +} [@@deriving sexp, yojson { strict = false}]
\ No newline at end of file diff --git a/lib/models/attachment.ml b/lib/models/attachment.ml index 5f17a16..c56b389 100644 --- a/lib/models/attachment.ml +++ b/lib/models/attachment.ml @@ -1,3 +1,5 @@ +open Core + type t = { id: Snowflake.t; filename: string; @@ -6,4 +8,4 @@ type t = { proxy_url: string; height: int [@default -1]; width: int [@default -1]; -} [@@deriving yojson { strict = false}]
\ No newline at end of file +} [@@deriving sexp, yojson { strict = false}]
\ No newline at end of file diff --git a/lib/models/ban_t.ml b/lib/models/ban_t.ml index 640db34..b49eefc 100644 --- a/lib/models/ban_t.ml +++ b/lib/models/ban_t.ml @@ -1,4 +1,6 @@ +open Core + type t = { reason: string [@default ""]; user: User_t.t; -} [@@deriving yojson { strict = false}]
\ No newline at end of file +} [@@deriving sexp, yojson { strict = false}]
\ No newline at end of file diff --git a/lib/models/channel_t.ml b/lib/models/channel_t.ml index 2fd2e5a..dce1d54 100644 --- a/lib/models/channel_t.ml +++ b/lib/models/channel_t.ml @@ -10,13 +10,13 @@ type group = { name: string option [@default None]; owner_id: Snowflake.t; recipients: User_t.t list [@default []]; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type dm = { id: Snowflake.t; last_message_id: Snowflake.t option [@default None]; last_pin_timestamp: string option [@default None]; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type guild_text = { id: Snowflake.t; @@ -29,7 +29,7 @@ type guild_text = { topic: string option [@default None]; nsfw: bool; slow_mode_timeout: int option [@default None]; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type guild_voice = { id: Snowflake.t; @@ -39,14 +39,14 @@ type guild_voice = { position: int; user_limit: int [@default -1]; bitrate: int option [@default None]; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type category = { id: Snowflake.t; guild_id: Snowflake.t option [@default None]; position: int; name: string; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type t = | Group of group @@ -54,7 +54,7 @@ type t = | GuildText of guild_text | GuildVoice of guild_voice | Category of category -[@@deriving yojson { strict = false}] +[@@deriving sexp, yojson { strict = false}] type channel_wrapper = { id: Snowflake.t; @@ -74,7 +74,7 @@ type channel_wrapper = { application_id: Snowflake.t option [@default None]; category_id: Snowflake.t option [@default None][@key "parent_id"]; last_pin_timestamp: string option [@default None]; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] let unwrap_as_guild_text {id;guild_id;position;name;topic;nsfw;last_message_id;slow_mode_timeout;category_id;last_pin_timestamp;_} = let position = Option.value_exn position in diff --git a/lib/models/embed.ml b/lib/models/embed.ml index 627d617..4faaba7 100644 --- a/lib/models/embed.ml +++ b/lib/models/embed.ml @@ -1,39 +1,41 @@ +open Core + type footer = { text: string; icon_url: string option [@default None]; proxy_icon_url: string option [@default None]; -} [@@deriving yojson] +} [@@deriving sexp, yojson] type image = { url: string option [@default None]; proxy_url: string option [@default None]; height: int option [@default None]; width: int option [@default None]; -} [@@deriving yojson] +} [@@deriving sexp, yojson] type video = { url: string option [@default None]; height: int option [@default None]; width: int option [@default None]; -} [@@deriving yojson] +} [@@deriving sexp, yojson] type provider = { name: string option [@default None]; url: string option [@default None]; -} [@@deriving yojson] +} [@@deriving sexp, yojson] type author = { name: string option [@default None]; url: string option [@default None]; icon_url: string option [@default None]; proxy_icon_url: string option [@default None]; -} [@@deriving yojson] +} [@@deriving sexp, yojson] type field = { name: string; value: string; inline: bool [@default true]; -} [@@deriving yojson] +} [@@deriving sexp, yojson] type t = { title: string option [@default None]; @@ -49,4 +51,4 @@ type t = { provider: provider option [@default None]; author: author option [@default None]; fields: field list [@default []]; -} [@@deriving yojson { strict = false }]
\ No newline at end of file +} [@@deriving sexp, yojson { strict = false }]
\ No newline at end of file diff --git a/lib/models/emoji.ml b/lib/models/emoji.ml index 62e5bd7..2b7cf1d 100644 --- a/lib/models/emoji.ml +++ b/lib/models/emoji.ml @@ -1,7 +1,9 @@ +open Core + type partial_emoji = { id: Snowflake.t option [@default None]; name: string; -} [@@deriving yojson { strict = false }] +} [@@deriving sexp, yojson { strict = false }] type t = { id: Snowflake.t option [@default None]; @@ -11,4 +13,4 @@ type t = { require_colons: bool option [@default None]; managed: bool option [@default None]; animated: bool option [@default None]; -} [@@deriving yojson { strict = false}]
\ No newline at end of file +} [@@deriving sexp, yojson { strict = false}]
\ No newline at end of file diff --git a/lib/models/guild_t.ml b/lib/models/guild_t.ml index 5183fc7..6bb5090 100644 --- a/lib/models/guild_t.ml +++ b/lib/models/guild_t.ml @@ -27,7 +27,7 @@ type pre = { member_count: int option [@default None]; members: Member_t.member list; channels: Channel_t.channel_wrapper list; -} [@@deriving yojson { strict = false }] +} [@@deriving sexp, yojson { strict = false }] type t = { id: Snowflake.t; @@ -56,7 +56,7 @@ type t = { member_count: int option [@default None]; members: Member_t.t list; channels: Channel_t.t list; -} [@@deriving yojson { strict = false }] +} [@@deriving sexp, yojson { strict = false }] let wrap ({id;name;icon;splash;owner_id;region;afk_channel_id;afk_timeout;embed_enabled;embed_channel_id;verification_level;default_message_notifications;explicit_content_filter;roles;emojis;features;mfa_level;application_id;widget_enabled;widget_channel;system_channel;large;unavailable;member_count;members;channels}:pre) = let roles = List.map ~f:(Role_t.wrap ~guild_id:id) roles in diff --git a/lib/models/member_t.ml b/lib/models/member_t.ml index ca39092..e6edb61 100644 --- a/lib/models/member_t.ml +++ b/lib/models/member_t.ml @@ -1,10 +1,12 @@ +open Core + type partial_member = { nick: string option [@default None]; roles: Snowflake.t list; joined_at: string; deaf: bool; mute: bool; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type member = { nick: string option [@default None]; @@ -13,19 +15,19 @@ type member = { deaf: bool; mute: bool; user: User_t.t; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type member_wrapper = { guild_id: Snowflake.t; user: User_t.t; -} [@@deriving yojson { strict = false }] +} [@@deriving sexp, yojson { strict = false }] type member_update = { guild_id: Snowflake.t; roles: Snowflake.t list [@default []]; user: User_t.t; nick: string option [@default None]; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type t = { nick: string option [@default None]; @@ -35,7 +37,7 @@ type t = { mute: bool; user: User_t.t; guild_id: Snowflake.t; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] let wrap ~guild_id ({nick;roles;joined_at;deaf;mute;user}:member) = {nick;roles;joined_at;deaf;mute;user;guild_id}
\ No newline at end of file diff --git a/lib/models/message_t.ml b/lib/models/message_t.ml index f793223..c4253d5 100644 --- a/lib/models/message_t.ml +++ b/lib/models/message_t.ml @@ -1,3 +1,5 @@ +open Core + type message_update = { id: Snowflake.t; author: User_t.t option [@default None]; @@ -18,7 +20,7 @@ type message_update = { pinned: bool option [@default None]; webhook_id: Snowflake.t option [@default None]; kind: int option [@default None][@key "type"]; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type t = { id: Snowflake.t; @@ -40,4 +42,4 @@ type t = { pinned: bool; webhook_id: Snowflake.t option [@default None]; kind: int [@key "type"]; -} [@@deriving yojson { strict = false}]
\ No newline at end of file +} [@@deriving sexp, yojson { strict = false}]
\ No newline at end of file diff --git a/lib/models/presence.ml b/lib/models/presence.ml index 955a930..ab245a7 100644 --- a/lib/models/presence.ml +++ b/lib/models/presence.ml @@ -1,3 +1,5 @@ +open Core + type t = { user: User_t.partial_user; roles: Snowflake.t list; @@ -5,4 +7,4 @@ type t = { guild_id: Snowflake.t; status: string; activities: Activity.t list; -} [@@deriving yojson { strict = false}]
\ No newline at end of file +} [@@deriving sexp, yojson { strict = false}]
\ No newline at end of file diff --git a/lib/models/reaction_t.ml b/lib/models/reaction_t.ml index 2e9aad5..c382b68 100644 --- a/lib/models/reaction_t.ml +++ b/lib/models/reaction_t.ml @@ -1,12 +1,14 @@ +open Core + type reaction_event = { user_id: Snowflake.t; channel_id: Snowflake.t; message_id: Snowflake.t; guild_id: Snowflake.t option [@default None]; emoji: Emoji.partial_emoji; -} [@@deriving yojson] +} [@@deriving sexp, yojson] type t = { count: int; emoji: Emoji.t; -} [@@deriving yojson { strict = false}]
\ No newline at end of file +} [@@deriving sexp, yojson { strict = false}]
\ No newline at end of file diff --git a/lib/models/role_t.ml b/lib/models/role_t.ml index ae54f7a..e41f31d 100644 --- a/lib/models/role_t.ml +++ b/lib/models/role_t.ml @@ -1,3 +1,5 @@ +open Core + type role = { id: Snowflake.t; name: string; @@ -7,12 +9,12 @@ type role = { permissions: int; managed: bool; mentionable: bool; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type role_update = { role: role; guild_id: Snowflake.t; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type t = { id: Snowflake.t; @@ -24,7 +26,7 @@ type t = { managed: bool; mentionable: bool; guild_id: Snowflake.t; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] let wrap ~guild_id ({id;name;colour;hoist;position;permissions;managed;mentionable}:role) = {id;name;colour;hoist;position;permissions;managed;mentionable;guild_id}
\ No newline at end of file diff --git a/lib/models/snowflake.ml b/lib/models/snowflake.ml index 21846fc..0122da8 100644 --- a/lib/models/snowflake.ml +++ b/lib/models/snowflake.ml @@ -1,6 +1,6 @@ open Core -type t = int +type t = Int.t [@@deriving sexp] let of_yojson_exn d = Yojson.Safe.Util.to_string d |> Int.of_string diff --git a/lib/models/user_t.ml b/lib/models/user_t.ml index 9980f43..52dbaf4 100644 --- a/lib/models/user_t.ml +++ b/lib/models/user_t.ml @@ -1,6 +1,8 @@ +open Core + type partial_user = { id: Snowflake.t; -} [@@deriving yojson { strict = false}] +} [@@deriving sexp, yojson { strict = false}] type t = { id: Snowflake.t; @@ -8,4 +10,4 @@ type t = { discriminator: string; avatar: string option [@default None]; bot: bool [@default false]; -} [@@deriving yojson { strict = false }]
\ No newline at end of file +} [@@deriving sexp, yojson { strict = false }]
\ No newline at end of file |