-
Notifications
You must be signed in to change notification settings - Fork 1
/
glitch.gleam
103 lines (86 loc) · 2.4 KB
/
glitch.gleam
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import dot_env/env
import gleam/erlang/process
import gleam/function
import gleam/io
import gleam/option.{None}
import glitch/api/chat.{SendMessageRequest}
import glitch/api/client as api_client
import glitch/auth/auth_provider
import glitch/auth/token_fetcher
import glitch/eventsub/client as eventsub_client
import glitch/types/access_token
import glitch/types/scope
pub fn get_access_token() {
let assert Ok(client_id) = env.get("CLIENT_ID")
let assert Ok(client_secret) = env.get("CLIENT_SECRET")
let scopes = [
scope.ChannelBot,
scope.ChannelManageRedemptions,
scope.ChannelReadRedemptions,
scope.ChannelReadSubscriptions,
scope.ChatRead,
scope.UserBot,
scope.UserReadChat,
scope.UserWriteChat,
]
let mailbox = process.new_subject()
let assert Ok(token_fetcher) =
token_fetcher.new(client_id, client_secret, scopes, None)
token_fetcher.fetch(token_fetcher, mailbox)
let assert Ok(access_token) =
process.new_selector()
|> process.selecting(mailbox, function.identity)
|> process.select_forever
io.debug(access_token)
Ok(Nil)
}
fn new_api_client() {
let assert Ok(access_token_str) = env.get("ACCESS_TOKEN")
let assert Ok(refresh_token_str) = env.get("REFRESH_TOKEN")
let assert Ok(client_id) = env.get("CLIENT_ID")
let assert Ok(client_secret) = env.get("CLIENT_SECRET")
let scopes = [
scope.ChannelBot,
scope.ChannelManageRedemptions,
scope.ChannelReadRedemptions,
scope.ChannelReadSubscriptions,
scope.ChatRead,
scope.UserBot,
scope.UserReadChat,
scope.UserWriteChat,
]
let access_token =
access_token.new_user_access_token(
0,
0,
refresh_token_str,
scopes,
access_token_str,
None,
)
let auth_provider =
auth_provider.new_refreshing_provider(
access_token,
client_id,
client_secret,
None,
)
api_client.new(auth_provider)
}
pub fn test_chat() {
let client = new_api_client()
let send_msg_request =
SendMessageRequest("209286766", "209286766", "Hello, chat!", None)
let assert Ok(_) = chat.send_message(client, send_msg_request)
}
pub fn test_eventsub() {
let mailbox = process.new_subject()
let assert Ok(eventsub) = eventsub_client.new(new_api_client(), mailbox)
let _ = eventsub_client.start(eventsub)
process.sleep_forever()
}
pub fn main() {
// get_access_token()
// // let _ = test_chat()
test_eventsub()
}