aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2018-12-17 16:09:35 -0700
committerAdelyn Breelove <[email protected]>2018-12-17 16:09:35 -0700
commit792c8c437f45d9fd2529f1ccab27faf79d98ba91 (patch)
tree3c8f5e59d617219a3d442083c29d5cbdfa6ffdb5 /lib
parentMore stuff (diff)
downloaddisml-792c8c437f45d9fd2529f1ccab27faf79d98ba91.tar.xz
disml-792c8c437f45d9fd2529f1ccab27faf79d98ba91.zip
Some refactoring of http code
Diffstat (limited to 'lib')
-rw-r--r--lib/http.ml7
-rw-r--r--lib/models/guild.ml8
-rw-r--r--lib/models/message.ml1
-rw-r--r--lib/s.ml313
-rw-r--r--lib/sharder.ml4
5 files changed, 185 insertions, 148 deletions
diff --git a/lib/http.ml b/lib/http.ml
index abc2b28..e2e5471 100644
--- a/lib/http.ml
+++ b/lib/http.ml
@@ -34,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
diff --git a/lib/models/guild.ml b/lib/models/guild.ml
index 7364327..381de15 100644
--- a/lib/models/guild.ml
+++ b/lib/models/guild.ml
@@ -48,18 +48,18 @@ module Make(Http : S.Http) = struct
let get_channel ~id guild =
match List.find ~f:(fun c -> c.id = id) guild.channels with
- | Some c -> return c
+ | Some c -> Deferred.Or_error.return c
| None -> Http.get_channel id >>| fun c ->
- c |> Yojson.Safe.to_string |> Channel_j.t_of_string
+ Result.(c >>| Channel_j.t_of_string)
let get_emoji ~id guild = Http.get_emoji guild.id id
let get_invites guild = Http.get_guild_invites guild.id
let get_member ~id guild =
match List.find ~f:(fun m -> m.user.id = id) guild.members with
- | Some m -> return m
+ | Some m -> Deferred.Or_error.return m
| None -> Http.get_member guild.id id >>| fun m ->
- m |> Yojson.Safe.to_string |> Member_j.t_of_string
+ Result.(m >>| Member_j.t_of_string)
let get_prune_count ~days guild = Http.guild_prune_count guild.id days
diff --git a/lib/models/message.ml b/lib/models/message.ml
index 29148ee..222edf8 100644
--- a/lib/models/message.ml
+++ b/lib/models/message.ml
@@ -1,4 +1,5 @@
module Make(Http : S.Http) = struct
+ open Async
open Message_t
let add_reaction msg (emoji:Emoji_t.t) =
diff --git a/lib/s.ml b/lib/s.ml
index d46726f..fa7e02d 100644
--- a/lib/s.ml
+++ b/lib/s.ml
@@ -17,8 +17,8 @@ module type Embed = sig end
module type Emoji = sig end
module type Guild = sig
- val ban_user : id:Snowflake_t.t -> ?reason:string -> ?days:int -> Guild_t.t -> Yojson.Safe.json Deferred.t
- val create_emoji : name:string -> image:string -> Guild_t.t -> Yojson.Safe.json Deferred.t
+ val ban_user : id:Snowflake_t.t -> ?reason:string -> ?days:int -> Guild_t.t -> string Deferred.Or_error.t
+ val create_emoji : name:string -> image:string -> Guild_t.t -> string Deferred.Or_error.t
val create_role :
name:string ->
?colour:int ->
@@ -26,52 +26,52 @@ module type Guild = sig
?hoist:bool ->
?mentionable:bool ->
Guild_t.t ->
- Yojson.Safe.json Deferred.t
- val create_channel : mode:[ `Text | `Voice | `Category ] -> name:string -> Guild_t.t -> Yojson.Safe.json Deferred.t
- val delete : Guild_t.t -> Yojson.Safe.json Deferred.t
- val get_ban : id:Snowflake_t.t -> Guild_t.t -> Yojson.Safe.json Deferred.t
- val get_bans : Guild_t.t -> Yojson.Safe.json Deferred.t
- val get_channel : id:Snowflake_t.t -> Guild_t.t -> Channel_t.t Deferred.t
- val get_emoji : id:Snowflake_t.t -> Guild_t.t -> Yojson.Safe.json Deferred.t
- val get_invites : Guild_t.t -> Yojson.Safe.json Deferred.t
- val get_member : id:Snowflake_t.t -> Guild_t.t -> Member_t.t Deferred.t
- val get_prune_count : days:int -> Guild_t.t -> Yojson.Safe.json Deferred.t
+ string Deferred.Or_error.t
+ val create_channel : mode:[ `Text | `Voice | `Category ] -> name:string -> Guild_t.t -> string Deferred.Or_error.t
+ val delete : Guild_t.t -> string Deferred.Or_error.t
+ val get_ban : id:Snowflake_t.t -> Guild_t.t -> string Deferred.Or_error.t
+ val get_bans : Guild_t.t -> string Deferred.Or_error.t
+ val get_channel : id:Snowflake_t.t -> Guild_t.t -> Channel_t.t Deferred.Or_error.t
+ val get_emoji : id:Snowflake_t.t -> Guild_t.t -> string Deferred.Or_error.t
+ val get_invites : Guild_t.t -> string Deferred.Or_error.t
+ val get_member : id:Snowflake_t.t -> Guild_t.t -> Member_t.t Deferred.Or_error.t
+ val get_prune_count : days:int -> Guild_t.t -> string Deferred.Or_error.t
val get_role : id:Snowflake_t.t -> Guild_t.t -> Role_t.t option
- val get_webhooks : Guild_t.t -> Yojson.Safe.json Deferred.t
- val kick_user : id:Snowflake_t.t -> ?reason:string -> Guild_t.t -> Yojson.Safe.json Deferred.t
- val leave : Guild_t.t -> Yojson.Safe.json Deferred.t
- val list_voice_regions : Guild_t.t -> Yojson.Safe.json Deferred.t
- val prune : days:int -> Guild_t.t -> Yojson.Safe.json Deferred.t
- val request_members : Guild_t.t -> Yojson.Safe.json Deferred.t
- val set_afk_channel : id:Snowflake_t.t -> Guild_t.t -> Yojson.Safe.json Deferred.t
- val set_afk_timeout : timeout:int -> Guild_t.t -> Yojson.Safe.json Deferred.t
- val set_name : name:string -> Guild_t.t -> Yojson.Safe.json Deferred.t
- val set_icon : icon:string -> Guild_t.t -> Yojson.Safe.json Deferred.t
- val unban_user : id:Snowflake_t.t -> ?reason:string -> Guild_t.t -> Yojson.Safe.json Deferred.t
+ val get_webhooks : Guild_t.t -> string Deferred.Or_error.t
+ val kick_user : id:Snowflake_t.t -> ?reason:string -> Guild_t.t -> string Deferred.Or_error.t
+ val leave : Guild_t.t -> string Deferred.Or_error.t
+ val list_voice_regions : Guild_t.t -> string Deferred.Or_error.t
+ val prune : days:int -> Guild_t.t -> string Deferred.Or_error.t
+ val request_members : Guild_t.t -> string Deferred.Or_error.t
+ val set_afk_channel : id:Snowflake_t.t -> Guild_t.t -> string Deferred.Or_error.t
+ val set_afk_timeout : timeout:int -> Guild_t.t -> string Deferred.Or_error.t
+ val set_name : name:string -> Guild_t.t -> string Deferred.Or_error.t
+ val set_icon : icon:string -> Guild_t.t -> string Deferred.Or_error.t
+ val unban_user : id:Snowflake_t.t -> ?reason:string -> Guild_t.t -> string Deferred.Or_error.t
end
module type Member = sig
- (* val add_role : Member_t.t -> Role_t.t -> Yojson.Safe.json Deferred.t
- val remove_role : Member_t.t -> Role_t.t -> Yojson.Safe.json Deferred.t
- val ban : ?reason:string -> ?days:int -> Member_t.t -> Yojson.Safe.json Deferred.t
- val ban : ?reason:string -> Member_t.t -> Yojson.Safe.json Deferred.t
- val kick : ?reason:string -> Member_t.t -> Yojson.Safe.json Deferred.t
- val mute : Member_t.t -> Yojson.Safe.json Deferred.t
- val deafen : Member_t.t -> Yojson.Safe.json Deferred.t
- val unmute : Member_t.t -> Yojson.Safe.json Deferred.t
- val undeafen : Member_t.t -> Yojson.Safe.json Deferred.t *)
+ (* val add_role : Member_t.t -> Role_t.t -> string Deferred.Or_error.t
+ val remove_role : Member_t.t -> Role_t.t -> string Deferred.Or_error.t
+ val ban : ?reason:string -> ?days:int -> Member_t.t -> string Deferred.Or_error.t
+ val ban : ?reason:string -> Member_t.t -> string Deferred.Or_error.t
+ val kick : ?reason:string -> Member_t.t -> string Deferred.Or_error.t
+ val mute : Member_t.t -> string Deferred.Or_error.t
+ val deafen : Member_t.t -> string Deferred.Or_error.t
+ val unmute : Member_t.t -> string Deferred.Or_error.t
+ val undeafen : Member_t.t -> string Deferred.Or_error.t *)
end
module type Message = sig
- val add_reaction : Message_t.t -> Emoji_t.t -> Yojson.Safe.json Deferred.t
- val remove_reaction : Message_t.t -> Emoji_t.t -> User_t.t -> Yojson.Safe.json Deferred.t
- val clear_reactions : Message_t.t -> Yojson.Safe.json Deferred.t
- val delete : Message_t.t -> Yojson.Safe.json Deferred.t
- val pin : Message_t.t -> Yojson.Safe.json Deferred.t
- val unpin : Message_t.t -> Yojson.Safe.json Deferred.t
- val reply : Message_t.t -> string -> Yojson.Safe.json Deferred.t
- val set_content : Message_t.t -> string -> Yojson.Safe.json Deferred.t
- val set_embed : Message_t.t -> Embed_t.t -> Yojson.Safe.json Deferred.t
+ val add_reaction : Message_t.t -> Emoji_t.t -> string Deferred.Or_error.t
+ val remove_reaction : Message_t.t -> Emoji_t.t -> User_t.t -> string Deferred.Or_error.t
+ val clear_reactions : Message_t.t -> string Deferred.Or_error.t
+ val delete : Message_t.t -> string Deferred.Or_error.t
+ val pin : Message_t.t -> string Deferred.Or_error.t
+ val unpin : Message_t.t -> string Deferred.Or_error.t
+ val reply : Message_t.t -> string -> string Deferred.Or_error.t
+ val set_content : Message_t.t -> string -> string Deferred.Or_error.t
+ val set_embed : Message_t.t -> Embed_t.t -> string Deferred.Or_error.t
end
module type Presence = sig end
@@ -79,13 +79,13 @@ module type Presence = sig end
module type Reaction = sig end
module type Role = sig
- val allow_mention : Role_t.t -> Yojson.Safe.json Deferred.t
- val delete : Role_t.t -> Yojson.Safe.json Deferred.t
- val disallow_mention : Role_t.t -> Yojson.Safe.json Deferred.t
- val hoist : Role_t.t -> Yojson.Safe.json Deferred.t
- val set_colour : colour:int -> Role_t.t -> Yojson.Safe.json Deferred.t
- val set_name : name:string -> Role_t.t -> Yojson.Safe.json Deferred.t
- val unhoist : Role_t.t -> Yojson.Safe.json Deferred.t
+ val allow_mention : Role_t.t -> string Deferred.Or_error.t
+ val delete : Role_t.t -> string Deferred.Or_error.t
+ val disallow_mention : Role_t.t -> string Deferred.Or_error.t
+ val hoist : Role_t.t -> string Deferred.Or_error.t
+ val set_colour : colour:int -> Role_t.t -> string Deferred.Or_error.t
+ val set_name : name:string -> Role_t.t -> string Deferred.Or_error.t
+ val unhoist : Role_t.t -> string Deferred.Or_error.t
end
module type Snowflake = sig
@@ -99,7 +99,7 @@ module type User = sig
val default_avatar : User_t.t -> string
val face : User_t.t -> string
(* val private_channel : User_t.t -> Channel_t.t *)
- (* val send : User_t.t -> Yojson.Safe.json Deferred.t *)
+ (* val send : User_t.t -> string Deferred.Or_error.t *)
end
module type Http = sig
@@ -117,149 +117,176 @@ module type Http = sig
val process_response :
string ->
Cohttp_async.Response.t * Cohttp_async.Body.t ->
- Yojson.Safe.json Deferred.t
+ string Deferred.Or_error.t
val request :
?body:Yojson.Safe.json ->
[> `DELETE | `GET | `PATCH | `POST | `PUT ] ->
string ->
- Yojson.Safe.json Deferred.t
+ string Deferred.Or_error.t
end
(* Auto-generated signatures *)
- val get_gateway : unit -> Yojson.Safe.json Conduit_async.io
- val get_gateway_bot : unit -> Yojson.Safe.json Conduit_async.io
- val get_channel : int -> Yojson.Safe.json Conduit_async.io
+ val get_gateway : unit -> string Core.Or_error.t Conduit_async.io
+ val get_gateway_bot : unit -> string Core.Or_error.t Conduit_async.io
+ val get_channel : int -> string Core.Or_error.t Conduit_async.io
val modify_channel :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val delete_channel : int -> Yojson.Safe.json Conduit_async.io
- val get_messages : int -> Yojson.Safe.json Conduit_async.io
- val get_message : int -> int -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val delete_channel : int -> string Core.Or_error.t Conduit_async.io
+ val get_messages : int -> string Core.Or_error.t Conduit_async.io
+ val get_message : int -> int -> string Core.Or_error.t Conduit_async.io
val create_message :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val create_reaction :
- int -> int -> string -> Yojson.Safe.json Conduit_async.io
+ int -> int -> string -> string Core.Or_error.t Conduit_async.io
val delete_own_reaction :
- int -> int -> string -> Yojson.Safe.json Conduit_async.io
+ int -> int -> string -> string Core.Or_error.t Conduit_async.io
val delete_reaction :
- int -> int -> string -> int -> Yojson.Safe.json Conduit_async.io
+ int -> int -> string -> int -> string Core.Or_error.t Conduit_async.io
val get_reactions :
- int -> int -> string -> Yojson.Safe.json Conduit_async.io
- val delete_reactions : int -> int -> Yojson.Safe.json Conduit_async.io
+ int -> int -> string -> string Core.Or_error.t Conduit_async.io
+ val delete_reactions :
+ int -> int -> string Core.Or_error.t Conduit_async.io
val edit_message :
- int -> int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val delete_message : int -> int -> Yojson.Safe.json Conduit_async.io
+ int ->
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val delete_message :
+ int -> int -> string Core.Or_error.t Conduit_async.io
val bulk_delete :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val edit_channel_permissions :
- int -> int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val get_channel_invites : int -> Yojson.Safe.json Conduit_async.io
+ int ->
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val get_channel_invites : int -> string Core.Or_error.t Conduit_async.io
val create_channel_invite :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val delete_channel_permission :
- int -> int -> Yojson.Safe.json Conduit_async.io
- val broadcast_typing : int -> Yojson.Safe.json Conduit_async.io
- val get_pinned_messages : int -> Yojson.Safe.json Conduit_async.io
- val pin_message : int -> int -> Yojson.Safe.json Conduit_async.io
- val unpin_message : int -> int -> Yojson.Safe.json Conduit_async.io
- val group_recipient_add : int -> int -> Yojson.Safe.json Conduit_async.io
+ int -> int -> string Core.Or_error.t Conduit_async.io
+ val broadcast_typing : int -> string Core.Or_error.t Conduit_async.io
+ val get_pinned_messages : int -> string Core.Or_error.t Conduit_async.io
+ val pin_message : int -> int -> string Core.Or_error.t Conduit_async.io
+ val unpin_message : int -> int -> string Core.Or_error.t Conduit_async.io
+ val group_recipient_add :
+ int -> int -> string Core.Or_error.t Conduit_async.io
val group_recipient_remove :
- int -> int -> Yojson.Safe.json Conduit_async.io
- val get_emojis : int -> Yojson.Safe.json Conduit_async.io
- val get_emoji : int -> int -> Yojson.Safe.json Conduit_async.io
+ int -> int -> string Core.Or_error.t Conduit_async.io
+ val get_emojis : int -> string Core.Or_error.t Conduit_async.io
+ val get_emoji : int -> int -> string Core.Or_error.t Conduit_async.io
val create_emoji :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val edit_emoji :
- int -> int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val delete_emoji : int -> int -> Yojson.Safe.json Conduit_async.io
- val create_guild : Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val get_guild : int -> Yojson.Safe.json Conduit_async.io
+ int ->
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val delete_emoji : int -> int -> string Core.Or_error.t Conduit_async.io
+ val create_guild :
+ Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val get_guild : int -> string Core.Or_error.t Conduit_async.io
val edit_guild :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val delete_guild : int -> Yojson.Safe.json Conduit_async.io
- val get_guild_channels : int -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val delete_guild : int -> string Core.Or_error.t Conduit_async.io
+ val get_guild_channels : int -> string Core.Or_error.t Conduit_async.io
val create_guild_channel :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val modify_guild_channel_positions :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val get_member : int -> int -> Yojson.Safe.json Conduit_async.io
- val get_members : int -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val get_member : int -> int -> string Core.Or_error.t Conduit_async.io
+ val get_members : int -> string Core.Or_error.t Conduit_async.io
val add_member :
- int -> int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int ->
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val edit_member :
- int -> int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val remove_member : int -> int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int ->
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val remove_member :
+ int ->
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val change_nickname :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val add_member_role :
- int -> int -> int -> Yojson.Safe.json Conduit_async.io
+ int -> int -> int -> string Core.Or_error.t Conduit_async.io
val remove_member_role :
- int -> int -> int -> Yojson.Safe.json Conduit_async.io
- val get_bans : int -> Yojson.Safe.json Conduit_async.io
- val get_ban : int -> int -> Yojson.Safe.json Conduit_async.io
+ int -> int -> int -> string Core.Or_error.t Conduit_async.io
+ val get_bans : int -> string Core.Or_error.t Conduit_async.io
+ val get_ban : int -> int -> string Core.Or_error.t Conduit_async.io
val guild_ban_add :
- int -> int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val guild_ban_remove : int -> int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val get_roles : int -> Yojson.Safe.json Conduit_async.io
+ int ->
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val guild_ban_remove :
+ int ->
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val get_roles : int -> string Core.Or_error.t Conduit_async.io
val guild_role_add :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val guild_roles_edit :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val guild_role_edit :
- int -> int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val guild_role_remove : int -> int -> Yojson.Safe.json Conduit_async.io
- val guild_prune_count : int -> int -> Yojson.Safe.json Conduit_async.io
+ int ->
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val guild_role_remove :
+ int -> int -> string Core.Or_error.t Conduit_async.io
+ val guild_prune_count :
+ int -> int -> string Core.Or_error.t Conduit_async.io
val guild_prune_start :
- int -> int -> Yojson.Safe.json Conduit_async.io
- val get_guild_voice_regions : int -> Yojson.Safe.json Conduit_async.io
- val get_guild_invites : int -> Yojson.Safe.json Conduit_async.io
- val get_integrations : int -> Yojson.Safe.json Conduit_async.io
+ int -> int -> string Core.Or_error.t Conduit_async.io
+ val get_guild_voice_regions :
+ int -> string Core.Or_error.t Conduit_async.io
+ val get_guild_invites : int -> string Core.Or_error.t Conduit_async.io
+ val get_integrations : int -> string Core.Or_error.t Conduit_async.io
val add_integration :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val edit_integration :
- int -> int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val delete_integration : int -> int -> Yojson.Safe.json Conduit_async.io
- val sync_integration : int -> int -> Yojson.Safe.json Conduit_async.io
- val get_guild_embed : int -> Yojson.Safe.json Conduit_async.io
+ int ->
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val delete_integration :
+ int -> int -> string Core.Or_error.t Conduit_async.io
+ val sync_integration :
+ int -> int -> string Core.Or_error.t Conduit_async.io
+ val get_guild_embed : int -> string Core.Or_error.t Conduit_async.io
val edit_guild_embed :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val get_vanity_url : int -> Yojson.Safe.json Conduit_async.io
- val get_invite : string -> Yojson.Safe.json Conduit_async.io
- val delete_invite : string -> Yojson.Safe.json Conduit_async.io
- val get_current_user : unit -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val get_vanity_url : int -> string Core.Or_error.t Conduit_async.io
+ val get_invite : string -> string Core.Or_error.t Conduit_async.io
+ val delete_invite : string -> string Core.Or_error.t Conduit_async.io
+ val get_current_user : unit -> string Core.Or_error.t Conduit_async.io
val edit_current_user :
- Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val get_guilds : unit -> Yojson.Safe.json Conduit_async.io
- val leave_guild : int -> Yojson.Safe.json Conduit_async.io
- val get_private_channels : unit -> Yojson.Safe.json Conduit_async.io
- val create_dm : Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val get_guilds : unit -> string Core.Or_error.t Conduit_async.io
+ val leave_guild : int -> string Core.Or_error.t Conduit_async.io
+ val get_private_channels :
+ unit -> string Core.Or_error.t Conduit_async.io
+ val create_dm :
+ Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val create_group_dm :
- Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val get_connections : unit -> Yojson.Safe.json Conduit_async.io
- val get_user : int -> Yojson.Safe.json Conduit_async.io
- val get_voice_regions : unit -> Yojson.Safe.json Conduit_async.io
+ Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val get_connections : unit -> string Core.Or_error.t Conduit_async.io
+ val get_user : int -> string Core.Or_error.t Conduit_async.io
+ val get_voice_regions : unit -> string Core.Or_error.t Conduit_async.io
val create_webhook :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val get_channel_webhooks : int -> Yojson.Safe.json Conduit_async.io
- val get_guild_webhooks : int -> Yojson.Safe.json Conduit_async.io
- val get_webhook : int -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val get_channel_webhooks : int -> string Core.Or_error.t Conduit_async.io
+ val get_guild_webhooks : int -> string Core.Or_error.t Conduit_async.io
+ val get_webhook : int -> string Core.Or_error.t Conduit_async.io
val get_webhook_with_token :
- int -> string -> Yojson.Safe.json Conduit_async.io
+ int -> string -> string Core.Or_error.t Conduit_async.io
val edit_webhook :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val edit_webhook_with_token :
- int -> string -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
- val delete_webhook : int -> Yojson.Safe.json Conduit_async.io
+ int ->
+ string -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
+ val delete_webhook : int -> string Core.Or_error.t Conduit_async.io
val delete_webhook_with_token :
- int -> string -> Yojson.Safe.json Conduit_async.io
+ int -> string -> string Core.Or_error.t Conduit_async.io
val execute_webhook :
- int -> string -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int ->
+ string -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val execute_slack_webhook :
- int -> string -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int ->
+ string -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val execute_git_webhook :
- int -> string -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int ->
+ string -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
val get_audit_logs :
- int -> Yojson.Safe.json -> Yojson.Safe.json Conduit_async.io
+ int -> Yojson.Safe.json -> string Core.Or_error.t Conduit_async.io
end
module type Models = sig
diff --git a/lib/sharder.ml b/lib/sharder.ml
index 98df132..5af3bbc 100644
--- a/lib/sharder.ml
+++ b/lib/sharder.ml
@@ -288,6 +288,10 @@ module Make(H : S.Http)(D : S.Dispatch) : S.Sharder = struct
let start ?count () =
let module J = Yojson.Safe.Util in
H.get_gateway_bot () >>= fun data ->
+ let data = match data with
+ | Ok d -> Yojson.Safe.from_string d
+ | Error e -> Error.raise e
+ in
let url = J.(member "url" data |> to_string) in
let count = match count with
| Some c -> c