aboutsummaryrefslogtreecommitdiff
path: root/lib/http
diff options
context:
space:
mode:
Diffstat (limited to 'lib/http')
-rw-r--r--lib/http/endpoints.ml96
-rw-r--r--lib/http/endpoints.mli96
-rw-r--r--lib/http/http.ml68
-rw-r--r--lib/http/http.mli178
-rw-r--r--lib/http/rl.ml14
-rw-r--r--lib/http/rl.mli6
6 files changed, 229 insertions, 229 deletions
diff --git a/lib/http/endpoints.ml b/lib/http/endpoints.ml
index 85b415c..8a2faea 100644
--- a/lib/http/endpoints.ml
+++ b/lib/http/endpoints.ml
@@ -3,62 +3,62 @@ open Printf
let gateway = "/gateway"
let gateway_bot = "/gateway/bot"
-let channel = sprintf "/channels/%Ld"
-let channel_messages = sprintf "/channels/%Ld/messages"
-let channel_message = sprintf "/channels/%Ld/messages/%Ld"
-let channel_reaction_me = sprintf "/channels/%Ld/messages/%Ld/reactions/%s/@me"
-let channel_reaction = sprintf "/channels/%Ld/messages/%Ld/reactions/%s/%Ld"
-let channel_reactions_get = sprintf "/channels/%Ld/messages/%Ld/reactions/%s"
-let channel_reactions_delete = sprintf "/channels/%Ld/messages/%Ld/reactions"
-let channel_bulk_delete = sprintf "/channels/%Ld"
-let channel_permission = sprintf "/channels/%Ld/permissions/%Ld"
-let channel_permissions = sprintf "/channels/%Ld/permissions"
+let channel = sprintf "/channels/%d"
+let channel_messages = sprintf "/channels/%d/messages"
+let channel_message = sprintf "/channels/%d/messages/%d"
+let channel_reaction_me = sprintf "/channels/%d/messages/%d/reactions/%s/@me"
+let channel_reaction = sprintf "/channels/%d/messages/%d/reactions/%s/%d"
+let channel_reactions_get = sprintf "/channels/%d/messages/%d/reactions/%s"
+let channel_reactions_delete = sprintf "/channels/%d/messages/%d/reactions"
+let channel_bulk_delete = sprintf "/channels/%d"
+let channel_permission = sprintf "/channels/%d/permissions/%d"
+let channel_permissions = sprintf "/channels/%d/permissions"
let channels = "/channels"
-let channel_call_ring = sprintf "/channels/%Ld/call/ring"
-let channel_invites = sprintf "/channels/%Ld/invites"
-let channel_typing = sprintf "/channels/%Ld/typing"
-let channel_pins = sprintf "/channels/%Ld/pins"
-let channel_pin = sprintf "/channels/%Ld/pins/%Ld"
+let channel_call_ring = sprintf "/channels/%d/call/ring"
+let channel_invites = sprintf "/channels/%d/invites"
+let channel_typing = sprintf "/channels/%d/typing"
+let channel_pins = sprintf "/channels/%d/pins"
+let channel_pin = sprintf "/channels/%d/pins/%d"
let guilds = "/guilds"
-let guild = sprintf "/guilds/%Ld"
-let guild_channels = sprintf "/guilds/%Ld/channels"
-let guild_members = sprintf "/guilds/%Ld/members"
-let guild_member = sprintf "/guilds/%Ld/members/%Ld"
-let guild_member_role = sprintf "/guilds/%Ld/members/%Ld/roles/%Ld"
-let guild_bans = sprintf "/guilds/%Ld/bans"
-let guild_ban = sprintf "/guilds/%Ld/bans/%Ld"
-let guild_roles = sprintf "/guilds/%Ld/roles"
-let guild_role = sprintf "/guilds/%Ld/roles/%Ld"
-let guild_prune = sprintf "/guilds/%Ld/prune"
-let guild_voice_regions = sprintf "/guilds/%Ld/regions"
-let guild_invites = sprintf "/guilds/%Ld/invites"
-let guild_integrations = sprintf "/guilds/%Ld/integrations"
-let guild_integration = sprintf "/guilds/%Ld/integrations/%Ld"
-let guild_integration_sync = sprintf "/guilds/%Ld/integrations/%Ld/sync"
-let guild_embed = sprintf "/guilds/%Ld/embed"
-let guild_emojis = sprintf "/guilds/%Ld/emojis"
-let guild_emoji = sprintf "/guilds/%Ld/emojis/%Ld"
-let webhooks_guild = sprintf "/guilds/%Ld/webhooks"
-let webhooks_channel = sprintf "/channels/%Ld/webhooks"
-let webhook = sprintf "/webhooks/%Ld"
-let webhook_token = sprintf "/webhooks/%Ld/%s"
-let webhook_git = sprintf "/webhooks/%Ld/%s/github"
-let webhook_slack = sprintf "/webhooks/%Ld/%s/slack"
-let user = sprintf "/users/%Ld"
+let guild = sprintf "/guilds/%d"
+let guild_channels = sprintf "/guilds/%d/channels"
+let guild_members = sprintf "/guilds/%d/members"
+let guild_member = sprintf "/guilds/%d/members/%d"
+let guild_member_role = sprintf "/guilds/%d/members/%d/roles/%d"
+let guild_bans = sprintf "/guilds/%d/bans"
+let guild_ban = sprintf "/guilds/%d/bans/%d"
+let guild_roles = sprintf "/guilds/%d/roles"
+let guild_role = sprintf "/guilds/%d/roles/%d"
+let guild_prune = sprintf "/guilds/%d/prune"
+let guild_voice_regions = sprintf "/guilds/%d/regions"
+let guild_invites = sprintf "/guilds/%d/invites"
+let guild_integrations = sprintf "/guilds/%d/integrations"
+let guild_integration = sprintf "/guilds/%d/integrations/%d"
+let guild_integration_sync = sprintf "/guilds/%d/integrations/%d/sync"
+let guild_embed = sprintf "/guilds/%d/embed"
+let guild_emojis = sprintf "/guilds/%d/emojis"
+let guild_emoji = sprintf "/guilds/%d/emojis/%d"
+let webhooks_guild = sprintf "/guilds/%d/webhooks"
+let webhooks_channel = sprintf "/channels/%d/webhooks"
+let webhook = sprintf "/webhooks/%d"
+let webhook_token = sprintf "/webhooks/%d/%s"
+let webhook_git = sprintf "/webhooks/%d/%s/github"
+let webhook_slack = sprintf "/webhooks/%d/%s/slack"
+let user = sprintf "/users/%d"
let me = "/users/@me"
let me_guilds = "/users/@me/guilds"
-let me_guild = sprintf "/users/@me/guilds/%Ld"
+let me_guild = sprintf "/users/@me/guilds/%d"
let me_channels = "/users/@me/channels"
let me_connections = "/users/@me/connections"
let invite = sprintf "/invites/%s"
let regions = "/voice/regions"
let application_information = "/oauth2/applications/@me"
-let group_recipient = sprintf "/channels/%Ld/recipients/%Ld"
-let guild_me_nick = sprintf "/guilds/%Ld/members/@me/nick"
-let guild_vanity_url = sprintf "/guilds/%Ld/vanity-url"
-let guild_audit_logs = sprintf "/guilds/%Ld/audit-logs"
+let group_recipient = sprintf "/channels/%d/recipients/%d"
+let guild_me_nick = sprintf "/guilds/%d/members/@me/nick"
+let guild_vanity_url = sprintf "/guilds/%d/vanity-url"
+let guild_audit_logs = sprintf "/guilds/%d/audit-logs"
let cdn_embed_avatar = sprintf "/embed/avatars/%s.png"
let cdn_emoji = sprintf "/emojis/%s.%s"
-let cdn_icon = sprintf "/icons/%Ld/%s.%s"
-let cdn_avatar = sprintf "/avatars/%Ld/%s.%s"
-let cdn_default_avatar = sprintf "/embed/avatars/%Ld" \ No newline at end of file
+let cdn_icon = sprintf "/icons/%d/%s.%s"
+let cdn_avatar = sprintf "/avatars/%d/%s.%s"
+let cdn_default_avatar = sprintf "/embed/avatars/%d" \ No newline at end of file
diff --git a/lib/http/endpoints.mli b/lib/http/endpoints.mli
index 413ac17..33e2ea5 100644
--- a/lib/http/endpoints.mli
+++ b/lib/http/endpoints.mli
@@ -2,62 +2,62 @@
val gateway : string
val gateway_bot : string
-val channel : int64 -> string
-val channel_messages : int64 -> string
-val channel_message : int64 -> int64 -> string
-val channel_reaction_me : int64 -> int64 -> string -> string
-val channel_reaction : int64 -> int64 -> string -> int64 -> string
-val channel_reactions_get : int64 -> int64 -> string -> string
-val channel_reactions_delete : int64 -> int64 -> string
-val channel_bulk_delete : int64 -> string
-val channel_permission : int64 -> int64 -> string
-val channel_permissions : int64 -> string
+val channel : int -> string
+val channel_messages : int -> string
+val channel_message : int -> int -> string
+val channel_reaction_me : int -> int -> string -> string
+val channel_reaction : int -> int -> string -> int -> string
+val channel_reactions_get : int -> int -> string -> string
+val channel_reactions_delete : int -> int -> string
+val channel_bulk_delete : int -> string
+val channel_permission : int -> int -> string
+val channel_permissions : int -> string
val channels : string
-val channel_call_ring : int64 -> string
-val channel_invites : int64 -> string
-val channel_typing : int64 -> string
-val channel_pins : int64 -> string
-val channel_pin : int64 -> int64 -> string
+val channel_call_ring : int -> string
+val channel_invites : int -> string
+val channel_typing : int -> string
+val channel_pins : int -> string
+val channel_pin : int -> int -> string
val guilds : string
-val guild : int64 -> string
-val guild_channels : int64 -> string
-val guild_members : int64 -> string
-val guild_member : int64 -> int64 -> string
-val guild_member_role : int64 -> int64 -> int64 -> string
-val guild_bans : int64 -> string
-val guild_ban : int64 -> int64 -> string
-val guild_roles : int64 -> string
-val guild_role : int64 -> int64 -> string
-val guild_prune : int64 -> string
-val guild_voice_regions : int64 -> string
-val guild_invites : int64 -> string
-val guild_integrations : int64 -> string
-val guild_integration : int64 -> int64 -> string
-val guild_integration_sync : int64 -> int64 -> string
-val guild_embed : int64 -> string
-val guild_emojis : int64 -> string
-val guild_emoji : int64 -> int64 -> string
-val webhooks_guild : int64 -> string
-val webhooks_channel : int64 -> string
-val webhook : int64 -> string
-val webhook_token : int64 -> string -> string
-val webhook_git : int64 -> string -> string
-val webhook_slack : int64 -> string -> string
-val user : int64 -> string
+val guild : int -> string
+val guild_channels : int -> string
+val guild_members : int -> string
+val guild_member : int -> int -> string
+val guild_member_role : int -> int -> int -> string
+val guild_bans : int -> string
+val guild_ban : int -> int -> string
+val guild_roles : int -> string
+val guild_role : int -> int -> string
+val guild_prune : int -> string
+val guild_voice_regions : int -> string
+val guild_invites : int -> string
+val guild_integrations : int -> string
+val guild_integration : int -> int -> string
+val guild_integration_sync : int -> int -> string
+val guild_embed : int -> string
+val guild_emojis : int -> string
+val guild_emoji : int -> int -> string
+val webhooks_guild : int -> string
+val webhooks_channel : int -> string
+val webhook : int -> string
+val webhook_token : int -> string -> string
+val webhook_git : int -> string -> string
+val webhook_slack : int -> string -> string
+val user : int -> string
val me : string
val me_guilds : string
-val me_guild : int64 -> string
+val me_guild : int -> string
val me_channels : string
val me_connections : string
val invite : string -> string
val regions : string
val application_information : string
-val group_recipient : int64 -> int64 -> string
-val guild_me_nick : int64 -> string
-val guild_vanity_url : int64 -> string
-val guild_audit_logs : int64 -> string
+val group_recipient : int -> int -> string
+val guild_me_nick : int -> string
+val guild_vanity_url : int -> string
+val guild_audit_logs : int -> string
val cdn_embed_avatar : string -> string
val cdn_emoji : string -> string -> string
-val cdn_icon : int64 -> string -> string -> string
-val cdn_avatar : int64 -> string -> string -> string
-val cdn_default_avatar : int64 -> string \ No newline at end of file
+val cdn_icon : int -> string -> string -> string
+val cdn_avatar : int -> string -> string -> string
+val cdn_default_avatar : int -> string \ No newline at end of file
diff --git a/lib/http/http.ml b/lib/http/http.ml
index 7acd731..ec6cb2c 100644
--- a/lib/http/http.ml
+++ b/lib/http/http.ml
@@ -68,9 +68,9 @@ module Base = struct
| `Post -> Cohttp_async.Client.post ~headers ~body uri
| `Put -> Cohttp_async.Client.put ~headers ~body uri)
>>= process_response path
- in if Int64.(limit.remaining > 0L) then process ()
+ in if limit.remaining > 0 then process ()
else
- let time = Time.(limit.reset |> Int63.of_int64_trunc |> Span.of_int63_seconds |> of_span_since_epoch) in
+ let time = Time.(Span.of_int_sec limit.reset |> of_span_since_epoch) in
Logs.debug (fun m -> m "Rate-limiting [Route: %s] [Duration: %d ms]" path Time.(diff time (Time.now ()) |> Span.to_ms |> Float.to_int) );
Clock.at time >>= process
end
@@ -82,23 +82,23 @@ let get_gateway_bot () =
Base.request `Get Endpoints.gateway_bot
let get_channel channel_id =
- Base.request `Get (Endpoints.channel channel_id) >>| Result.map ~f:(fun c -> Channel_t.(channel_wrapper_of_yojson c |> wrap))
+ 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) >>| Result.map ~f:(fun c -> Channel_t.(channel_wrapper_of_yojson c |> wrap))
+ 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) >>| Result.map ~f:(fun c -> Channel_t.(channel_wrapper_of_yojson c |> wrap))
+ 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, Int64.to_string 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.t_of_yojson)
+ 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) >>| Result.map ~f:Message_t.t_of_yojson
+ Base.request `Get (Endpoints.channel_message channel_id message_id) >>| Result.map ~f:Message_t.of_yojson_exn
let create_message ?(files=[]) channel_id body =
- Base.request ~files ~body:body `Post (Endpoints.channel_messages channel_id) >>| Result.map ~f:Message_t.t_of_yojson
+ Base.request ~files ~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) >>| Result.map ~f:ignore
@@ -111,13 +111,13 @@ let delete_reaction channel_id message_id emoji user_id =
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.t_of_yojson)
+ >>| 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) >>| Result.map ~f:ignore
let edit_message channel_id message_id body =
- Base.request ~body `Patch (Endpoints.channel_message channel_id message_id) >>| Result.map ~f:Message_t.t_of_yojson
+ 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) >>| Result.map ~f:ignore
@@ -142,7 +142,7 @@ let broadcast_typing channel_id =
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.t_of_yojson)
+ >>| 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) >>| Result.map ~f:ignore
@@ -158,52 +158,52 @@ let group_recipient_remove channel_id user_id =
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.t_of_yojson)
+ >>| 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) >>| Result.map ~f:Emoji.t_of_yojson
+ 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) >>| Result.map ~f:Emoji.t_of_yojson
+ 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) >>| Result.map ~f:Emoji.t_of_yojson
+ 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) >>| Result.map ~f:ignore
let create_guild body =
- Base.request ~body `Post Endpoints.guilds >>| Result.map ~f:(fun g -> Guild_t.(pre_of_yojson g |> wrap))
+ 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) >>| Result.map ~f:(fun g -> Guild_t.(pre_of_yojson g |> wrap))
+ 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) >>| Result.map ~f:(fun g -> Guild_t.(pre_of_yojson g |> wrap))
+ 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) >>| 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 g |> wrap)))
+ >>| 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) >>| Result.map ~f:(fun c -> Channel_t.(channel_wrapper_of_yojson c |> wrap))
+ 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) >>| Result.map ~f:ignore
let get_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 m |> wrap ~guild_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 m |> wrap ~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 m |> wrap ~guild_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) >>| Result.map ~f:ignore
@@ -222,10 +222,10 @@ let remove_member_role guild_id user_id role_id =
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.t_of_yojson)
+ >>| 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) >>| Result.map ~f:Ban_t.t_of_yojson
+ 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) >>| Result.map ~f:ignore
@@ -235,17 +235,17 @@ let guild_ban_remove guild_id user_id body =
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 r |> wrap ~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) >>| Result.map ~f:(fun r -> Role_t.(role_of_yojson r |> wrap ~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 r |> wrap ~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) >>| Result.map ~f:(fun r -> Role_t.(role_of_yojson r |> wrap ~guild_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) >>| Result.map ~f:ignore
@@ -295,14 +295,14 @@ let delete_invite invite_code =
Base.request `Delete (Endpoints.invite invite_code)
let get_current_user () =
- Base.request `Get Endpoints.me >>| Result.map ~f:User_t.t_of_yojson
+ Base.request `Get Endpoints.me >>| Result.map ~f:User_t.of_yojson_exn
let edit_current_user body =
- Base.request ~body `Patch Endpoints.me >>| Result.map ~f:User_t.t_of_yojson
+ 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 g |> wrap)))
+ >>| 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) >>| Result.map ~f:ignore
@@ -320,7 +320,7 @@ let get_connections () =
Base.request `Get Endpoints.me_connections
let get_user user_id =
- Base.request `Get (Endpoints.user user_id) >>| Result.map ~f:User_t.t_of_yojson
+ Base.request `Get (Endpoints.user user_id) >>| Result.map ~f:User_t.of_yojson_exn
let get_voice_regions () =
Base.request `Get Endpoints.regions
diff --git a/lib/http/http.mli b/lib/http/http.mli
index ce16d06..3468272 100644
--- a/lib/http/http.mli
+++ b/lib/http/http.mli
@@ -28,129 +28,129 @@ end
val get_gateway : unit -> Yojson.Safe.t Deferred.Or_error.t
val get_gateway_bot : unit -> Yojson.Safe.t Deferred.Or_error.t
-val get_channel : int64 -> Channel_t.t Deferred.Or_error.t
+val get_channel : int -> Channel_t.t Deferred.Or_error.t
val modify_channel :
- int64 -> Yojson.Safe.t -> Channel_t.t Deferred.Or_error.t
-val delete_channel : int64 -> Channel_t.t Deferred.Or_error.t
-val get_messages : int64 -> int -> string * int64 -> Message_t.t list Deferred.Or_error.t
-val get_message : int64 -> int64 -> Message_t.t Deferred.Or_error.t
+ int -> Yojson.Safe.t -> 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 :
- ?files:(string * string) list -> int64 -> Yojson.Safe.t -> Message_t.t Deferred.Or_error.t
+ ?files:(string * string) list -> int -> Yojson.Safe.t -> Message_t.t Deferred.Or_error.t
val create_reaction :
- int64 -> int64 -> string -> unit Deferred.Or_error.t
+ int -> int -> string -> unit Deferred.Or_error.t
val delete_own_reaction :
- int64 -> int64 -> string -> unit Deferred.Or_error.t
+ int -> int -> string -> unit Deferred.Or_error.t
val delete_reaction :
- int64 -> int64 -> string -> int64 -> unit Deferred.Or_error.t
+ int -> int -> string -> int -> unit Deferred.Or_error.t
val get_reactions :
- int64 -> int64 -> string -> User_t.t list Deferred.Or_error.t
+ int -> int -> string -> User_t.t list Deferred.Or_error.t
val delete_reactions :
- int64 -> int64 -> unit Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val edit_message :
- int64 ->
- int64 -> Yojson.Safe.t -> Message_t.t Deferred.Or_error.t
+ int ->
+ int -> Yojson.Safe.t -> Message_t.t Deferred.Or_error.t
val delete_message :
- int64 -> int64 -> unit Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val bulk_delete :
- int64 -> Yojson.Safe.t -> unit Deferred.Or_error.t
+ int -> Yojson.Safe.t -> unit Deferred.Or_error.t
val edit_channel_permissions :
- int64 ->
- int64 -> Yojson.Safe.t -> unit Deferred.Or_error.t
-val get_channel_invites : int64 -> Yojson.Safe.t Deferred.Or_error.t
+ int ->
+ int -> Yojson.Safe.t -> unit Deferred.Or_error.t
+val get_channel_invites : int -> Yojson.Safe.t Deferred.Or_error.t
val create_channel_invite :
- int64 -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
+ int -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
val delete_channel_permission :
- int64 -> int64 -> unit Deferred.Or_error.t
-val broadcast_typing : int64 -> unit Deferred.Or_error.t
-val get_pinned_messages : int64 -> Message_t.t list Deferred.Or_error.t
-val pin_message : int64 -> int64 -> unit Deferred.Or_error.t
-val unpin_message : int64 -> int64 -> unit 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 :
- int64 -> int64 -> unit Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val group_recipient_remove :
- int64 -> int64 -> unit Deferred.Or_error.t
-val get_emojis : int64 -> Emoji.t list Deferred.Or_error.t
-val get_emoji : int64 -> int64 -> Emoji.t 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 :
- int64 -> Yojson.Safe.t -> Emoji.t Deferred.Or_error.t
+ int -> Yojson.Safe.t -> Emoji.t Deferred.Or_error.t
val edit_emoji :
- int64 ->
- int64 -> Yojson.Safe.t -> Emoji.t Deferred.Or_error.t
-val delete_emoji : int64 -> int64 -> unit Deferred.Or_error.t
+ int ->
+ int -> Yojson.Safe.t -> Emoji.t Deferred.Or_error.t
+val delete_emoji : int -> int -> unit Deferred.Or_error.t
val create_guild :
Yojson.Safe.t -> Guild_t.t Deferred.Or_error.t
-val get_guild : int64 -> Guild_t.t Deferred.Or_error.t
+val get_guild : int -> Guild_t.t Deferred.Or_error.t
val edit_guild :
- int64 -> Yojson.Safe.t -> Guild_t.t Deferred.Or_error.t
-val delete_guild : int64 -> unit Deferred.Or_error.t
-val get_guild_channels : int64 -> Channel_t.t list Deferred.Or_error.t
+ int -> Yojson.Safe.t -> 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 :
- int64 -> Yojson.Safe.t -> Channel_t.t Deferred.Or_error.t
+ int -> Yojson.Safe.t -> Channel_t.t Deferred.Or_error.t
val modify_guild_channel_positions :
- int64 -> Yojson.Safe.t -> unit Deferred.Or_error.t
-val get_member : int64 -> int64 -> Member.t Deferred.Or_error.t
-val get_members : int64 -> Member.t list Deferred.Or_error.t
+ int -> Yojson.Safe.t -> 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 :
- int64 ->
- int64 -> Yojson.Safe.t -> Member.t Deferred.Or_error.t
+ int ->
+ int -> Yojson.Safe.t -> Member.t Deferred.Or_error.t
val edit_member :
- int64 ->
- int64 -> Yojson.Safe.t -> unit Deferred.Or_error.t
+ int ->
+ int -> Yojson.Safe.t -> unit Deferred.Or_error.t
val remove_member :
- int64 ->
- int64 -> Yojson.Safe.t -> unit Deferred.Or_error.t
+ int ->
+ int -> Yojson.Safe.t -> unit Deferred.Or_error.t
val change_nickname :
- int64 -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
+ int -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
val add_member_role :
- int64 -> int64 -> int64 -> unit Deferred.Or_error.t
+ int -> int -> int -> unit Deferred.Or_error.t
val remove_member_role :
- int64 -> int64 -> int64 -> unit Deferred.Or_error.t
-val get_bans : int64 -> Ban.t list Deferred.Or_error.t
-val get_ban : int64 -> int64 -> Ban.t 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 :
- int64 ->
- int64 -> Yojson.Safe.t -> unit Deferred.Or_error.t
+ int ->
+ int -> Yojson.Safe.t -> unit Deferred.Or_error.t
val guild_ban_remove :
- int64 ->
- int64 -> Yojson.Safe.t -> unit Deferred.Or_error.t
-val get_roles : int64 -> Role_t.t list Deferred.Or_error.t
+ int ->
+ int -> Yojson.Safe.t -> unit Deferred.Or_error.t
+val get_roles : int -> Role_t.t list Deferred.Or_error.t
val guild_role_add :
- int64 -> Yojson.Safe.t -> Role_t.t Deferred.Or_error.t
+ int -> Yojson.Safe.t -> Role_t.t Deferred.Or_error.t
val guild_roles_edit :
- int64 -> Yojson.Safe.t -> Role_t.t list Deferred.Or_error.t
+ int -> Yojson.Safe.t -> Role_t.t list Deferred.Or_error.t
val guild_role_edit :
- int64 ->
- int64 -> Yojson.Safe.t -> Role_t.t Deferred.Or_error.t
+ int ->
+ int -> Yojson.Safe.t -> Role_t.t Deferred.Or_error.t
val guild_role_remove :
- int64 -> int64 -> unit Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val guild_prune_count :
- int64 -> int -> int Deferred.Or_error.t
+ int -> int -> int Deferred.Or_error.t
val guild_prune_start :
- int64 -> int -> int Deferred.Or_error.t
+ int -> int -> int Deferred.Or_error.t
val get_guild_voice_regions :
- int64 -> Yojson.Safe.t Deferred.Or_error.t
-val get_guild_invites : int64 -> Yojson.Safe.t Deferred.Or_error.t
-val get_integrations : int64 -> Yojson.Safe.t Deferred.Or_error.t
+ int -> Yojson.Safe.t Deferred.Or_error.t
+val get_guild_invites : int -> Yojson.Safe.t Deferred.Or_error.t
+val get_integrations : int -> Yojson.Safe.t Deferred.Or_error.t
val add_integration :
- int64 -> Yojson.Safe.t -> unit Deferred.Or_error.t
+ int -> Yojson.Safe.t -> unit Deferred.Or_error.t
val edit_integration :
- int64 ->
- int64 -> Yojson.Safe.t -> unit Deferred.Or_error.t
+ int ->
+ int -> Yojson.Safe.t -> unit Deferred.Or_error.t
val delete_integration :
- int64 -> int64 -> unit Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
val sync_integration :
- int64 -> int64 -> unit Deferred.Or_error.t
-val get_guild_embed : int64 -> Yojson.Safe.t Deferred.Or_error.t
+ int -> int -> unit Deferred.Or_error.t
+val get_guild_embed : int -> Yojson.Safe.t Deferred.Or_error.t
val edit_guild_embed :
- int64 -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
-val get_vanity_url : int64 -> Yojson.Safe.t Deferred.Or_error.t
+ int -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
+val get_vanity_url : int -> Yojson.Safe.t Deferred.Or_error.t
val get_invite : string -> Yojson.Safe.t Deferred.Or_error.t
val delete_invite : string -> Yojson.Safe.t Deferred.Or_error.t
val get_current_user : unit -> User_t.t Deferred.Or_error.t
val edit_current_user :
Yojson.Safe.t -> User_t.t Deferred.Or_error.t
val get_guilds : unit -> Guild_t.t list Deferred.Or_error.t
-val leave_guild : int64 -> unit Deferred.Or_error.t
+val leave_guild : int -> unit Deferred.Or_error.t
val get_private_channels :
unit -> Yojson.Safe.t Deferred.Or_error.t
val create_dm :
@@ -158,32 +158,32 @@ val create_dm :
val create_group_dm :
Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
val get_connections : unit -> Yojson.Safe.t Deferred.Or_error.t
-val get_user : int64 -> User_t.t Deferred.Or_error.t
+val get_user : int -> User_t.t Deferred.Or_error.t
val get_voice_regions : unit -> Yojson.Safe.t Deferred.Or_error.t
val create_webhook :
- int64 -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
-val get_channel_webhooks : int64 -> Yojson.Safe.t Deferred.Or_error.t
-val get_guild_webhooks : int64 -> Yojson.Safe.t Deferred.Or_error.t
-val get_webhook : int64 -> Yojson.Safe.t Deferred.Or_error.t
+ int -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
+val get_channel_webhooks : int -> Yojson.Safe.t Deferred.Or_error.t
+val get_guild_webhooks : int -> Yojson.Safe.t Deferred.Or_error.t
+val get_webhook : int -> Yojson.Safe.t Deferred.Or_error.t
val get_webhook_with_token :
- int64 -> string -> Yojson.Safe.t Deferred.Or_error.t
+ int -> string -> Yojson.Safe.t Deferred.Or_error.t
val edit_webhook :
- int64 -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
+ int -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
val edit_webhook_with_token :
- int64 ->
+ int ->
string -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
-val delete_webhook : int64 -> unit Deferred.Or_error.t
+val delete_webhook : int -> unit Deferred.Or_error.t
val delete_webhook_with_token :
- int64 -> string -> unit Deferred.Or_error.t
+ int -> string -> unit Deferred.Or_error.t
val execute_webhook :
- int64 ->
+ int ->
string -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
val execute_slack_webhook :
- int64 ->
+ int ->
string -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
val execute_git_webhook :
- int64 ->
+ int ->
string -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
val get_audit_logs :
- int64 -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
+ int -> Yojson.Safe.t -> Yojson.Safe.t Deferred.Or_error.t
val get_application_info : unit -> Yojson.Safe.t Deferred.Or_error.t \ No newline at end of file
diff --git a/lib/http/rl.ml b/lib/http/rl.ml
index 5f26012..9f149df 100644
--- a/lib/http/rl.ml
+++ b/lib/http/rl.ml
@@ -4,9 +4,9 @@ open Async
module RouteMap = Map.Make(String)
type rl = {
- limit: int64;
- remaining: int64;
- reset: int64;
+ limit: int;
+ remaining: int;
+ reset: int;
} [@@deriving sexp]
(* TODO improve route getting, use Date header *)
@@ -25,13 +25,13 @@ let rl_of_header h =
let module C = Cohttp.Header in
match C.get h "X-RateLimit-Limit", C.get h "X-RateLimit-Remaining", C.get h "X-RateLimit-Reset" with
| Some lim, Some rem, Some re ->
- let limit = Int64.of_string lim in
- let remaining = Int64.of_string rem in
- let reset = Int64.of_string re in
+ let limit = Int.of_string lim in
+ let remaining = Int.of_string rem in
+ let reset = Int.of_string re in
Some { limit; remaining; reset; }
| _ -> None
-let default = { limit = 1L; remaining = 1L; reset = 0L; }
+let default = { limit = 1; remaining = 1; reset = 0; }
let empty : t = RouteMap.empty
let update = RouteMap.update
let find = RouteMap.find
diff --git a/lib/http/rl.mli b/lib/http/rl.mli
index f4a8d59..54bc5ee 100644
--- a/lib/http/rl.mli
+++ b/lib/http/rl.mli
@@ -8,9 +8,9 @@ module RouteMap : module type of Map.Make(String)
(** Type representing ratelimit information. *)
type rl = {
- limit: int64;
- remaining: int64;
- reset: int64;
+ limit: int;
+ remaining: int;
+ reset: int;
} [@@deriving sexp]
(** Type representing the specific case of {!RouteMap}. *)