forked from cee-studio/orca
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathslack.h
77 lines (60 loc) · 2.57 KB
/
slack.h
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
#ifndef SLACK_H
#define SLACK_H
#include <stdbool.h>
#include "json-actor-boxed.h"
#include "common.h"
#include "logconf.h"
/* see specs/slack/ for specs */
#include "specs-code/slack/one-specs.h"
#define SLACK_BASE_API_URL "https://slack.com/api"
struct slack; /* forward declaration */
/** @todo generate as specs */
enum slack_sm_types {
SLACK_SOCKETMODE_TYPE_NONE = 0,
/* EVENTS API ENUMS */
SLACK_SOCKETMODE_TYPE_MESSAGE,
/* INTERACTION ENUMS */
SLACK_SOCKETMODE_TYPE_BLOCK_ACTIONS,
SLACK_SOCKETMODE_TYPE_MESSAGE_ACTIONS,
SLACK_SOCKETMODE_TYPE_VIEW_CLOSED,
SLACK_SOCKETMODE_TYPE_VIEW_SUBMISSION
};
typedef void (*slack_on_event)(struct slack *client,
const char payload[],
size_t len);
struct slack *slack_config_init(const char config_file[]);
void slack_cleanup(struct slack *client);
void slack_set_on_idle(struct slack *client, slack_on_event callback);
void slack_set_on_hello(struct slack *client, slack_on_event callback);
void slack_set_on_message(struct slack *client, slack_on_event callback);
void slack_set_on_block_actions(struct slack *client, slack_on_event callback);
void slack_set_on_message_actions(struct slack *client,
slack_on_event callback);
void slack_set_on_view_closed(struct slack *client, slack_on_event callback);
void slack_set_on_view_submission(struct slack *client,
slack_on_event callback);
void slack_run(struct slack *client);
ORCAcode slack_apps_connections_open(struct slack *client,
struct sized_buffer *ret);
ORCAcode slack_auth_test(struct slack *client, struct sized_buffer *ret);
ORCAcode slack_chat_post_message(struct slack *client,
struct slack_chat_post_message_params *params,
struct sized_buffer *ret);
ORCAcode slack_users_info(struct slack *client,
struct slack_users_info_params *params,
struct sized_buffer *ret);
typedef enum slack_event_scheduler {
/** this event has been handled */
SLACK_EVENT_IGNORE,
/** handle this event in main thread */
SLACK_EVENT_MAIN_THREAD,
/** handle this event in a worker thread */
SLACK_EVENT_WORKER_THREAD
} slack_event_scheduler_t;
typedef slack_event_scheduler_t (*slack_on_scheduler)(
struct slack *client,
struct sized_buffer *event_data,
enum slack_sm_types type);
void slack_set_event_scheduler(struct slack *client,
slack_on_scheduler callback);
#endif /* SLACK_H */