aboutsummaryrefslogtreecommitdiff
path: root/lib/s.ml
diff options
context:
space:
mode:
authorAdelyn Breedlove <[email protected]>2018-12-12 17:01:04 -0700
committerAdelyn Breedlove <[email protected]>2018-12-12 17:01:04 -0700
commita1e99ad1691a67d5aecc73109d2e1c16bdbe4050 (patch)
tree0c29235bf41df0705e854c73b2b32ce60b3a357d /lib/s.ml
parentMerge branch 'dev' of https://gitlab.com/Mishio595/disml into dev (diff)
parentUpdate my name in disml.opam (diff)
downloaddisml-a1e99ad1691a67d5aecc73109d2e1c16bdbe4050.tar.xz
disml-a1e99ad1691a67d5aecc73109d2e1c16bdbe4050.zip
Merge branch 'dev' of https://gitlab.com/Mishio595/disml into dev
Diffstat (limited to 'lib/s.ml')
-rw-r--r--lib/s.ml256
1 files changed, 155 insertions, 101 deletions
diff --git a/lib/s.ml b/lib/s.ml
index ce1bef7..95eaee3 100644
--- a/lib/s.ml
+++ b/lib/s.ml
@@ -1,10 +1,64 @@
open Async
-open Cohttp
module type Token = sig
val token : string
end
+module type Client = sig
+ type context
+end
+
+module type Handler = sig
+ val handle_event :
+ 'a ->
+ 'b ->
+ unit
+end
+
+module type Dispatch = sig
+ type dispatch_event =
+ | HELLO of Yojson.Safe.json
+ | READY of Yojson.Safe.json
+ | RESUMED of Yojson.Safe.json
+ | INVALID_SESSION of Yojson.Safe.json
+ | CHANNEL_CREATE of Channel.t
+ | CHANNEL_UPDATE of Channel.t
+ | CHANNEL_DELETE of Channel.t
+ | CHANNEL_PINS_UPDATE of Yojson.Safe.json
+ | GUILD_CREATE of Guild.t
+ | GUILD_UPDATE of Guild.t
+ | GUILD_DELETE of Guild.t
+ | GUILD_BAN_ADD of Ban.t
+ | GUILD_BAN_REMOVE of Ban.t
+ | GUILD_EMOJIS_UPDATE of Yojson.Safe.json
+ | GUILD_INTEGRATIONS_UPDATE of Yojson.Safe.json
+ | GUILD_MEMBER_ADD of Member.t
+ | GUILD_MEMBER_REMOVE of Member.t
+ | GUILD_MEMBER_UPDATE of Member.t
+ | GUILD_MEMBERS_CHUNK of Member.t list
+ | GUILD_ROLE_CREATE of Role.t (* * Guild.t *)
+ | GUILD_ROLE_UPDATE of Role.t (* * Guild.t *)
+ | GUILD_ROLE_DELETE of Role.t (* * Guild.t *)
+ | MESSAGE_CREATE of Message.t
+ | MESSAGE_UPDATE of Message.t
+ | MESSAGE_DELETE of Message.t
+ | MESSAGE_BULK_DELETE of Message.t list
+ | MESSAGE_REACTION_ADD of (* Message.t * *) Reaction.t
+ | MESSAGE_REACTION_REMOVE of (* Message.t * *) Reaction.t
+ | MESSAGE_REACTION_REMOVE_ALL of (* Message.t * *) Reaction.t list
+ | PRESENCE_UPDATE of Presence.t
+ | TYPING_START of Yojson.Safe.json
+ | USER_UPDATE of Yojson.Safe.json
+ | VOICE_STATE_UPDATE of Yojson.Safe.json
+ | VOICE_SERVER_UPDATE of Yojson.Safe.json
+ | WEBHOOKS_UPDATE of Yojson.Safe.json
+
+ exception Invalid_event of string
+
+ val event_of_string : contents:Yojson.Safe.json -> string -> dispatch_event
+ val dispatch : ev:string -> Yojson.Safe.json -> unit
+end
+
module type Http = sig
val token : string
@@ -14,178 +68,178 @@ module type Http = sig
val base_url : string
val process_url : string -> Uri.t
- val process_request_body : Yojson.Basic.json -> Cohttp_async.Body.t
- val process_request_headers : unit -> Header.t
+ val process_request_body : Yojson.Safe.json -> Cohttp_async.Body.t
+ val process_request_headers : unit -> Cohttp.Header.t
val process_response :
Cohttp_async.Response.t * Cohttp_async.Body.t ->
- Yojson.Basic.json Deferred.t
+ Yojson.Safe.json Deferred.t
val request :
- ?body:Yojson.Basic.json ->
+ ?body:Yojson.Safe.json ->
[> `DELETE | `GET | `PATCH | `POST | `PUT ] ->
string ->
- Yojson.Basic.json Deferred.t
+ Yojson.Safe.json Deferred.t
end
(* Auto-generated signatures *)
- val get_gateway : unit -> Yojson.Basic.json Async.Deferred.t
- val get_gateway_bot : unit -> Yojson.Basic.json Async.Deferred.t
- val get_channel : string -> Yojson.Basic.json Async.Deferred.t
+ val get_gateway : unit -> Yojson.Safe.json Async.Deferred.t
+ val get_gateway_bot : unit -> Yojson.Safe.json Async.Deferred.t
+ val get_channel : string -> Yojson.Safe.json Async.Deferred.t
val modify_channel :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val delete_channel : string -> Yojson.Basic.json Async.Deferred.t
- val get_messages : string -> Yojson.Basic.json Async.Deferred.t
- val get_message : string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val delete_channel : string -> Yojson.Safe.json Async.Deferred.t
+ val get_messages : string -> Yojson.Safe.json Async.Deferred.t
+ val get_message : string -> string -> Yojson.Safe.json Async.Deferred.t
val create_message :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val create_reaction :
- string -> string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> string -> Yojson.Safe.json Async.Deferred.t
val delete_own_reaction :
- string -> string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> string -> Yojson.Safe.json Async.Deferred.t
val delete_reaction :
string ->
- string -> string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> string -> Yojson.Safe.json Async.Deferred.t
val get_reactions :
- string -> string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> string -> Yojson.Safe.json Async.Deferred.t
val delete_reactions :
- string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
val edit_message :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val delete_message :
- string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
val bulk_delete :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val edit_channel_permissions :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val get_channel_invites : string -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val get_channel_invites : string -> Yojson.Safe.json Async.Deferred.t
val create_channel_invite :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val delete_channel_permission :
- string -> string -> Yojson.Basic.json Async.Deferred.t
- val broadcast_typing : string -> Yojson.Basic.json Async.Deferred.t
- val get_pinned_messages : string -> Yojson.Basic.json Async.Deferred.t
- val pin_message : string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
+ val broadcast_typing : string -> Yojson.Safe.json Async.Deferred.t
+ val get_pinned_messages : string -> Yojson.Safe.json Async.Deferred.t
+ val pin_message : string -> string -> Yojson.Safe.json Async.Deferred.t
val unpin_message :
- string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
val group_recipient_add :
- string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
val group_recipient_remove :
- string -> string -> Yojson.Basic.json Async.Deferred.t
- val get_emojis : string -> Yojson.Basic.json Async.Deferred.t
- val get_emoji : string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
+ val get_emojis : string -> Yojson.Safe.json Async.Deferred.t
+ val get_emoji : string -> string -> Yojson.Safe.json Async.Deferred.t
val create_emoji :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val edit_emoji :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val delete_emoji : string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val delete_emoji : string -> string -> Yojson.Safe.json Async.Deferred.t
val create_guild :
- Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val get_guild : string -> Yojson.Basic.json Async.Deferred.t
+ Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val get_guild : string -> Yojson.Safe.json Async.Deferred.t
val edit_guild :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val delete_guild : string -> Yojson.Basic.json Async.Deferred.t
- val get_guild_channels : string -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val delete_guild : string -> Yojson.Safe.json Async.Deferred.t
+ val get_guild_channels : string -> Yojson.Safe.json Async.Deferred.t
val create_guild_channel :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val modify_guild_channel_positions :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val get_member : string -> string -> Yojson.Basic.json Async.Deferred.t
- val get_members : string -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val get_member : string -> string -> Yojson.Safe.json Async.Deferred.t
+ val get_members : string -> Yojson.Safe.json Async.Deferred.t
val add_member :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val edit_member :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val remove_member :
- string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
val change_nickname :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val add_member_role :
- string -> string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> string -> Yojson.Safe.json Async.Deferred.t
val remove_member_role :
- string -> string -> string -> Yojson.Basic.json Async.Deferred.t
- val get_bans : string -> Yojson.Basic.json Async.Deferred.t
- val get_ban : string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> string -> Yojson.Safe.json Async.Deferred.t
+ val get_bans : string -> Yojson.Safe.json Async.Deferred.t
+ val get_ban : string -> string -> Yojson.Safe.json Async.Deferred.t
val guild_ban_add :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val guild_ban_remove :
- string -> string -> Yojson.Basic.json Async.Deferred.t
- val get_roles : string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
+ val get_roles : string -> Yojson.Safe.json Async.Deferred.t
val guild_role_add :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val guild_roles_edit :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val guild_role_edit :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val guild_role_remove :
- string -> string -> Yojson.Basic.json Async.Deferred.t
- val guild_prune_count : string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
+ val guild_prune_count : string -> Yojson.Safe.json Async.Deferred.t
val guild_prune_start :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val get_guild_voice_regions :
- string -> Yojson.Basic.json Async.Deferred.t
- val get_guild_invites : string -> Yojson.Basic.json Async.Deferred.t
- val get_integrations : string -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json Async.Deferred.t
+ val get_guild_invites : string -> Yojson.Safe.json Async.Deferred.t
+ val get_integrations : string -> Yojson.Safe.json Async.Deferred.t
val add_integration :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val edit_integration :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val delete_integration :
- string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
val sync_integration :
- string -> string -> Yojson.Basic.json Async.Deferred.t
- val get_guild_embed : string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
+ val get_guild_embed : string -> Yojson.Safe.json Async.Deferred.t
val edit_guild_embed :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val get_vanity_url : string -> Yojson.Basic.json Async.Deferred.t
- val get_invite : string -> Yojson.Basic.json Async.Deferred.t
- val delete_invite : string -> Yojson.Basic.json Async.Deferred.t
- val get_current_user : unit -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val get_vanity_url : string -> Yojson.Safe.json Async.Deferred.t
+ val get_invite : string -> Yojson.Safe.json Async.Deferred.t
+ val delete_invite : string -> Yojson.Safe.json Async.Deferred.t
+ val get_current_user : unit -> Yojson.Safe.json Async.Deferred.t
val edit_current_user :
- Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val get_guilds : unit -> Yojson.Basic.json Async.Deferred.t
- val leave_guild : string -> Yojson.Basic.json Async.Deferred.t
- val get_private_channels : unit -> Yojson.Basic.json Async.Deferred.t
- val create_dm : Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val get_guilds : unit -> Yojson.Safe.json Async.Deferred.t
+ val leave_guild : string -> Yojson.Safe.json Async.Deferred.t
+ val get_private_channels : unit -> Yojson.Safe.json Async.Deferred.t
+ val create_dm : Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val create_group_dm :
- Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val get_connections : unit -> Yojson.Basic.json Async.Deferred.t
- val get_user : string -> Yojson.Basic.json Async.Deferred.t
- val get_voice_regions : unit -> Yojson.Basic.json Async.Deferred.t
+ Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val get_connections : unit -> Yojson.Safe.json Async.Deferred.t
+ val get_user : string -> Yojson.Safe.json Async.Deferred.t
+ val get_voice_regions : unit -> Yojson.Safe.json Async.Deferred.t
val create_webhook :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val get_channel_webhooks : string -> Yojson.Basic.json Async.Deferred.t
- val get_guild_webhooks : string -> Yojson.Basic.json Async.Deferred.t
- val get_webhook : string -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val get_channel_webhooks : string -> Yojson.Safe.json Async.Deferred.t
+ val get_guild_webhooks : string -> Yojson.Safe.json Async.Deferred.t
+ val get_webhook : string -> Yojson.Safe.json Async.Deferred.t
val get_webhook_with_token :
- string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
val edit_webhook :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val edit_webhook_with_token :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
- val delete_webhook : string -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
+ val delete_webhook : string -> Yojson.Safe.json Async.Deferred.t
val delete_webhook_with_token :
- string -> string -> Yojson.Basic.json Async.Deferred.t
+ string -> string -> Yojson.Safe.json Async.Deferred.t
val execute_webhook :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val execute_slack_webhook :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val execute_git_webhook :
string ->
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
val get_audit_logs :
- string -> Yojson.Basic.json -> Yojson.Basic.json Async.Deferred.t
+ string -> Yojson.Safe.json -> Yojson.Safe.json Async.Deferred.t
end
module type Sharder = sig
@@ -216,7 +270,7 @@ module type Sharder = sig
shard Deferred.t
val set_status :
- status:Yojson.Basic.json ->
+ status:Yojson.Safe.json ->
shard ->
shard Deferred.t
@@ -235,12 +289,12 @@ module type Sharder = sig
end
val set_status :
- status:Yojson.Basic.json ->
+ status:Yojson.Safe.json ->
t ->
Shard.shard list Deferred.t
val set_status_with :
- f:(Shard.shard -> Yojson.Basic.json) ->
+ f:(Shard.shard -> Yojson.Safe.json) ->
t ->
Shard.shard list Deferred.t