aboutsummaryrefslogtreecommitdiff
path: root/lib/models
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2019-01-11 12:44:22 -0700
committerAdelyn Breelove <[email protected]>2019-01-11 12:44:22 -0700
commitcba1fa3ab1b085600f3a73dae62682d21d112afb (patch)
tree89ef10a59d8a355356561e564f23777b4a8f66bf /lib/models
parentFix some deserializing bits (diff)
downloaddisml-cba1fa3ab1b085600f3a73dae62682d21d112afb.tar.xz
disml-cba1fa3ab1b085600f3a73dae62682d21d112afb.zip
More deserialization fixes
Diffstat (limited to 'lib/models')
-rw-r--r--lib/models/embed.ml14
-rw-r--r--lib/models/emoji.ml5
-rw-r--r--lib/models/member_t.ml11
-rw-r--r--lib/models/message_t.ml30
-rw-r--r--lib/models/reaction_t.ml8
-rw-r--r--lib/models/snowflake.ml4
6 files changed, 61 insertions, 11 deletions
diff --git a/lib/models/embed.ml b/lib/models/embed.ml
index 789e959..627d617 100644
--- a/lib/models/embed.ml
+++ b/lib/models/embed.ml
@@ -22,15 +22,22 @@ type provider = {
url: string option [@default None];
} [@@deriving 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]
+
type field = {
name: string;
value: string;
- inline: bool option [@default None];
+ inline: bool [@default true];
} [@@deriving yojson]
type t = {
title: string option [@default None];
- kind: string option [@default None];
+ kind: string option [@default None][@key "type"];
description: string option [@default None];
url: string option [@default None];
timestamp: string option [@default None];
@@ -40,5 +47,6 @@ type t = {
thumbnail: image option [@default None];
video: video option [@default None];
provider: provider option [@default None];
+ author: author option [@default None];
fields: field list [@default []];
-} [@@deriving yojson] \ No newline at end of file
+} [@@deriving yojson { strict = false }] \ No newline at end of file
diff --git a/lib/models/emoji.ml b/lib/models/emoji.ml
index dccdb54..62e5bd7 100644
--- a/lib/models/emoji.ml
+++ b/lib/models/emoji.ml
@@ -1,3 +1,8 @@
+type partial_emoji = {
+ id: Snowflake.t option [@default None];
+ name: string;
+} [@@deriving yojson { strict = false }]
+
type t = {
id: Snowflake.t option [@default None];
name: string;
diff --git a/lib/models/member_t.ml b/lib/models/member_t.ml
index 4132a20..ca39092 100644
--- a/lib/models/member_t.ml
+++ b/lib/models/member_t.ml
@@ -15,9 +15,16 @@ type member = {
user: User_t.t;
} [@@deriving yojson { strict = false}]
+type member_wrapper = {
+ guild_id: Snowflake.t;
+ user: User_t.t;
+} [@@deriving yojson { strict = false }]
+
type member_update = {
- guild_id: Snowflake.t [@key "id"];
- member: member;
+ guild_id: Snowflake.t;
+ roles: Snowflake.t list [@default []];
+ user: User_t.t;
+ nick: string option [@default None];
} [@@deriving yojson { strict = false}]
type t = {
diff --git a/lib/models/message_t.ml b/lib/models/message_t.ml
index b8aa204..f793223 100644
--- a/lib/models/message_t.ml
+++ b/lib/models/message_t.ml
@@ -1,3 +1,25 @@
+type message_update = {
+ id: Snowflake.t;
+ author: User_t.t option [@default None];
+ channel_id: Snowflake.t;
+ member: Member_t.partial_member option [@default None];
+ guild_id: Snowflake.t option [@default None];
+ content: string option [@default None];
+ timestamp: string option [@default None];
+ editedimestamp: string option [@default None];
+ tts: bool option [@default None];
+ mention_everyone: bool option [@default None];
+ mentions: Snowflake.t list [@default []];
+ role_mentions: Snowflake.t list [@default []];
+ attachments: Attachment.t list [@default []];
+ embeds: Embed.t list [@default []];
+ reactions: Snowflake.t list [@default []];
+ nonce: Snowflake.t option [@default None];
+ pinned: bool option [@default None];
+ webhook_id: Snowflake.t option [@default None];
+ kind: int option [@default None][@key "type"];
+} [@@deriving yojson { strict = false}]
+
type t = {
id: Snowflake.t;
author: User_t.t;
@@ -9,10 +31,10 @@ type t = {
editedimestamp: string option [@default None];
tts: bool;
mention_everyone: bool;
- mentions: Snowflake.t list;
- role_mentions: Snowflake.t list [@default []];
- attachments: Attachment.t list;
- embeds: Embed.t list;
+ (* mentions: Snowflake.t list [@default []]; *)
+ (* role_mentions: Snowflake.t list [@default []]; *)
+ attachments: Attachment.t list [@default []];
+ embeds: Embed.t list [@default []];
reactions: Snowflake.t list [@default []];
nonce: Snowflake.t option [@default None];
pinned: bool;
diff --git a/lib/models/reaction_t.ml b/lib/models/reaction_t.ml
index f60561e..2e9aad5 100644
--- a/lib/models/reaction_t.ml
+++ b/lib/models/reaction_t.ml
@@ -1,3 +1,11 @@
+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]
+
type t = {
count: int;
emoji: Emoji.t;
diff --git a/lib/models/snowflake.ml b/lib/models/snowflake.ml
index 9e630e1..21846fc 100644
--- a/lib/models/snowflake.ml
+++ b/lib/models/snowflake.ml
@@ -2,10 +2,10 @@ open Core
type t = int
-let of_yojson_exn d = Yojson.Safe.Util.to_string d |> Int.of_string |> Ok
+let of_yojson_exn d = Yojson.Safe.Util.to_string d |> Int.of_string
let of_yojson d =
- try of_yojson_exn d
+ try of_yojson_exn d |> Ok
with Yojson.Safe.Util.Type_error (why,_) -> Error why
let to_yojson s : Yojson.Safe.json = `String (Int.to_string s)