From c3d6e15bb89d4a93a2fa486db6c8e126baf4da2e Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Mon, 21 Jan 2019 08:52:33 -0700 Subject: folder restructure --- lib/models/user/activity.ml | 7 +++++++ lib/models/user/activity.mli | 5 +++++ lib/models/user/presence.ml | 10 ++++++++++ lib/models/user/user.ml | 20 ++++++++++++++++++++ lib/models/user/user.mli | 8 ++++++++ lib/models/user/user_t.ml | 13 +++++++++++++ 6 files changed, 63 insertions(+) create mode 100644 lib/models/user/activity.ml create mode 100644 lib/models/user/activity.mli create mode 100644 lib/models/user/presence.ml create mode 100644 lib/models/user/user.ml create mode 100644 lib/models/user/user.mli create mode 100644 lib/models/user/user_t.ml (limited to 'lib/models/user') 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 -- cgit v1.2.3