blob: cb6e5d934e16a1f53553b5a115c5a449fd7dca8e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
open Core
module Make(H : S.Handler) : S.Dispatch = struct
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.t
| CHANNEL_UPDATE of Channel_t.t
| CHANNEL_DELETE of Channel_t.t
| CHANNEL_PINS_UPDATE of Yojson.Safe.json
| GUILD_CREATE of Guild_t.t
| GUILD_UPDATE of Guild_t.t
| GUILD_DELETE of Guild_t.t
| GUILD_BAN_ADD of Ban_t.t
| GUILD_BAN_REMOVE of Ban_t.t
| GUILD_EMOJIS_UPDATE of Yojson.Safe.json
| GUILD_INTEGRATIONS_UPDATE of Yojson.Safe.json
| GUILD_MEMBER_ADD of Member_t.t
| GUILD_MEMBER_REMOVE of Member_t.t
| GUILD_MEMBER_UPDATE of Member_t.t
| GUILD_MEMBERS_CHUNK of Member_t.t list
| GUILD_ROLE_CREATE of Role_t.t (* * Guild.t *)
| GUILD_ROLE_UPDATE of Role_t.t (* * Guild.t *)
| GUILD_ROLE_DELETE of Role_t.t (* * Guild.t *)
| MESSAGE_CREATE of Message_t.t
| MESSAGE_UPDATE of Message_t.t
| MESSAGE_DELETE of Message_t.t
| MESSAGE_BULK_DELETE of Message_t.t list
| MESSAGE_REACTION_ADD of (* Message.t * *) Reaction_t.t
| MESSAGE_REACTION_REMOVE of (* Message.t * *) Reaction_t.t
| MESSAGE_REACTION_REMOVE_ALL of (* Message.t * *) Reaction_t.t list
| PRESENCE_UPDATE of Presence_t.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
let event_of_string ~contents t = match t with
| "HELLO" -> HELLO (Yojson.Safe.from_string contents)
| "READY" -> READY (Yojson.Safe.from_string contents)
| "RESUMED" -> RESUMED (Yojson.Safe.from_string contents)
| "INVALID_SESSION" -> INVALID_SESSION (Yojson.Safe.from_string contents)
| "CHANNEL_CREATE" -> CHANNEL_CREATE (Channel_j.t_of_string contents)
| "CHANNEL_UPDATE" -> CHANNEL_UPDATE (Channel_j.t_of_string contents)
| "CHANNEL_DELETE" -> CHANNEL_DELETE (Channel_j.t_of_string contents)
| "CHANNEL_PINS_UPDATE" -> CHANNEL_PINS_UPDATE (Yojson.Safe.from_string contents)
| "GUILD_CREATE" -> GUILD_CREATE (Guild_j.t_of_string contents)
| "GUILD_UPDATE" -> GUILD_UPDATE (Guild_j.t_of_string contents)
| "GUILD_DELETE" -> GUILD_DELETE (Guild_j.t_of_string contents)
| "GUILD_BAN_ADD" -> GUILD_BAN_ADD (Ban_j.t_of_string contents)
| "GUILD_BAN_REMOVE" -> GUILD_BAN_REMOVE (Ban_j.t_of_string contents)
| "GUILD_EMOJIS_UPDATE" -> GUILD_EMOJIS_UPDATE (Yojson.Safe.from_string contents)
| "GUILD_INTEGRATIONS_UPDATE" -> GUILD_INTEGRATIONS_UPDATE (Yojson.Safe.from_string contents)
| "GUILD_MEMBER_ADD" -> GUILD_MEMBER_ADD (Member_j.t_of_string contents)
| "GUILD_MEMBER_REMOVE" -> GUILD_MEMBER_REMOVE (Member_j.t_of_string contents)
| "GUILD_MEMBER_UPDATE" -> GUILD_MEMBER_UPDATE (Member_j.t_of_string contents)
(* | "GUILD_MEMBERS_CHUNK" -> GUILD_MEMBERS_CHUNK (Yojson.Safe.Util.to_list contents |> List.map ~f:(fun m -> Member_j.t_of_string m)) *)
| "GUILD_ROLE_CREATE" -> GUILD_ROLE_CREATE (Role_j.t_of_string contents)
| "GUILD_ROLE_UPDATE" -> GUILD_ROLE_UPDATE (Role_j.t_of_string contents)
| "GUILD_ROLE_DELETE" -> GUILD_ROLE_DELETE (Role_j.t_of_string contents)
| "MESSAGE_CREATE" -> MESSAGE_CREATE (Message_j.t_of_string contents)
| "MESSAGE_UPDATE" -> MESSAGE_UPDATE (Message_j.t_of_string contents)
| "MESSAGE_DELETE" -> MESSAGE_DELETE (Message_j.t_of_string contents)
(* | "MESSAGE_BULK_DELETE" -> MESSAGE_BULK_DELETE (Yojson.Safe.Util.to_list contents |> List.map ~f:(fun m -> Message_j.t_of_string m)) *)
| "MESSAGE_REACTION_ADD" -> MESSAGE_REACTION_ADD (Reaction_j.t_of_string contents)
| "MESSAGE_REACTION_REMOVE" -> MESSAGE_REACTION_REMOVE (Reaction_j.t_of_string contents)
(* | "MESSAGE_REACTION_REMOVE_ALL" -> MESSAGE_REACTION_REMOVE_ALL (Yojson.Safe.Util.to_list contents |> List.map ~f:(fun r -> Reaction_j.t_of_string r)) *)
| "PRESENCE_UPDATE" -> PRESENCE_UPDATE (Presence_j.t_of_string contents)
| "TYPING_START" -> TYPING_START (Yojson.Safe.from_string contents)
| "USER_UPDATE" -> USER_UPDATE (Yojson.Safe.from_string contents)
| "VOICE_STATE_UPDATE" -> VOICE_STATE_UPDATE (Yojson.Safe.from_string contents)
| "VOICE_SERVER_UPDATE" -> VOICE_SERVER_UPDATE (Yojson.Safe.from_string contents)
| "WEBHOOKS_UPDATE" -> WEBHOOKS_UPDATE (Yojson.Safe.from_string contents)
| s -> raise (Invalid_event s)
let dispatch ~ev contents =
let ctx = () in
event_of_string ~contents ev
|> H.handle_event ctx
end
|