aboutsummaryrefslogtreecommitdiff
path: root/lib
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
parentUpdate README (diff)
downloaddisml-cd8c706d092c4fecbea753b90b42bb9f30e0ed17.tar.xz
disml-cd8c706d092c4fecbea753b90b42bb9f30e0ed17.zip
Improve HTTP stuff
Diffstat (limited to 'lib')
-rw-r--r--lib/http.ml113
-rw-r--r--lib/http.mli127
-rw-r--r--lib/impl.ml58
-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
-rw-r--r--lib/s.ml12
8 files changed, 179 insertions, 185 deletions
diff --git a/lib/http.ml b/lib/http.ml
index 77fc9a8..1ff8e9d 100644
--- a/lib/http.ml
+++ b/lib/http.ml
@@ -71,49 +71,51 @@ let get_gateway_bot () =
Base.request `GET Endpoints.gateway_bot
let get_channel channel_id =
- Base.request `GET (Endpoints.channel channel_id)
+ Base.request `GET (Endpoints.channel channel_id) >>| Result.map ~f:(fun c -> Channel_t.(channel_wrapper_of_yojson_exn c |> wrap))
let modify_channel channel_id body =
- Base.request ~body `PATCH (Endpoints.channel channel_id)
+ Base.request ~body `PATCH (Endpoints.channel channel_id) >>| Result.map ~f:(fun c -> Channel_t.(channel_wrapper_of_yojson_exn c |> wrap))
let delete_channel channel_id =
- Base.request `DELETE (Endpoints.channel channel_id)
+ Base.request `DELETE (Endpoints.channel channel_id) >>| Result.map ~f:(fun c -> Channel_t.(channel_wrapper_of_yojson_exn c |> wrap))
let get_messages channel_id limit (kind, id) =
Base.request ~query:[(kind, string_of_int id); ("limit", string_of_int limit)] `GET (Endpoints.channel_messages channel_id)
+ >>| Result.map ~f:(fun l -> Yojson.Safe.Util.to_list l |> List.map ~f:Message_t.of_yojson_exn)
let get_message channel_id message_id =
- Base.request `GET (Endpoints.channel_message channel_id message_id)
+ Base.request `GET (Endpoints.channel_message channel_id message_id) >>| Result.map ~f:Message_t.of_yojson_exn
let create_message channel_id body =
- Base.request ~body:body `POST (Endpoints.channel_messages channel_id)
+ Base.request ~body:body `POST (Endpoints.channel_messages channel_id) >>| Result.map ~f:Message_t.of_yojson_exn
let create_reaction channel_id message_id emoji =
- Base.request `PUT (Endpoints.channel_reaction_me channel_id message_id emoji)
+ Base.request `PUT (Endpoints.channel_reaction_me channel_id message_id emoji) >>| Result.map ~f:ignore
let delete_own_reaction channel_id message_id emoji =
- Base.request `DELETE (Endpoints.channel_reaction_me channel_id message_id emoji)
+ Base.request `DELETE (Endpoints.channel_reaction_me channel_id message_id emoji) >>| Result.map ~f:ignore
let delete_reaction channel_id message_id emoji user_id =
- Base.request `DELETE (Endpoints.channel_reaction channel_id message_id emoji user_id)
+ Base.request `DELETE (Endpoints.channel_reaction channel_id message_id emoji user_id) >>| Result.map ~f:ignore
let get_reactions channel_id message_id emoji =
Base.request `GET (Endpoints.channel_reactions_get channel_id message_id emoji)
+ >>| Result.map ~f:(fun l -> Yojson.Safe.Util.to_list l |> List.map ~f:User_t.of_yojson_exn)
let delete_reactions channel_id message_id =
- Base.request `DELETE (Endpoints.channel_reactions_delete channel_id message_id)
+ Base.request `DELETE (Endpoints.channel_reactions_delete channel_id message_id) >>| Result.map ~f:ignore
let edit_message channel_id message_id body =
- Base.request ~body `PATCH (Endpoints.channel_message channel_id message_id)
+ Base.request ~body `PATCH (Endpoints.channel_message channel_id message_id) >>| Result.map ~f:Message_t.of_yojson_exn
let delete_message channel_id message_id =
- Base.request `DELETE (Endpoints.channel_message channel_id message_id)
+ Base.request `DELETE (Endpoints.channel_message channel_id message_id) >>| Result.map ~f:ignore
let bulk_delete channel_id body =
- Base.request ~body `POST (Endpoints.channel_bulk_delete channel_id)
+ Base.request ~body `POST (Endpoints.channel_bulk_delete channel_id) >>| Result.map ~f:ignore
let edit_channel_permissions channel_id overwrite_id body =
- Base.request ~body `PUT (Endpoints.channel_permission channel_id overwrite_id)
+ Base.request ~body `PUT (Endpoints.channel_permission channel_id overwrite_id) >>| Result.map ~f:ignore
let get_channel_invites channel_id =
Base.request `GET (Endpoints.channel_invites channel_id)
@@ -122,118 +124,128 @@ let create_channel_invite channel_id body =
Base.request ~body `POST (Endpoints.channel_invites channel_id)
let delete_channel_permission channel_id overwrite_id =
- Base.request `DELETE (Endpoints.channel_permission channel_id overwrite_id)
+ Base.request `DELETE (Endpoints.channel_permission channel_id overwrite_id) >>| Result.map ~f:ignore
let broadcast_typing channel_id =
- Base.request `POST (Endpoints.channel_typing channel_id)
+ Base.request `POST (Endpoints.channel_typing channel_id) >>| Result.map ~f:ignore
let get_pinned_messages channel_id =
Base.request `GET (Endpoints.channel_pins channel_id)
+ >>| Result.map ~f:(fun l -> Yojson.Safe.Util.to_list l |> List.map ~f:Message_t.of_yojson_exn)
let pin_message channel_id message_id =
- Base.request `PUT (Endpoints.channel_pin channel_id message_id)
+ Base.request `PUT (Endpoints.channel_pin channel_id message_id) >>| Result.map ~f:ignore
let unpin_message channel_id message_id =
- Base.request `DELETE (Endpoints.channel_pin channel_id message_id)
+ Base.request `DELETE (Endpoints.channel_pin channel_id message_id) >>| Result.map ~f:ignore
let group_recipient_add channel_id user_id =
- Base.request `PUT (Endpoints.group_recipient channel_id user_id)
+ Base.request `PUT (Endpoints.group_recipient channel_id user_id) >>| Result.map ~f:ignore
let group_recipient_remove channel_id user_id =
- Base.request `DELETE (Endpoints.group_recipient channel_id user_id)
+ Base.request `DELETE (Endpoints.group_recipient channel_id user_id) >>| Result.map ~f:ignore
let get_emojis guild_id =
Base.request `GET (Endpoints.guild_emojis guild_id)
+ >>| Result.map ~f:(fun l -> Yojson.Safe.Util.to_list l |> List.map ~f:Emoji.of_yojson_exn)
let get_emoji guild_id emoji_id =
- Base.request `GET (Endpoints.guild_emoji guild_id emoji_id)
+ Base.request `GET (Endpoints.guild_emoji guild_id emoji_id) >>| Result.map ~f:Emoji.of_yojson_exn
let create_emoji guild_id body =
- Base.request ~body `POST (Endpoints.guild_emojis guild_id)
+ Base.request ~body `POST (Endpoints.guild_emojis guild_id) >>| Result.map ~f:Emoji.of_yojson_exn
let edit_emoji guild_id emoji_id body =
- Base.request ~body `PATCH (Endpoints.guild_emoji guild_id emoji_id)
+ Base.request ~body `PATCH (Endpoints.guild_emoji guild_id emoji_id) >>| Result.map ~f:Emoji.of_yojson_exn
let delete_emoji guild_id emoji_id =
- Base.request `DELETE (Endpoints.guild_emoji guild_id emoji_id)
+ Base.request `DELETE (Endpoints.guild_emoji guild_id emoji_id) >>| Result.map ~f:ignore
let create_guild body =
- Base.request ~body `POST Endpoints.guilds
+ Base.request ~body `POST Endpoints.guilds >>| Result.map ~f:(fun g -> Guild_t.(pre_of_yojson_exn g |> wrap))
let get_guild guild_id =
- Base.request `GET (Endpoints.guild guild_id)
+ Base.request `GET (Endpoints.guild guild_id) >>| Result.map ~f:(fun g -> Guild_t.(pre_of_yojson_exn g |> wrap))
let edit_guild guild_id body =
- Base.request ~body `PATCH (Endpoints.guild guild_id)
+ Base.request ~body `PATCH (Endpoints.guild guild_id) >>| Result.map ~f:(fun g -> Guild_t.(pre_of_yojson_exn g |> wrap))
let delete_guild guild_id =
- Base.request `DELETE (Endpoints.guild guild_id)
+ Base.request `DELETE (Endpoints.guild guild_id) >>| Result.map ~f:ignore
let get_guild_channels guild_id =
Base.request `GET (Endpoints.guild_channels guild_id)
+ >>| Result.map ~f:(fun l -> Yojson.Safe.Util.to_list l |> List.map ~f:(fun g -> Channel_t.(channel_wrapper_of_yojson_exn g |> wrap)))
let create_guild_channel guild_id body =
- Base.request ~body `POST (Endpoints.guild_channels guild_id)
+ Base.request ~body `POST (Endpoints.guild_channels guild_id) >>| Result.map ~f:(fun c -> Channel_t.(channel_wrapper_of_yojson_exn c |> wrap))
let modify_guild_channel_positions guild_id body =
- Base.request ~body `PATCH (Endpoints.guild_channels guild_id)
+ Base.request ~body `PATCH (Endpoints.guild_channels guild_id) >>| Result.map ~f:ignore
let get_member guild_id user_id =
- Base.request `GET (Endpoints.guild_member guild_id user_id)
+ Base.request `GET (Endpoints.guild_member guild_id user_id) >>| Result.map ~f:(fun m -> Member_t.(member_of_yojson_exn m |> wrap ~guild_id))
let get_members guild_id =
Base.request `GET (Endpoints.guild_members guild_id)
+ >>| Result.map ~f:(fun l -> Yojson.Safe.Util.to_list l |> List.map ~f:(fun m -> Member_t.(member_of_yojson_exn m |> wrap ~guild_id)))
let add_member guild_id user_id body =
Base.request ~body `PUT (Endpoints.guild_member guild_id user_id)
+ >>| Result.map ~f:(fun m -> Member_t.(member_of_yojson_exn m |> wrap ~guild_id))
let edit_member guild_id user_id body =
- Base.request ~body `PATCH (Endpoints.guild_member guild_id user_id)
+ Base.request ~body `PATCH (Endpoints.guild_member guild_id user_id) >>| Result.map ~f:ignore
let remove_member guild_id user_id body =
- Base.request ~body `DELETE (Endpoints.guild_member guild_id user_id)
+ Base.request ~body `DELETE (Endpoints.guild_member guild_id user_id) >>| Result.map ~f:ignore
let change_nickname guild_id body =
Base.request ~body `PATCH (Endpoints.guild_me_nick guild_id)
let add_member_role guild_id user_id role_id =
- Base.request `PUT (Endpoints.guild_member_role guild_id user_id role_id)
+ Base.request `PUT (Endpoints.guild_member_role guild_id user_id role_id) >>| Result.map ~f:ignore
let remove_member_role guild_id user_id role_id =
- Base.request `DELETE (Endpoints.guild_member_role guild_id user_id role_id)
+ Base.request `DELETE (Endpoints.guild_member_role guild_id user_id role_id) >>| Result.map ~f:ignore
let get_bans guild_id =
Base.request `GET (Endpoints.guild_bans guild_id)
+ >>| Result.map ~f:(fun l -> Yojson.Safe.Util.to_list l |> List.map ~f:Ban_t.of_yojson_exn)
let get_ban guild_id user_id =
- Base.request `GET (Endpoints.guild_ban guild_id user_id)
+ Base.request `GET (Endpoints.guild_ban guild_id user_id) >>| Result.map ~f:Ban_t.of_yojson_exn
let guild_ban_add guild_id user_id body =
- Base.request ~body `PUT (Endpoints.guild_ban guild_id user_id)
+ Base.request ~body `PUT (Endpoints.guild_ban guild_id user_id) >>| Result.map ~f:ignore
let guild_ban_remove guild_id user_id body =
- Base.request ~body `DELETE (Endpoints.guild_ban guild_id user_id)
+ Base.request ~body `DELETE (Endpoints.guild_ban guild_id user_id) >>| Result.map ~f:ignore
let get_roles guild_id =
Base.request `GET (Endpoints.guild_roles guild_id)
+ >>| Result.map ~f:(fun l -> Yojson.Safe.Util.to_list l |> List.map ~f:(fun r -> Role_t.(role_of_yojson_exn r |> wrap ~guild_id)))
let guild_role_add guild_id body =
- Base.request ~body `POST (Endpoints.guild_roles guild_id)
+ Base.request ~body `POST (Endpoints.guild_roles guild_id) >>| Result.map ~f:(fun r -> Role_t.(role_of_yojson_exn r |> wrap ~guild_id))
let guild_roles_edit guild_id body =
Base.request ~body `PATCH (Endpoints.guild_roles guild_id)
+ >>| Result.map ~f:(fun l -> Yojson.Safe.Util.to_list l |> List.map ~f:(fun r -> Role_t.(role_of_yojson_exn r |> wrap ~guild_id)))
let guild_role_edit guild_id role_id body =
- Base.request ~body `PATCH (Endpoints.guild_role guild_id role_id)
+ Base.request ~body `PATCH (Endpoints.guild_role guild_id role_id) >>| Result.map ~f:(fun r -> Role_t.(role_of_yojson_exn r |> wrap ~guild_id))
let guild_role_remove guild_id role_id =
- Base.request `DELETE (Endpoints.guild_role guild_id role_id)
+ Base.request `DELETE (Endpoints.guild_role guild_id role_id) >>| Result.map ~f:ignore
let guild_prune_count guild_id days =
Base.request ~query:[("days", Int.to_string days)] `GET (Endpoints.guild_prune guild_id)
+ >>| Result.map ~f:(fun c -> Yojson.Safe.Util.(member "pruned" c |> to_int))
let guild_prune_start guild_id days =
Base.request ~query:[("days", Int.to_string days)] `POST (Endpoints.guild_prune guild_id)
+ >>| Result.map ~f:(fun c -> Yojson.Safe.Util.(member "pruned" c |> to_int))
let get_guild_voice_regions guild_id =
Base.request `GET (Endpoints.guild_voice_regions guild_id)
@@ -245,16 +257,16 @@ let get_integrations guild_id =
Base.request `GET (Endpoints.guild_integrations guild_id)
let add_integration guild_id body =
- Base.request ~body `POST (Endpoints.guild_integrations guild_id)
+ Base.request ~body `POST (Endpoints.guild_integrations guild_id) >>| Result.map ~f:ignore
let edit_integration guild_id integration_id body =
- Base.request ~body `POST (Endpoints.guild_integration guild_id integration_id)
+ Base.request ~body `POST (Endpoints.guild_integration guild_id integration_id) >>| Result.map ~f:ignore
let delete_integration guild_id integration_id =
- Base.request `DELETE (Endpoints.guild_integration guild_id integration_id)
+ Base.request `DELETE (Endpoints.guild_integration guild_id integration_id) >>| Result.map ~f:ignore
let sync_integration guild_id integration_id =
- Base.request `POST (Endpoints.guild_integration_sync guild_id integration_id)
+ Base.request `POST (Endpoints.guild_integration_sync guild_id integration_id) >>| Result.map ~f:ignore
let get_guild_embed guild_id =
Base.request `GET (Endpoints.guild_embed guild_id)
@@ -272,16 +284,17 @@ let delete_invite invite_code =
Base.request `DELETE (Endpoints.invite invite_code)
let get_current_user () =
- Base.request `GET Endpoints.me
+ Base.request `GET Endpoints.me >>| Result.map ~f:User_t.of_yojson_exn
let edit_current_user body =
- Base.request ~body `PATCH Endpoints.me
+ Base.request ~body `PATCH Endpoints.me >>| Result.map ~f:User_t.of_yojson_exn
let get_guilds () =
Base.request `GET Endpoints.me_guilds
+ >>| Result.map ~f:(fun l -> Yojson.Safe.Util.to_list l |> List.map ~f:(fun g -> Guild_t.(pre_of_yojson_exn g |> wrap)))
let leave_guild guild_id =
- Base.request `DELETE (Endpoints.me_guild guild_id)
+ Base.request `DELETE (Endpoints.me_guild guild_id) >>| Result.map ~f:ignore
let get_private_channels () =
Base.request `GET Endpoints.me_channels
@@ -296,7 +309,7 @@ let get_connections () =
Base.request `GET Endpoints.me_connections
let get_user user_id =
- Base.request `GET (Endpoints.user user_id)
+ Base.request `GET (Endpoints.user user_id) >>| Result.map ~f:User_t.of_yojson_exn
let get_voice_regions () =
Base.request `GET Endpoints.regions
@@ -323,10 +336,10 @@ let edit_webhook_with_token webhook_id token body =
Base.request ~body `PATCH (Endpoints.webhook_token webhook_id token)
let delete_webhook webhook_id =
- Base.request `DELETE (Endpoints.webhook webhook_id)
+ Base.request `DELETE (Endpoints.webhook webhook_id) >>| Result.map ~f:ignore
let delete_webhook_with_token webhook_id token =
- Base.request `DELETE (Endpoints.webhook_token webhook_id token)
+ Base.request `DELETE (Endpoints.webhook_token webhook_id token) >>| Result.map ~f:ignore
let execute_webhook webhook_id token body =
Base.request ~body `POST (Endpoints.webhook_token webhook_id token)
diff --git a/lib/http.mli b/lib/http.mli
index c2a50b8..b5b05fd 100644
--- a/lib/http.mli
+++ b/lib/http.mli
@@ -22,132 +22,131 @@ module Base : sig
Yojson.Safe.json Deferred.Or_error.t
end
-(* Auto-generated signatures *)
val get_gateway : unit -> Yojson.Safe.json Deferred.Or_error.t
val get_gateway_bot : unit -> Yojson.Safe.json Deferred.Or_error.t
-val get_channel : int -> Yojson.Safe.json Deferred.Or_error.t
+val get_channel : int -> Channel_t.t Deferred.Or_error.t
val modify_channel :
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
-val delete_channel : int -> Yojson.Safe.json Deferred.Or_error.t
-val get_messages : int -> int -> string * int -> Yojson.Safe.json Deferred.Or_error.t
-val get_message : int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Channel_t.t Deferred.Or_error.t
+val delete_channel : int -> Channel_t.t Deferred.Or_error.t
+val get_messages : int -> int -> string * int -> Message_t.t list Deferred.Or_error.t
+val get_message : int -> int -> Message_t.t Deferred.Or_error.t
val create_message :
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Message_t.t Deferred.Or_error.t
val create_reaction :
- int -> int -> string -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> string -> unit Deferred.Or_error.t
val delete_own_reaction :
- int -> int -> string -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> string -> unit Deferred.Or_error.t
val delete_reaction :
- int -> int -> string -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> string -> int -> unit Deferred.Or_error.t
val get_reactions :
- int -> int -> string -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> string -> User_t.t list Deferred.Or_error.t
val delete_reactions :
- int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val edit_message :
int ->
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Message_t.t Deferred.Or_error.t
val delete_message :
- int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val bulk_delete :
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> unit Deferred.Or_error.t
val edit_channel_permissions :
int ->
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> unit Deferred.Or_error.t
val get_channel_invites : int -> Yojson.Safe.json Deferred.Or_error.t
val create_channel_invite :
int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
val delete_channel_permission :
- int -> int -> Yojson.Safe.json Deferred.Or_error.t
-val broadcast_typing : int -> Yojson.Safe.json Deferred.Or_error.t
-val get_pinned_messages : int -> Yojson.Safe.json Deferred.Or_error.t
-val pin_message : int -> int -> Yojson.Safe.json Deferred.Or_error.t
-val unpin_message : int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
+val broadcast_typing : int -> unit Deferred.Or_error.t
+val get_pinned_messages : int -> Message_t.t list Deferred.Or_error.t
+val pin_message : int -> int -> unit Deferred.Or_error.t
+val unpin_message : int -> int -> unit Deferred.Or_error.t
val group_recipient_add :
- int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val group_recipient_remove :
- int -> int -> Yojson.Safe.json Deferred.Or_error.t
-val get_emojis : int -> Yojson.Safe.json Deferred.Or_error.t
-val get_emoji : int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
+val get_emojis : int -> Emoji.t list Deferred.Or_error.t
+val get_emoji : int -> int -> Emoji.t Deferred.Or_error.t
val create_emoji :
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Emoji.t Deferred.Or_error.t
val edit_emoji :
int ->
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
-val delete_emoji : int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Emoji.t Deferred.Or_error.t
+val delete_emoji : int -> int -> unit Deferred.Or_error.t
val create_guild :
- Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
-val get_guild : int -> Yojson.Safe.json Deferred.Or_error.t
+ Yojson.Safe.json -> Guild_t.t Deferred.Or_error.t
+val get_guild : int -> Guild_t.t Deferred.Or_error.t
val edit_guild :
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
-val delete_guild : int -> Yojson.Safe.json Deferred.Or_error.t
-val get_guild_channels : int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Guild_t.t Deferred.Or_error.t
+val delete_guild : int -> unit Deferred.Or_error.t
+val get_guild_channels : int -> Channel_t.t list Deferred.Or_error.t
val create_guild_channel :
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Channel_t.t Deferred.Or_error.t
val modify_guild_channel_positions :
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
-val get_member : int -> int -> Yojson.Safe.json Deferred.Or_error.t
-val get_members : int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> unit Deferred.Or_error.t
+val get_member : int -> int -> Member.t Deferred.Or_error.t
+val get_members : int -> Member.t list Deferred.Or_error.t
val add_member :
int ->
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Member.t Deferred.Or_error.t
val edit_member :
int ->
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> unit Deferred.Or_error.t
val remove_member :
int ->
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> unit Deferred.Or_error.t
val change_nickname :
int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
val add_member_role :
- int -> int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> int -> unit Deferred.Or_error.t
val remove_member_role :
- int -> int -> int -> Yojson.Safe.json Deferred.Or_error.t
-val get_bans : int -> Yojson.Safe.json Deferred.Or_error.t
-val get_ban : int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> int -> unit Deferred.Or_error.t
+val get_bans : int -> Ban.t list Deferred.Or_error.t
+val get_ban : int -> int -> Ban.t Deferred.Or_error.t
val guild_ban_add :
int ->
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> unit Deferred.Or_error.t
val guild_ban_remove :
int ->
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
-val get_roles : int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> unit Deferred.Or_error.t
+val get_roles : int -> Role_t.t list Deferred.Or_error.t
val guild_role_add :
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Role_t.t Deferred.Or_error.t
val guild_roles_edit :
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Role_t.t list Deferred.Or_error.t
val guild_role_edit :
int ->
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> Role_t.t Deferred.Or_error.t
val guild_role_remove :
- int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val guild_prune_count :
- int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> int Deferred.Or_error.t
val guild_prune_start :
- int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> int Deferred.Or_error.t
val get_guild_voice_regions :
int -> Yojson.Safe.json Deferred.Or_error.t
val get_guild_invites : int -> Yojson.Safe.json Deferred.Or_error.t
val get_integrations : int -> Yojson.Safe.json Deferred.Or_error.t
val add_integration :
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> unit Deferred.Or_error.t
val edit_integration :
int ->
- int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
+ int -> Yojson.Safe.json -> unit Deferred.Or_error.t
val delete_integration :
- int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val sync_integration :
- int -> int -> Yojson.Safe.json Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val get_guild_embed : int -> Yojson.Safe.json Deferred.Or_error.t
val edit_guild_embed :
int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
val get_vanity_url : int -> Yojson.Safe.json Deferred.Or_error.t
val get_invite : string -> Yojson.Safe.json Deferred.Or_error.t
val delete_invite : string -> Yojson.Safe.json Deferred.Or_error.t
-val get_current_user : unit -> Yojson.Safe.json Deferred.Or_error.t
+val get_current_user : unit -> User_t.t Deferred.Or_error.t
val edit_current_user :
- Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
-val get_guilds : unit -> Yojson.Safe.json Deferred.Or_error.t
-val leave_guild : int -> Yojson.Safe.json Deferred.Or_error.t
+ Yojson.Safe.json -> User_t.t Deferred.Or_error.t
+val get_guilds : unit -> Guild_t.t list Deferred.Or_error.t
+val leave_guild : int -> unit Deferred.Or_error.t
val get_private_channels :
unit -> Yojson.Safe.json Deferred.Or_error.t
val create_dm :
@@ -155,7 +154,7 @@ val create_dm :
val create_group_dm :
Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
val get_connections : unit -> Yojson.Safe.json Deferred.Or_error.t
-val get_user : int -> Yojson.Safe.json Deferred.Or_error.t
+val get_user : int -> User_t.t Deferred.Or_error.t
val get_voice_regions : unit -> Yojson.Safe.json Deferred.Or_error.t
val create_webhook :
int -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
@@ -169,9 +168,9 @@ val edit_webhook :
val edit_webhook_with_token :
int ->
string -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
-val delete_webhook : int -> Yojson.Safe.json Deferred.Or_error.t
+val delete_webhook : int -> unit Deferred.Or_error.t
val delete_webhook_with_token :
- int -> string -> Yojson.Safe.json Deferred.Or_error.t
+ int -> string -> unit Deferred.Or_error.t
val execute_webhook :
int ->
string -> Yojson.Safe.json -> Yojson.Safe.json Deferred.Or_error.t
diff --git a/lib/impl.ml b/lib/impl.ml
index 558e167..573ef30 100644
--- a/lib/impl.ml
+++ b/lib/impl.ml
@@ -1,5 +1,4 @@
module Channel(T : S.Has_snowflake) : S.ChannelImpl with type t := T.t = struct
- open Async
open Core
include T
@@ -24,16 +23,16 @@ module Channel(T : S.Has_snowflake) : S.ChannelImpl with type t := T.t = struct
("content", content);
("file", file);
("tts", `Bool tts);
- ]) >>| Result.map ~f:Message_t.of_yojson_exn
+ ])
let say content ch =
send_message ~content ch
let delete ch =
- Http.delete_channel (get_id ch) >>| Result.map ~f:ignore
+ Http.delete_channel (get_id ch)
let get_message ~id ch =
- Http.get_message (get_id ch) id >>| Result.map ~f:Message_t.of_yojson_exn
+ Http.get_message (get_id ch) id
let get_messages ?(mode=`Around) ?id ?(limit=50) ch =
let kind = match mode with
@@ -44,36 +43,30 @@ module Channel(T : S.Has_snowflake) : S.ChannelImpl with type t := T.t = struct
let id = match id with
| Some id -> id
| None -> raise No_message_found in
- Http.get_messages (get_id ch) id kind >>| Result.map ~f:(fun l ->
- Yojson.Safe.Util.to_list l
- |> List.map ~f:Message_t.of_yojson_exn)
+ Http.get_messages (get_id ch) id kind
let broadcast_typing ch =
- Http.broadcast_typing (get_id ch) >>| Result.map ~f:ignore
+ Http.broadcast_typing (get_id ch)
let get_pins ch =
- Http.get_pinned_messages (get_id ch) >>| Result.map ~f:(fun l ->
- Yojson.Safe.Util.to_list l
- |> List.map ~f:Message_t.of_yojson_exn)
+ Http.get_pinned_messages (get_id ch)
end
module Guild(T : S.Has_snowflake) : S.GuildImpl with type t := T.t = struct
- open Core
- open Async
include 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);
- ]) >>| Result.map ~f:ignore
+ ])
let create_emoji ~name ~image guild =
Http.create_emoji (get_id guild) (`Assoc [
("name", `String name);
("image", `String image);
("roles", `List []);
- ]) >>| Result.map ~f:Emoji.of_yojson_exn
+ ])
let create_role ~name ?colour ?permissions ?hoist ?mentionable guild =
let payload = ("name", `String name) :: [] in
@@ -90,7 +83,6 @@ module Guild(T : S.Has_snowflake) : S.GuildImpl with type t := T.t = struct
| Some m -> ("mentionable", `Bool m) :: payload
| None -> payload
in Http.guild_role_add (get_id guild) (`Assoc payload)
- >>| Result.map ~f:(fun r -> Role_t.role_of_yojson_exn r |> Role_t.wrap ~guild_id:(get_id guild))
let create_channel ~mode ~name guild =
let kind = match mode with
@@ -100,29 +92,26 @@ module Guild(T : S.Has_snowflake) : S.GuildImpl with type t := T.t = struct
in Http.create_guild_channel (get_id guild) (`Assoc [
("name", `String name);
("type", `Int kind);
- ]) >>| Result.map ~f:Channel_t.of_yojson_exn
+ ])
let delete guild =
- Http.delete_guild (get_id guild) >>| Result.map ~f:ignore
+ Http.delete_guild (get_id guild)
let get_ban ~id guild =
- Http.get_ban (get_id guild) id >>| Result.map ~f:Ban_t.of_yojson_exn
+ Http.get_ban (get_id guild) id
let get_bans guild =
- Http.get_bans (get_id guild) >>| Result.map ~f:(fun bans ->
- Yojson.Safe.Util.to_list bans
- |> List.map ~f:Ban_t.of_yojson_exn)
+ Http.get_bans (get_id guild)
let get_emoji ~id guild =
- Http.get_emoji (get_id guild) id >>| Result.map ~f:Emoji.of_yojson_exn
+ Http.get_emoji (get_id guild) id
(* TODO add invite abstraction? *)
let get_invites guild =
Http.get_guild_invites (get_id guild)
let get_prune_count ~days guild =
- Http.guild_prune_count (get_id guild) days >>| Result.map ~f:(fun prune ->
- Yojson.Safe.Util.(member "pruned" prune |> to_int))
+ Http.guild_prune_count (get_id guild) days
(* TODO add webhook abstraction? *)
let get_webhooks guild =
@@ -132,7 +121,7 @@ module Guild(T : S.Has_snowflake) : S.GuildImpl with type t := T.t = struct
let payload = match reason with
| Some r -> `Assoc [("reason", `String r)]
| None -> `Null
- in Http.remove_member (get_id guild) id payload >>| Result.map ~f:ignore
+ in Http.remove_member (get_id guild) id payload
let leave guild =
Http.leave_guild (get_id guild)
@@ -142,33 +131,30 @@ module Guild(T : S.Has_snowflake) : S.GuildImpl with type t := T.t = struct
Http.get_guild_voice_regions (get_id guild)
let prune ~days guild =
- Http.guild_prune_start (get_id guild) days >>| Result.map ~f:(fun prune ->
- Yojson.Safe.Util.(member "pruned" prune |> to_int))
+ Http.guild_prune_start (get_id guild) days
let request_members guild =
- Http.get_members (get_id guild) >>| Result.map ~f:(fun members ->
- Yojson.Safe.Util.to_list members
- |> List.map ~f:Member_t.of_yojson_exn)
+ Http.get_members (get_id guild)
let set_afk_channel ~id guild = Http.edit_guild (get_id guild) (`Assoc [
("afk_channel_id", `Int id);
- ]) >>| Result.map ~f:of_yojson_exn
+ ])
let set_afk_timeout ~timeout guild = Http.edit_guild (get_id guild) (`Assoc [
("afk_timeout", `Int timeout);
- ]) >>| Result.map ~f:of_yojson_exn
+ ])
let set_name ~name guild = Http.edit_guild (get_id guild) (`Assoc [
("name", `String name);
- ]) >>| Result.map ~f:of_yojson_exn
+ ])
let set_icon ~icon guild = Http.edit_guild (get_id guild) (`Assoc [
("icon", `String icon);
- ]) >>| Result.map ~f:of_yojson_exn
+ ])
let unban_user ~id ?reason guild =
let payload = match reason with
| Some r -> `Assoc [("reason", `String r)]
| None -> `Null
- in Http.guild_ban_remove (get_id guild) id payload >>| Result.map ~f:ignore
+ in Http.guild_ban_remove (get_id guild) id payload
end \ No newline at end of file
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
diff --git a/lib/s.ml b/lib/s.ml
index 0985082..1aa69a6 100644
--- a/lib/s.ml
+++ b/lib/s.ml
@@ -38,7 +38,7 @@ module type ChannelImpl = sig
(** [say str ch] is equivalent to [send_message ~content:str ch]. *)
val say : string -> t -> Message_t.t Deferred.Or_error.t
- val delete : t -> unit Deferred.Or_error.t
+ val delete : t -> Channel_t.t Deferred.Or_error.t
val get_message : id:Snowflake.t -> t -> Message_t.t Deferred.Or_error.t
val get_messages :
?mode:[ `Before | `After | `Around ] ->
@@ -74,13 +74,13 @@ module type GuildImpl = sig
val get_prune_count : days:int -> t -> int Deferred.Or_error.t
val get_webhooks : t -> Yojson.Safe.json Deferred.Or_error.t
val kick_user : id:Snowflake.t -> ?reason:string -> t -> unit Deferred.Or_error.t
- val leave : t -> Yojson.Safe.json Deferred.Or_error.t
+ val leave : t -> unit Deferred.Or_error.t
val list_voice_regions : t -> Yojson.Safe.json 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 -> t Deferred.Or_error.t
- val set_afk_timeout : timeout:int -> t -> t Deferred.Or_error.t
- val set_name : name:string -> t -> t Deferred.Or_error.t
- val set_icon : icon:string -> t -> t 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
end \ No newline at end of file