aboutsummaryrefslogtreecommitdiff
path: root/lib/models
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2019-01-21 09:08:47 -0700
committerAdelyn Breelove <[email protected]>2019-01-21 09:08:47 -0700
commitb6ad18b9795428c39292c15c712c7ce0ec0986c6 (patch)
tree5113f4bb480815ee316e847cca954060afc419af /lib/models
parentfolder restructure (diff)
downloaddisml-b6ad18b9795428c39292c15c712c7ce0ec0986c6.tar.xz
disml-b6ad18b9795428c39292c15c712c7ce0ec0986c6.zip
finish making model signatures
Diffstat (limited to 'lib/models')
-rw-r--r--lib/models/channel/channel_t.mli89
-rw-r--r--lib/models/channel/message/message_t.mli43
-rw-r--r--lib/models/channel/message/reaction_t.mli12
-rw-r--r--lib/models/guild/ban_t.mli4
-rw-r--r--lib/models/guild/guild_t.mli59
-rw-r--r--lib/models/guild/member_t.mli40
-rw-r--r--lib/models/guild/role_t.mli29
-rw-r--r--lib/models/user/presence.mli8
-rw-r--r--lib/models/user/user_t.mli11
9 files changed, 295 insertions, 0 deletions
diff --git a/lib/models/channel/channel_t.mli b/lib/models/channel/channel_t.mli
new file mode 100644
index 0000000..2ac66fb
--- /dev/null
+++ b/lib/models/channel/channel_t.mli
@@ -0,0 +1,89 @@
+exception Invalid_channel of Yojson.Safe.json
+
+type group = {
+ id: Snowflake.t;
+ last_message_id: Snowflake.t option;
+ last_pin_timestamp: string option;
+ icon: string option;
+ name: string option;
+ owner_id: Snowflake.t;
+ recipients: User_t.t list;
+} [@@deriving sexp, yojson]
+
+type dm = {
+ id: Snowflake.t;
+ last_message_id: Snowflake.t option;
+ last_pin_timestamp: string option;
+} [@@deriving sexp, yojson]
+
+type guild_text = {
+ id: Snowflake.t;
+ last_message_id: Snowflake.t option;
+ last_pin_timestamp: string option;
+ category_id: Snowflake.t option;
+ guild_id: Snowflake.t option;
+ name: string;
+ position: int;
+ topic: string option;
+ nsfw: bool;
+ slow_mode_timeout: int option;
+} [@@deriving sexp, yojson]
+
+type guild_voice = {
+ id: Snowflake.t;
+ category_id: Snowflake.t option;
+ guild_id: Snowflake.t option;
+ name: string;
+ position: int;
+ user_limit: int;
+ bitrate: int option;
+} [@@deriving sexp, yojson]
+
+type category = {
+ id: Snowflake.t;
+ guild_id: Snowflake.t option;
+ position: int;
+ name: string;
+} [@@deriving sexp, yojson]
+
+type t =
+| Group of group
+| Private of dm
+| GuildText of guild_text
+| GuildVoice of guild_voice
+| Category of category
+[@@deriving sexp, yojson]
+
+type channel_wrapper = {
+ id: Snowflake.t;
+ kind: int;
+ guild_id: Snowflake.t option;
+ position: int option;
+ name: string option;
+ topic: string option;
+ nsfw: bool option;
+ last_message_id: Snowflake.t option;
+ bitrate: int option;
+ user_limit: int option;
+ slow_mode_timeout: int option;
+ recipients: User_t.t list option;
+ icon: string option;
+ owner_id: Snowflake.t option;
+ application_id: Snowflake.t option;
+ category_id: Snowflake.t option;
+ last_pin_timestamp: string option;
+} [@@deriving sexp, yojson]
+
+val unwrap_as_guild_text : channel_wrapper -> guild_text
+
+val unwrap_as_guild_voice : channel_wrapper -> guild_voice
+
+val unwrap_as_dm : channel_wrapper -> dm
+
+val unwrap_as_group : channel_wrapper -> group
+
+val unwrap_as_category : channel_wrapper -> category
+
+val wrap : channel_wrapper -> t
+
+val get_id : t -> Snowflake.t \ No newline at end of file
diff --git a/lib/models/channel/message/message_t.mli b/lib/models/channel/message/message_t.mli
new file mode 100644
index 0000000..20360e8
--- /dev/null
+++ b/lib/models/channel/message/message_t.mli
@@ -0,0 +1,43 @@
+type message_update = {
+ id: Snowflake.t;
+ author: User_t.t option;
+ channel_id: Snowflake.t;
+ member: Member_t.partial_member option;
+ guild_id: Snowflake.t option;
+ content: string option;
+ timestamp: string option;
+ editedimestamp: string option;
+ tts: bool option;
+ mention_everyone: bool option;
+ mentions: Snowflake.t list;
+ role_mentions: Snowflake.t list;
+ attachments: Attachment.t list;
+ embeds: Embed.t list;
+ reactions: Snowflake.t list;
+ nonce: Snowflake.t option;
+ pinned: bool option;
+ webhook_id: Snowflake.t option;
+ kind: int option;
+} [@@deriving sexp, yojson]
+
+type t = {
+ id: Snowflake.t;
+ author: User_t.t;
+ channel_id: Snowflake.t;
+ member: Member_t.partial_member option;
+ guild_id: Snowflake.t option;
+ content: string;
+ timestamp: string;
+ editedimestamp: string option;
+ tts: bool;
+ mention_everyone: bool;
+ (* mentions: Snowflake.t list; *)
+ (* role_mentions: Snowflake.t list; *)
+ attachments: Attachment.t list;
+ embeds: Embed.t list;
+ reactions: Snowflake.t list;
+ nonce: Snowflake.t option;
+ pinned: bool;
+ webhook_id: Snowflake.t option;
+ kind: int;
+} [@@deriving sexp, yojson] \ No newline at end of file
diff --git a/lib/models/channel/message/reaction_t.mli b/lib/models/channel/message/reaction_t.mli
new file mode 100644
index 0000000..5bdd275
--- /dev/null
+++ b/lib/models/channel/message/reaction_t.mli
@@ -0,0 +1,12 @@
+type reaction_event = {
+ user_id: Snowflake.t;
+ channel_id: Snowflake.t;
+ message_id: Snowflake.t;
+ guild_id: Snowflake.t option;
+ emoji: Emoji.partial_emoji;
+} [@@deriving sexp, yojson]
+
+type t = {
+ count: int;
+ emoji: Emoji.t;
+} [@@deriving sexp, yojson] \ No newline at end of file
diff --git a/lib/models/guild/ban_t.mli b/lib/models/guild/ban_t.mli
new file mode 100644
index 0000000..95fb274
--- /dev/null
+++ b/lib/models/guild/ban_t.mli
@@ -0,0 +1,4 @@
+type t = {
+ reason: string;
+ user: User_t.t;
+} [@@deriving sexp, yojson] \ No newline at end of file
diff --git a/lib/models/guild/guild_t.mli b/lib/models/guild/guild_t.mli
new file mode 100644
index 0000000..6d9e4d3
--- /dev/null
+++ b/lib/models/guild/guild_t.mli
@@ -0,0 +1,59 @@
+type pre = {
+ id: Snowflake.t;
+ name: string;
+ icon: string option;
+ splash: string option;
+ owner_id: Snowflake.t;
+ region: string;
+ afk_channel_id: Snowflake.t option;
+ afk_timeout: int;
+ embed_enabled: bool option;
+ embed_channel_id: Snowflake.t option;
+ verification_level: int;
+ default_message_notifications: int;
+ explicit_content_filter: int;
+ roles: Role_t.role list;
+ emojis: Emoji.t list;
+ features: string list;
+ mfa_level: int;
+ application_id: Snowflake.t option;
+ widget_enabled: bool option;
+ widget_channel: Channel_t.channel_wrapper option;
+ system_channel: Channel_t.channel_wrapper option;
+ large: bool;
+ unavailable: bool;
+ member_count: int option;
+ members: Member_t.member list;
+ channels: Channel_t.channel_wrapper list;
+} [@@deriving sexp, yojson]
+
+type t = {
+ id: Snowflake.t;
+ name: string;
+ icon: string option;
+ splash: string option;
+ owner_id: Snowflake.t;
+ region: string;
+ afk_channel_id: Snowflake.t option;
+ afk_timeout: int;
+ embed_enabled: bool option;
+ embed_channel_id: Snowflake.t option;
+ verification_level: int;
+ default_message_notifications: int;
+ explicit_content_filter: int;
+ roles: Role_t.t list;
+ emojis: Emoji.t list;
+ features: string list;
+ mfa_level: int;
+ application_id: Snowflake.t option;
+ widget_enabled: bool option;
+ widget_channel: Channel_t.t option;
+ system_channel: Channel_t.t option;
+ large: bool;
+ unavailable: bool;
+ member_count: int option;
+ members: Member_t.t list;
+ channels: Channel_t.t list;
+} [@@deriving sexp, yojson]
+
+val wrap : pre -> t \ No newline at end of file
diff --git a/lib/models/guild/member_t.mli b/lib/models/guild/member_t.mli
new file mode 100644
index 0000000..4655b33
--- /dev/null
+++ b/lib/models/guild/member_t.mli
@@ -0,0 +1,40 @@
+type partial_member = {
+ nick: string option;
+ roles: Snowflake.t list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool;
+} [@@deriving sexp, yojson]
+
+type member = {
+ nick: string option;
+ roles: Snowflake.t list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool;
+ user: User_t.t;
+} [@@deriving sexp, yojson]
+
+type member_wrapper = {
+ guild_id: Snowflake.t;
+ user: User_t.t;
+} [@@deriving sexp, yojson]
+
+type member_update = {
+ guild_id: Snowflake.t;
+ roles: Snowflake.t list;
+ user: User_t.t;
+ nick: string option;
+} [@@deriving sexp, yojson]
+
+type t = {
+ nick: string option;
+ roles: Snowflake.t list;
+ joined_at: string;
+ deaf: bool;
+ mute: bool;
+ user: User_t.t;
+ guild_id: Snowflake.t;
+} [@@deriving sexp, yojson]
+
+val wrap : guild_id:Snowflake.t -> member -> t \ No newline at end of file
diff --git a/lib/models/guild/role_t.mli b/lib/models/guild/role_t.mli
new file mode 100644
index 0000000..dd344e1
--- /dev/null
+++ b/lib/models/guild/role_t.mli
@@ -0,0 +1,29 @@
+type role = {
+ id: Snowflake.t;
+ name: string;
+ colour: int;
+ hoist: bool;
+ position: int;
+ permissions: int;
+ managed: bool;
+ mentionable: bool;
+} [@@deriving sexp, yojson]
+
+type role_update = {
+ role: role;
+ guild_id: Snowflake.t;
+} [@@deriving sexp, yojson]
+
+type t = {
+ id: Snowflake.t;
+ name: string;
+ colour: int;
+ hoist: bool;
+ position: int;
+ permissions: int;
+ managed: bool;
+ mentionable: bool;
+ guild_id: Snowflake.t;
+} [@@deriving sexp, yojson]
+
+val wrap : guild_id:Snowflake.t -> role -> t \ No newline at end of file
diff --git a/lib/models/user/presence.mli b/lib/models/user/presence.mli
new file mode 100644
index 0000000..0582f66
--- /dev/null
+++ b/lib/models/user/presence.mli
@@ -0,0 +1,8 @@
+type t = {
+ user: User_t.partial_user;
+ roles: Snowflake.t list;
+ game: Activity.t option;
+ guild_id: Snowflake.t;
+ status: string;
+ activities: Activity.t list;
+} [@@deriving sexp, yojson] \ No newline at end of file
diff --git a/lib/models/user/user_t.mli b/lib/models/user/user_t.mli
new file mode 100644
index 0000000..50e9059
--- /dev/null
+++ b/lib/models/user/user_t.mli
@@ -0,0 +1,11 @@
+type partial_user = {
+ id: Snowflake.t;
+} [@@deriving sexp, yojson]
+
+type t = {
+ id: Snowflake.t;
+ username: string;
+ discriminator: string;
+ avatar: string option;
+ bot: bool;
+} [@@deriving sexp, yojson] \ No newline at end of file