aboutsummaryrefslogtreecommitdiff
path: root/lib/http.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/http.ml')
-rw-r--r--lib/http.ml28
1 files changed, 17 insertions, 11 deletions
diff --git a/lib/http.ml b/lib/http.ml
index 810bdc3..f04a49f 100644
--- a/lib/http.ml
+++ b/lib/http.ml
@@ -1,4 +1,5 @@
module Make(T : S.Token) = struct
+ open Core
open Async
open Cohttp
include T
@@ -33,7 +34,12 @@ module Make(T : S.Token) = struct
| Some r -> Mvar.put (Rl.find_exn !rl path) r
| None -> raise Bad_response_headers)
>>= fun () ->
- body |> Cohttp_async.Body.to_string >>| Yojson.Safe.from_string
+ match resp |> Response.status |> Code.code_of_status with
+ | 200 -> body |> Cohttp_async.Body.to_string >>= Deferred.Or_error.return
+ | code ->
+ body |> Cohttp_async.Body.to_string >>= fun body ->
+ Deferred.Or_error.errorf "Unsuccessful response received: %d - %s" code body
+
let request ?(body=`Null) m path =
rl := Rl.update ~f:(function
@@ -76,8 +82,8 @@ module Make(T : S.Token) = struct
let delete_channel channel_id =
Base.request `DELETE (Endpoints.channel channel_id)
- let get_messages channel_id =
- Base.request `GET (Endpoints.channel_messages channel_id)
+ let get_messages channel_id limit (kind, id) =
+ Base.request `GET (Printf.sprintf "%s?%s=%d&limit=%d" (Endpoints.channel_messages channel_id) kind id limit)
let get_message channel_id message_id =
Base.request `GET (Endpoints.channel_message channel_id message_id)
@@ -187,8 +193,8 @@ module Make(T : S.Token) = struct
let edit_member guild_id user_id body =
Base.request ~body `PATCH (Endpoints.guild_member guild_id user_id)
- let remove_member guild_id user_id =
- Base.request `DELETE (Endpoints.guild_member guild_id user_id)
+ let remove_member guild_id user_id body =
+ Base.request ~body `DELETE (Endpoints.guild_member guild_id user_id)
let change_nickname guild_id body =
Base.request ~body `PATCH (Endpoints.guild_me_nick guild_id)
@@ -208,8 +214,8 @@ module Make(T : S.Token) = struct
let guild_ban_add guild_id user_id body =
Base.request ~body `PUT (Endpoints.guild_ban guild_id user_id)
- let guild_ban_remove guild_id user_id =
- Base.request `DELETE (Endpoints.guild_ban guild_id user_id)
+ let guild_ban_remove guild_id user_id body =
+ Base.request ~body `DELETE (Endpoints.guild_ban guild_id user_id)
let get_roles guild_id =
Base.request `GET (Endpoints.guild_roles guild_id)
@@ -226,11 +232,11 @@ module Make(T : S.Token) = struct
let guild_role_remove guild_id role_id =
Base.request `DELETE (Endpoints.guild_role guild_id role_id)
- let guild_prune_count guild_id =
- Base.request `GET (Endpoints.guild_prune guild_id)
+ let guild_prune_count guild_id days =
+ Base.request `GET ((Endpoints.guild_prune guild_id) ^ "?days=" ^ Int.to_string days)
- let guild_prune_start guild_id body =
- Base.request ~body `POST (Endpoints.guild_prune guild_id)
+ let guild_prune_start guild_id days =
+ Base.request `POST ((Endpoints.guild_prune guild_id) ^ "?days=" ^ Int.to_string days)
let get_guild_voice_regions guild_id =
Base.request `GET (Endpoints.guild_voice_regions guild_id)