aboutsummaryrefslogtreecommitdiff
path: root/lib/models
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2019-01-23 15:56:57 -0700
committerAdelyn Breelove <[email protected]>2019-01-23 15:56:57 -0700
commitcd8c706d092c4fecbea753b90b42bb9f30e0ed17 (patch)
tree058fe1747d49264b52274c3cf9c5930bd43ee6b4 /lib/models
parentUpdate README (diff)
downloaddisml-cd8c706d092c4fecbea753b90b42bb9f30e0ed17.tar.xz
disml-cd8c706d092c4fecbea753b90b42bb9f30e0ed17.zip
Improve HTTP stuff
Diffstat (limited to 'lib/models')
-rw-r--r--lib/models/channel/message/message.ml20
-rw-r--r--lib/models/guild/guild.ml4
-rw-r--r--lib/models/guild/member.ml16
-rw-r--r--lib/models/guild/role.mli14
4 files changed, 25 insertions, 29 deletions
diff --git a/lib/models/channel/message/message.ml b/lib/models/channel/message/message.ml
index f772c48..39ee0f3 100644
--- a/lib/models/channel/message/message.ml
+++ b/lib/models/channel/message/message.ml
@@ -8,7 +8,7 @@ let add_reaction msg (emoji:Emoji.t) =
| None -> emoji.name
in
Http.create_reaction msg.channel_id msg.id e
- >>| Result.map ~f:ignore
+
let remove_reaction msg (emoji:Emoji.t) (user:User_t.t) =
let e = match emoji.id with
@@ -16,28 +16,28 @@ let remove_reaction msg (emoji:Emoji.t) (user:User_t.t) =
| None -> emoji.name
in
Http.delete_reaction msg.channel_id msg.id e user.id
- >>| Result.map ~f:ignore
+
let clear_reactions msg =
Http.delete_reactions msg.channel_id msg.id
- >>| Result.map ~f:ignore
+
let delete msg =
Http.delete_message msg.channel_id msg.id
- >>| Result.map ~f:ignore
+
let pin msg =
Http.pin_message msg.channel_id msg.id
- >>| Result.map ~f:ignore
+
let unpin msg =
Http.unpin_message msg.channel_id msg.id
- >>| Result.map ~f:ignore
+
let reply msg cont =
let rep = `Assoc [("content", `String cont)] in
Http.create_message msg.channel_id rep
- >>| Result.map ~f:Message_t.of_yojson_exn
+
let reply_with ?embed ?content ?file ?(tts=false) msg =
let embed = match embed with
@@ -57,14 +57,14 @@ let reply_with ?embed ?content ?file ?(tts=false) msg =
("content", content);
("file", file);
("tts", `Bool tts);
- ]) >>| Result.map ~f:Message_t.of_yojson_exn
+ ])
let set_content msg cont =
to_yojson { msg with content = cont; }
|> Http.edit_message msg.channel_id msg.id
- >>| Result.map ~f:Message_t.of_yojson_exn
+
let set_embed msg embed =
to_yojson { msg with embeds = [embed]; }
|> Http.edit_message msg.channel_id msg.id
- >>| Result.map ~f:Message_t.of_yojson_exn \ No newline at end of file
+ \ No newline at end of file
diff --git a/lib/models/guild/guild.ml b/lib/models/guild/guild.ml
index 253ea07..926b152 100644
--- a/lib/models/guild/guild.ml
+++ b/lib/models/guild/guild.ml
@@ -7,12 +7,12 @@ include Impl.Guild(Guild_t)
let get_member ~id guild =
match List.find ~f:(fun m -> m.user.id = id) guild.members with
| Some m -> Deferred.Or_error.return m
- | None -> Http.get_member (get_id guild) id >>| Result.map ~f:Member_t.of_yojson_exn
+ | None -> Http.get_member (get_id guild) id
let get_channel ~id guild =
match List.find ~f:(fun c -> Channel_t.get_id c = id) guild.channels with
| Some c -> Deferred.Or_error.return c
- | None -> Http.get_channel id >>| Result.map ~f:(fun c -> Channel_t.(channel_wrapper_of_yojson_exn c |> wrap))
+ | None -> Http.get_channel id
(* TODO add HTTP fallback *)
let get_role ~id guild =
diff --git a/lib/models/guild/member.ml b/lib/models/guild/member.ml
index 25f2f75..7634d85 100644
--- a/lib/models/guild/member.ml
+++ b/lib/models/guild/member.ml
@@ -1,43 +1,39 @@
-open Async
-open Core
include Member_t
let add_role ~(role:Role_t.t) member =
Http.add_member_role member.guild_id member.user.id role.id
- >>| Result.map ~f:ignore
let remove_role ~(role:Role_t.t) member =
Http.remove_member_role member.guild_id member.user.id role.id
- >>| Result.map ~f:ignore
let ban ?(reason="") ?(days=0) member =
Http.guild_ban_add member.guild_id member.user.id (`Assoc [
("delete-message-days", `Int days);
("reason", `String reason);
- ]) >>| Result.map ~f:ignore
+ ])
let kick ?reason member =
let payload = match reason with
| Some r -> `Assoc [("reason", `String r)]
| None -> `Null
- in Http.remove_member member.guild_id member.user.id payload >>| Result.map ~f:ignore
+ in Http.remove_member member.guild_id member.user.id payload
let mute member =
Http.edit_member member.guild_id member.user.id (`Assoc [
("mute", `Bool true);
- ]) >>| Result.map ~f:ignore
+ ])
let deafen member =
Http.edit_member member.guild_id member.user.id (`Assoc [
("deaf", `Bool true);
- ]) >>| Result.map ~f:ignore
+ ])
let unmute member =
Http.edit_member member.guild_id member.user.id (`Assoc [
("mute", `Bool false);
- ]) >>| Result.map ~f:ignore
+ ])
let undeafen member =
Http.edit_member member.guild_id member.user.id (`Assoc [
("deaf", `Bool false);
- ]) >>| Result.map ~f:ignore
+ ])
diff --git a/lib/models/guild/role.mli b/lib/models/guild/role.mli
index d37f733..4c4f2a9 100644
--- a/lib/models/guild/role.mli
+++ b/lib/models/guild/role.mli
@@ -2,10 +2,10 @@ open Async
include module type of Role_t
-val allow_mention : t -> Yojson.Safe.json Deferred.Or_error.t
-val delete : t -> Yojson.Safe.json Deferred.Or_error.t
-val disallow_mention : t -> Yojson.Safe.json Deferred.Or_error.t
-val hoist : t -> Yojson.Safe.json Deferred.Or_error.t
-val set_colour : colour:int -> t -> Yojson.Safe.json Deferred.Or_error.t
-val set_name : name:string -> t -> Yojson.Safe.json Deferred.Or_error.t
-val unhoist : t -> Yojson.Safe.json Deferred.Or_error.t \ No newline at end of file
+val allow_mention : t -> t Deferred.Or_error.t
+val delete : t -> unit Deferred.Or_error.t
+val disallow_mention : t -> t Deferred.Or_error.t
+val hoist : t -> t Deferred.Or_error.t
+val set_colour : colour:int -> t -> t Deferred.Or_error.t
+val set_name : name:string -> t -> t Deferred.Or_error.t
+val unhoist : t -> t Deferred.Or_error.t \ No newline at end of file