libdiscord

libdiscord.git
git clone git://git.lenczewski.org/libdiscord.git
Log | Files | Refs | README | LICENSE

libdiscord.h (2541B)


      1 #ifndef LIBDISCORD_H
      2 #define LIBDISCORD_H
      3 
      4 #define LIBDISCORD_VERSION_MAJOR "0"
      5 #define LIBDISCORD_VERSION_MINOR "1"
      6 #define LIBDISCORD_VERSION_PATCH "0"
      7 
      8 #define LIBDISCORD_VERSION \
      9 	LIBDISCORD_VERSION_MAJOR "." \
     10 	LIBDISCORD_VERSION_MINOR "." \
     11 	LIBDISCORD_VERSION_PATCH
     12 
     13 #include <stddef.h>
     14 #include <stdint.h>
     15 
     16 struct discord_api_event {
     17 	char const *ptr;
     18 	int len;
     19 };
     20 
     21 enum discord_gateway_opcode {
     22 	DISCORD_GATEWAY_DISPATCH,
     23 	DISCORD_GATEWAY_HEARTBEAT,
     24 	DISCORD_GATEWAY_IDENTIFY,
     25 	DISCORD_GATEWAY_PRESENCE_UPDATE,
     26 	DISCORD_GATEWAY_VOICE_STATE_UPDATE,
     27 	DISCORD_GATEWAY_RESUME,
     28 	DISCORD_GATEWAY_RECONNECT,
     29 	DISCORD_GATEWAY_REQUEST_GUILD_MEMBERS,
     30 	DISCORD_GATEWAY_INVALID_SESSION,
     31 	DISCORD_GATEWAY_HELLO,
     32 	DISCORD_GATEWAY_HEARTBEAT_ACK,
     33 	DISCORD_GATEWAY_REQUEST_SOUNDBOARD_SOUNDS,
     34 };
     35 
     36 enum discord_gateway_error {
     37 	DISCORD_GATEWAY_UNKNOWN_ERROR		= 4000,
     38 	DISCORD_GATEWAY_UNKNOWN_OPCODE		= 4001,
     39 	DISCORD_GATEWAY_DECODE_ERROR		= 4002,
     40 	DISCORD_GATEWAY_NOT_AUTHENTICATED	= 4003,
     41 	DISCORD_GATEWAY_AUTHENTICATION_FAILED	= 4004,
     42 	DISCORD_GATEWAY_ALREADY_AUTHENTICATED	= 4005,
     43 	/* reserved */
     44 	DISCORD_GATEWAY_INVALID_SEQ		= 4007,
     45 	DISCORD_GATEWAY_RATE_LIMITED		= 4008,
     46 	DISCORD_GATEWAY_SESSION_TIMED_OUT	= 4009,
     47 	DISCORD_GATEWAY_INVALID_SHARD		= 4010,
     48 	DISCORD_GATEWAY_SHARDING_REQUIRED	= 4011,
     49 	DISCORD_GATEWAY_INVALID_API_VERSION	= 4012,
     50 	DISCORD_GATEWAY_INVALID_INTENTS		= 4013,
     51 	DISCORD_GATEWAY_DISALLOWED_INTENTS	= 4014,
     52 };
     53 
     54 struct discord_gateway_event {
     55 	char const *ptr;
     56 	int len;
     57 };
     58 
     59 struct discord_voice_event {
     60 	char const *ptr;
     61 	int len;
     62 };
     63 
     64 enum discord_event_type {
     65 	DISCORD_EVENT_API,
     66 	DISCORD_EVENT_GATEWAY,
     67 	DISCORD_EVENT_VOICE,
     68 };
     69 
     70 union discord_event_tag {
     71 	struct discord_api_event api;
     72 	struct discord_gateway_event gateway;
     73 	struct discord_voice_event voice;
     74 };
     75 
     76 struct discord_event {
     77 	enum discord_event_type type;
     78 	union discord_event_tag tag;
     79 };
     80 
     81 struct discord;
     82 
     83 size_t
     84 discord_sizeof(void);
     85 
     86 int
     87 discord_init(struct discord *ctx, void *mem, size_t len);
     88 
     89 void
     90 discord_free(struct discord *ctx);
     91 
     92 int
     93 discord_connect_gateway(struct discord *ctx);
     94 
     95 int
     96 discord_connect_voice(struct discord *ctx);
     97 
     98 int
     99 discord_poll_events(struct discord *ctx,
    100 		    struct discord_event *evs, size_t cap);
    101 
    102 // discord api calls
    103 // ========================================================================
    104 
    105 // discord gateway calls
    106 // ========================================================================
    107 
    108 // discord voice calls
    109 // ========================================================================
    110 
    111 #endif /* LIBDISCORD_H */