aboutsummaryrefslogtreecommitdiff
path: root/lib/models/guild
diff options
context:
space:
mode:
authorAdelyn Breedlove <[email protected]>2019-03-02 18:30:46 -0700
committerAdelyn Breedlove <[email protected]>2019-03-02 18:30:46 -0700
commit6163027a715b31d87e1f8e4fde8f7f3b4db2bc42 (patch)
treed84b6f956fd43d8a3bb2dff3a1bde9e27dcc1cc2 /lib/models/guild
parentStyle improvements who dis (diff)
downloaddisml-6163027a715b31d87e1f8e4fde8f7f3b4db2bc42.tar.xz
disml-6163027a715b31d87e1f8e4fde8f7f3b4db2bc42.zip
Initial Lwt changes. Successfully compiles
Diffstat (limited to 'lib/models/guild')
-rw-r--r--lib/models/guild/ban_t.ml5
-rw-r--r--lib/models/guild/guild.ml51
-rw-r--r--lib/models/guild/guild.mli50
-rw-r--r--lib/models/guild/guild_t.ml17
-rw-r--r--lib/models/guild/member.mli18
-rw-r--r--lib/models/guild/member_t.ml9
-rw-r--r--lib/models/guild/role.mli16
-rw-r--r--lib/models/guild/role_t.ml7
8 files changed, 90 insertions, 83 deletions
diff --git a/lib/models/guild/ban_t.ml b/lib/models/guild/ban_t.ml
index 2ebc91d..4afbf73 100644
--- a/lib/models/guild/ban_t.ml
+++ b/lib/models/guild/ban_t.ml
@@ -1,4 +1,7 @@
-open Core
+let string_of_sexp = Base.String.t_of_sexp
+let sexp_of_string = Base.String.sexp_of_t
+let option_of_sexp = Base.Option.t_of_sexp
+let sexp_of_option = Base.Option.sexp_of_t
type t = {
reason: string option [@default None];
diff --git a/lib/models/guild/guild.ml b/lib/models/guild/guild.ml
index 2559df6..70cf2e8 100644
--- a/lib/models/guild/guild.ml
+++ b/lib/models/guild/guild.ml
@@ -1,12 +1,9 @@
-open Core
-open Async
-
include Guild_t
let ban_user ~id ?(reason="") ?(days=0) guild =
- Http.guild_ban_add (get_id guild) id (`Assoc [
- ("delete-message-days", `Int days);
- ("reason", `String reason);
+ Http.guild_ban_add (get_id guild) id (`Assoc
+ [ "delete-message-days", `Int days
+ ; "reason", `String reason
])
let create data =
@@ -14,10 +11,10 @@ let create data =
Http.create_guild data
let create_emoji ~name ~image guild =
- Http.create_emoji (get_id guild) (`Assoc [
- ("name", `String name);
- ("image", `String image);
- ("roles", `List []);
+ Http.create_emoji (get_id guild) (`Assoc
+ [ "name", `String name
+ ; "image", `String image
+ ; "roles", `List []
])
let create_role ~name ?colour ?permissions ?hoist ?mentionable guild =
@@ -41,9 +38,9 @@ let create_channel ~mode ~name guild =
| `Text -> 0
| `Voice -> 2
| `Category -> 4
- in Http.create_guild_channel (get_id guild) (`Assoc [
- ("name", `String name);
- ("type", `Int kind);
+ in Http.create_guild_channel (get_id guild) (`Assoc
+ [ "name", `String name
+ ; "type", `Int kind
])
let delete guild =
@@ -71,7 +68,7 @@ let get_webhooks guild =
let kick_user ~id ?reason guild =
let payload = match reason with
- | Some r -> `Assoc [("reason", `String r)]
+ | Some r -> `Assoc ["reason", `String r]
| None -> `Null
in Http.remove_member (get_id guild) id payload
@@ -88,21 +85,13 @@ let prune ~days guild =
let request_members guild =
Http.get_members (get_id guild)
-let set_afk_channel ~id guild = Http.edit_guild (get_id guild) (`Assoc [
- ("afk_channel_id", `Int id);
- ])
+let set_afk_channel ~id guild = Http.edit_guild (get_id guild) (`Assoc [ "afk_channel_id", `Int id ])
-let set_afk_timeout ~timeout guild = Http.edit_guild (get_id guild) (`Assoc [
- ("afk_timeout", `Int timeout);
- ])
+let set_afk_timeout ~timeout guild = Http.edit_guild (get_id guild) (`Assoc [ "afk_timeout", `Int timeout ])
-let set_name ~name guild = Http.edit_guild (get_id guild) (`Assoc [
- ("name", `String name);
- ])
+let set_name ~name guild = Http.edit_guild (get_id guild) (`Assoc [ "name", `String name ])
-let set_icon ~icon guild = Http.edit_guild (get_id guild) (`Assoc [
- ("icon", `String icon);
- ])
+let set_icon ~icon guild = Http.edit_guild (get_id guild) (`Assoc [ "icon", `String icon ])
let unban_user ~id ?reason guild =
let payload = match reason with
@@ -111,18 +100,18 @@ let unban_user ~id ?reason guild =
in Http.guild_ban_remove (get_id guild) id payload
let get_member ~(id:User_id_t.t) guild =
- match List.find ~f:(fun m -> m.user.id = id) guild.members with
- | Some m -> Deferred.Or_error.return m
+ match List.find_opt (fun (m:Member_t.t) -> m.user.id = id) guild.members with
+ | Some m -> Lwt_result.return m
| None ->
let `User_id id = id in
Http.get_member (get_id guild) id
let get_channel ~(id:Channel_id_t.t) guild =
let `Channel_id id = id in
- match List.find ~f:(fun c -> Channel_t.get_id c = id) guild.channels with
- | Some c -> Deferred.Or_error.return c
+ match List.find_opt (fun c -> Channel_t.get_id c = id) guild.channels with
+ | Some c -> Lwt_result.return c
| None -> Http.get_channel id
(* TODO add HTTP fallback *)
let get_role ~(id:Role_id.t) guild =
- List.find ~f:(fun r -> r.id = id) guild.roles
+ List.find_opt (fun (r:Role_t.t) -> r.id = id) guild.roles
diff --git a/lib/models/guild/guild.mli b/lib/models/guild/guild.mli
index 1fbcf55..90640d7 100644
--- a/lib/models/guild/guild.mli
+++ b/lib/models/guild/guild.mli
@@ -1,10 +1,8 @@
-open Async
-
include module type of Guild_t
-val ban_user : id:Snowflake.t -> ?reason:string -> ?days:int -> t -> unit Deferred.Or_error.t
-val create : (string * Yojson.Safe.t) list -> t Deferred.Or_error.t
-val create_emoji : name:string -> image:string -> t -> Emoji.t Deferred.Or_error.t
+val ban_user : id:Snowflake.t -> ?reason:string -> ?days:int -> t -> (unit, string) Lwt_result.t
+val create : (string * Yojson.Safe.t) list -> (t, string) Lwt_result.t
+val create_emoji : name:string -> image:string -> t -> (Emoji.t, string) Lwt_result.t
val create_role :
name:string ->
?colour:int ->
@@ -12,31 +10,31 @@ val create_role :
?hoist:bool ->
?mentionable:bool ->
t ->
- Role_t.t Deferred.Or_error.t
-val create_channel : mode:[ `Text | `Voice | `Category ] -> name:string -> t -> Channel_t.t Deferred.Or_error.t
-val delete : t -> unit Deferred.Or_error.t
-val get_ban : id:Snowflake.t -> t -> Ban_t.t Deferred.Or_error.t
-val get_bans : t -> Ban_t.t list Deferred.Or_error.t
-val get_emoji : id:Snowflake.t -> t -> Emoji.t Deferred.Or_error.t
-val get_invites : t -> Yojson.Safe.t Deferred.Or_error.t
-val get_prune_count : days:int -> t -> int Deferred.Or_error.t
-val get_webhooks : t -> Yojson.Safe.t Deferred.Or_error.t
-val kick_user : id:Snowflake.t -> ?reason:string -> t -> unit Deferred.Or_error.t
-val leave : t -> unit Deferred.Or_error.t
-val list_voice_regions : t -> Yojson.Safe.t Deferred.Or_error.t
-val prune : days:int -> t -> int Deferred.Or_error.t
-val request_members : t -> Member_t.t list Deferred.Or_error.t
-val set_afk_channel : id:Snowflake.t -> t -> Guild_t.t Deferred.Or_error.t
-val set_afk_timeout : timeout:int -> t -> Guild_t.t Deferred.Or_error.t
-val set_name : name:string -> t -> Guild_t.t Deferred.Or_error.t
-val set_icon : icon:string -> t -> Guild_t.t Deferred.Or_error.t
-val unban_user : id:Snowflake.t -> ?reason:string -> t -> unit Deferred.Or_error.t
+ (Role_t.t, string) Lwt_result.t
+val create_channel : mode:[ `Text | `Voice | `Category ] -> name:string -> t -> (Channel_t.t, string) Lwt_result.t
+val delete : t -> (unit, string) Lwt_result.t
+val get_ban : id:Snowflake.t -> t -> (Ban_t.t, string) Lwt_result.t
+val get_bans : t -> (Ban_t.t list, string) Lwt_result.t
+val get_emoji : id:Snowflake.t -> t -> (Emoji.t, string) Lwt_result.t
+val get_invites : t -> (Yojson.Safe.t, string) Lwt_result.t
+val get_prune_count : days:int -> t -> (int, string) Lwt_result.t
+val get_webhooks : t -> (Yojson.Safe.t, string) Lwt_result.t
+val kick_user : id:Snowflake.t -> ?reason:string -> t -> (unit, string) Lwt_result.t
+val leave : t -> (unit, string) Lwt_result.t
+val list_voice_regions : t -> (Yojson.Safe.t, string) Lwt_result.t
+val prune : days:int -> t -> (int, string) Lwt_result.t
+val request_members : t -> (Member_t.t list, string) Lwt_result.t
+val set_afk_channel : id:Snowflake.t -> t -> (Guild_t.t, string) Lwt_result.t
+val set_afk_timeout : timeout:int -> t -> (Guild_t.t, string) Lwt_result.t
+val set_name : name:string -> t -> (Guild_t.t, string) Lwt_result.t
+val set_icon : icon:string -> t -> (Guild_t.t, string) Lwt_result.t
+val unban_user : id:Snowflake.t -> ?reason:string -> t -> (unit, string) Lwt_result.t
(** Get a channel belonging to this guild. This does not make an HTTP request. *)
-val get_channel : id:Channel_id_t.t -> t -> Channel_t.t Deferred.Or_error.t
+val get_channel : id:Channel_id_t.t -> t -> (Channel_t.t, string) Lwt_result.t
(** Get a member belonging to this guild. This does not make an HTTP request. *)
-val get_member : id:User_id_t.t -> t -> Member_t.t Deferred.Or_error.t
+val get_member : id:User_id_t.t -> t -> (Member_t.t, string) Lwt_result.t
(** Get a role belonging to this guild. This does not make an HTTP request. *)
val get_role : id:Role_id.t -> t -> Role_t.t option \ No newline at end of file
diff --git a/lib/models/guild/guild_t.ml b/lib/models/guild/guild_t.ml
index afe3d19..b486429 100644
--- a/lib/models/guild/guild_t.ml
+++ b/lib/models/guild/guild_t.ml
@@ -1,4 +1,13 @@
-open Core
+let string_of_sexp = Base.String.t_of_sexp
+let sexp_of_string = Base.String.sexp_of_t
+let option_of_sexp = Base.Option.t_of_sexp
+let sexp_of_option = Base.Option.sexp_of_t
+let int_of_sexp = Base.Int.t_of_sexp
+let sexp_of_int = Base.Int.sexp_of_t
+let bool_of_sexp = Base.Bool.t_of_sexp
+let sexp_of_bool = Base.Bool.sexp_of_t
+let list_of_sexp = Base.List.t_of_sexp
+let sexp_of_list = Base.List.sexp_of_t
type unavailable = {
id: Guild_id_t.t;
@@ -63,9 +72,9 @@ type t = {
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_id;system_channel_id;large;member_count;members;channels}:pre) =
let `Guild_id id = id in
- let roles = List.map ~f:(Role_t.wrap ~guild_id:id) roles in
- let members = List.map ~f:(Member_t.wrap ~guild_id:id) members in
- let channels = List.map ~f:Channel_t.wrap channels in
+ let roles = List.map (Role_t.wrap ~guild_id:id) roles in
+ let members = List.map (Member_t.wrap ~guild_id:id) members in
+ let channels = List.map Channel_t.wrap channels in
{id = `Guild_id 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_id;system_channel_id;large;member_count;members;channels}
let get_id guild = let `Guild_id id = guild.id in id \ No newline at end of file
diff --git a/lib/models/guild/member.mli b/lib/models/guild/member.mli
index a3acc1b..76cb2de 100644
--- a/lib/models/guild/member.mli
+++ b/lib/models/guild/member.mli
@@ -1,27 +1,25 @@
-open Async
-
include module type of Member_t
(** Adds a role to the member. *)
-val add_role : role:Role_t.t -> Member_t.t -> unit Deferred.Or_error.t
+val add_role : role:Role_t.t -> Member_t.t -> (unit, string) Lwt_result.t
(** Removes a role from the member. *)
-val remove_role : role:Role_t.t -> Member_t.t -> unit Deferred.Or_error.t
+val remove_role : role:Role_t.t -> Member_t.t -> (unit, string) Lwt_result.t
(** Bans the member with optional reason and days of messages to delete. *)
-val ban : ?reason:string -> ?days:int -> Member_t.t -> unit Deferred.Or_error.t
+val ban : ?reason:string -> ?days:int -> Member_t.t -> (unit, string) Lwt_result.t
(** Kicks the member with the optional reason. *)
-val kick : ?reason:string -> Member_t.t -> unit Deferred.Or_error.t
+val kick : ?reason:string -> Member_t.t -> (unit, string) Lwt_result.t
(** Mutes the member, preventing them from speaking in voice chats. *)
-val mute : Member_t.t -> unit Deferred.Or_error.t
+val mute : Member_t.t -> (unit, string) Lwt_result.t
(** Deafens the member, preventing them from hearing others in voice chats. *)
-val deafen : Member_t.t -> unit Deferred.Or_error.t
+val deafen : Member_t.t -> (unit, string) Lwt_result.t
(** Opposite of {!mute}. *)
-val unmute : Member_t.t -> unit Deferred.Or_error.t
+val unmute : Member_t.t -> (unit, string) Lwt_result.t
(** Opposite of {!deafen}. *)
-val undeafen : Member_t.t -> unit Deferred.Or_error.t \ No newline at end of file
+val undeafen : Member_t.t -> (unit, string) Lwt_result.t \ No newline at end of file
diff --git a/lib/models/guild/member_t.ml b/lib/models/guild/member_t.ml
index 4e01b9a..8e15284 100644
--- a/lib/models/guild/member_t.ml
+++ b/lib/models/guild/member_t.ml
@@ -1,4 +1,11 @@
-open Core
+let string_of_sexp = Base.String.t_of_sexp
+let sexp_of_string = Base.String.sexp_of_t
+let option_of_sexp = Base.Option.t_of_sexp
+let sexp_of_option = Base.Option.sexp_of_t
+let bool_of_sexp = Base.Bool.t_of_sexp
+let sexp_of_bool = Base.Bool.sexp_of_t
+let list_of_sexp = Base.List.t_of_sexp
+let sexp_of_list = Base.List.sexp_of_t
type partial_member = {
nick: string option [@default None];
diff --git a/lib/models/guild/role.mli b/lib/models/guild/role.mli
index b311a60..70474a6 100644
--- a/lib/models/guild/role.mli
+++ b/lib/models/guild/role.mli
@@ -1,24 +1,22 @@
-open Async
-
include module type of Role_t
(** Deletes the role. This is permanent. *)
-val delete : t -> unit Deferred.Or_error.t
+val delete : t -> (unit, string) Lwt_result.t
(** Edits the role to allow mentions. *)
-val allow_mention : t -> t Deferred.Or_error.t
+val allow_mention : t -> (t, string) Lwt_result.t
(** Opposite of {!allow_mention} *)
-val disallow_mention : t -> t Deferred.Or_error.t
+val disallow_mention : t -> (t, string) Lwt_result.t
(** Hoists the role. See {!Role.t.hoist}. *)
-val hoist : t -> t Deferred.Or_error.t
+val hoist : t -> (t, string) Lwt_result.t
(** Opposite of {!hoist}. *)
-val unhoist : t -> t Deferred.Or_error.t
+val unhoist : t -> (t, string) Lwt_result.t
(** Sets the colour of the role. *)
-val set_colour : colour:int -> t -> t Deferred.Or_error.t
+val set_colour : colour:int -> t -> (t, string) Lwt_result.t
(** Sets the name of the role. *)
-val set_name : name:string -> t -> t Deferred.Or_error.t
+val set_name : name:string -> t -> (t, string) Lwt_result.t
diff --git a/lib/models/guild/role_t.ml b/lib/models/guild/role_t.ml
index 2927c20..a28f84f 100644
--- a/lib/models/guild/role_t.ml
+++ b/lib/models/guild/role_t.ml
@@ -1,4 +1,9 @@
-open Core
+let string_of_sexp = Base.String.t_of_sexp
+let sexp_of_string = Base.String.sexp_of_t
+let int_of_sexp = Base.Int.t_of_sexp
+let sexp_of_int = Base.Int.sexp_of_t
+let bool_of_sexp = Base.Bool.t_of_sexp
+let sexp_of_bool = Base.Bool.sexp_of_t
type role = {
id: Role_id.t;