diff options
| author | Adelyn Breelove <[email protected]> | 2019-01-23 15:56:57 -0700 |
|---|---|---|
| committer | Adelyn Breelove <[email protected]> | 2019-01-23 15:56:57 -0700 |
| commit | cd8c706d092c4fecbea753b90b42bb9f30e0ed17 (patch) | |
| tree | 058fe1747d49264b52274c3cf9c5930bd43ee6b4 | |
| parent | Update README (diff) | |
| download | disml-cd8c706d092c4fecbea753b90b42bb9f30e0ed17.tar.xz disml-cd8c706d092c4fecbea753b90b42bb9f30e0ed17.zip | |
Improve HTTP stuff
| -rw-r--r-- | lib/http.ml | 113 | ||||
| -rw-r--r-- | lib/http.mli | 127 | ||||
| -rw-r--r-- | lib/impl.ml | 58 | ||||
| -rw-r--r-- | lib/models/channel/message/message.ml | 20 | ||||
| -rw-r--r-- | lib/models/guild/guild.ml | 4 | ||||
| -rw-r--r-- | lib/models/guild/member.ml | 16 | ||||
| -rw-r--r-- | lib/models/guild/role.mli | 14 | ||||
| -rw-r--r-- | lib/s.ml | 12 |
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 @@ -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 |