aboutsummaryrefslogtreecommitdiff
path: root/lib/models/user
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2019-01-21 08:52:33 -0700
committerAdelyn Breelove <[email protected]>2019-01-21 08:52:33 -0700
commitc3d6e15bb89d4a93a2fa486db6c8e126baf4da2e (patch)
tree3fe6679ff4520899bab9ab9fb96145efd614a3a3 /lib/models/user
parentswap order of fields in example bot to reflect correct ordering (diff)
downloaddisml-c3d6e15bb89d4a93a2fa486db6c8e126baf4da2e.tar.xz
disml-c3d6e15bb89d4a93a2fa486db6c8e126baf4da2e.zip
folder restructure
Diffstat (limited to 'lib/models/user')
-rw-r--r--lib/models/user/activity.ml7
-rw-r--r--lib/models/user/activity.mli5
-rw-r--r--lib/models/user/presence.ml10
-rw-r--r--lib/models/user/user.ml20
-rw-r--r--lib/models/user/user.mli8
-rw-r--r--lib/models/user/user_t.ml13
6 files changed, 63 insertions, 0 deletions
diff --git a/lib/models/user/activity.ml b/lib/models/user/activity.ml
new file mode 100644
index 0000000..8e6ff80
--- /dev/null
+++ b/lib/models/user/activity.ml
@@ -0,0 +1,7 @@
+open Core
+
+type t = {
+ name: string;
+ kind: int [@key "type"];
+ url: string [@default ""];
+} [@@deriving sexp, yojson { strict = false}] \ No newline at end of file
diff --git a/lib/models/user/activity.mli b/lib/models/user/activity.mli
new file mode 100644
index 0000000..53173b7
--- /dev/null
+++ b/lib/models/user/activity.mli
@@ -0,0 +1,5 @@
+type t = {
+ name: string;
+ kind: int;
+ url: string;
+} [@@deriving sexp, yojson] \ No newline at end of file
diff --git a/lib/models/user/presence.ml b/lib/models/user/presence.ml
new file mode 100644
index 0000000..ab245a7
--- /dev/null
+++ b/lib/models/user/presence.ml
@@ -0,0 +1,10 @@
+open Core
+
+type t = {
+ user: User_t.partial_user;
+ roles: Snowflake.t list;
+ game: Activity.t option [@default None];
+ guild_id: Snowflake.t;
+ status: string;
+ activities: Activity.t list;
+} [@@deriving sexp, yojson { strict = false}] \ No newline at end of file
diff --git a/lib/models/user/user.ml b/lib/models/user/user.ml
new file mode 100644
index 0000000..bd6583c
--- /dev/null
+++ b/lib/models/user/user.ml
@@ -0,0 +1,20 @@
+open Core
+include User_t
+
+let tag user =
+ Printf.sprintf "%s#%s" user.username user.discriminator
+
+let mention user =
+ Printf.sprintf "<@%d>" user.id
+
+let default_avatar user =
+ let avatar = Int.of_string user.discriminator % 5 in
+ Endpoints.cdn_default_avatar avatar
+
+let face user = match user.avatar with
+ | Some avatar ->
+ let ext = if String.is_substring ~substring:"a_" avatar
+ then "gif"
+ else "png" in
+ Endpoints.cdn_avatar user.id avatar ext
+ | None -> default_avatar user \ No newline at end of file
diff --git a/lib/models/user/user.mli b/lib/models/user/user.mli
new file mode 100644
index 0000000..2cc6184
--- /dev/null
+++ b/lib/models/user/user.mli
@@ -0,0 +1,8 @@
+include module type of User_t
+
+val tag : t -> string
+val mention : t -> string
+val default_avatar : t -> string
+val face : t -> string
+(* val private_channel : t -> Channel_t.t *)
+(* val send : t -> Yojson.Safe.json Deferred.Or_error.t *) \ No newline at end of file
diff --git a/lib/models/user/user_t.ml b/lib/models/user/user_t.ml
new file mode 100644
index 0000000..52dbaf4
--- /dev/null
+++ b/lib/models/user/user_t.ml
@@ -0,0 +1,13 @@
+open Core
+
+type partial_user = {
+ id: Snowflake.t;
+} [@@deriving sexp, yojson { strict = false}]
+
+type t = {
+ id: Snowflake.t;
+ username: string;
+ discriminator: string;
+ avatar: string option [@default None];
+ bot: bool [@default false];
+} [@@deriving sexp, yojson { strict = false }] \ No newline at end of file