Current section
Files
Jump to
Current section
Files
src/glitch.erl
-module(glitch).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([get_access_token/0, test_chat/0, test_eventsub/0, main/0]).
-spec get_access_token() -> {ok, nil} | {error, any()}.
get_access_token() ->
_assert_subject = dot_env_ffi:get_env(<<"CLIENT_ID"/utf8>>),
{ok, Client_id} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"glitch"/utf8>>,
function => <<"get_access_token"/utf8>>,
line => 15})
end,
_assert_subject@1 = dot_env_ffi:get_env(<<"CLIENT_SECRET"/utf8>>),
{ok, Client_secret} = case _assert_subject@1 of
{ok, _} -> _assert_subject@1;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail@1,
module => <<"glitch"/utf8>>,
function => <<"get_access_token"/utf8>>,
line => 16})
end,
Scopes = [channel_bot,
channel_manage_redemptions,
channel_read_redemptions,
channel_read_subscriptions,
chat_read,
user_bot,
user_read_chat,
user_write_chat],
Mailbox = gleam@erlang@process:new_subject(),
_assert_subject@2 = glitch@auth@token_fetcher:new(
Client_id,
Client_secret,
Scopes,
none
),
{ok, Token_fetcher} = case _assert_subject@2 of
{ok, _} -> _assert_subject@2;
_assert_fail@2 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail@2,
module => <<"glitch"/utf8>>,
function => <<"get_access_token"/utf8>>,
line => 30})
end,
glitch@auth@token_fetcher:fetch(Token_fetcher, Mailbox),
_assert_subject@3 = begin
_pipe = gleam_erlang_ffi:new_selector(),
_pipe@1 = gleam@erlang@process:selecting(
_pipe,
Mailbox,
fun gleam@function:identity/1
),
gleam_erlang_ffi:select(_pipe@1)
end,
{ok, Access_token} = case _assert_subject@3 of
{ok, _} -> _assert_subject@3;
_assert_fail@3 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail@3,
module => <<"glitch"/utf8>>,
function => <<"get_access_token"/utf8>>,
line => 35})
end,
gleam@io:debug(Access_token),
{ok, nil}.
-spec new_api_client() -> glitch@api@client:client().
new_api_client() ->
_assert_subject = dot_env_ffi:get_env(<<"ACCESS_TOKEN"/utf8>>),
{ok, Access_token_str} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"glitch"/utf8>>,
function => <<"new_api_client"/utf8>>,
line => 46})
end,
_assert_subject@1 = dot_env_ffi:get_env(<<"REFRESH_TOKEN"/utf8>>),
{ok, Refresh_token_str} = case _assert_subject@1 of
{ok, _} -> _assert_subject@1;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail@1,
module => <<"glitch"/utf8>>,
function => <<"new_api_client"/utf8>>,
line => 47})
end,
_assert_subject@2 = dot_env_ffi:get_env(<<"CLIENT_ID"/utf8>>),
{ok, Client_id} = case _assert_subject@2 of
{ok, _} -> _assert_subject@2;
_assert_fail@2 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail@2,
module => <<"glitch"/utf8>>,
function => <<"new_api_client"/utf8>>,
line => 48})
end,
_assert_subject@3 = dot_env_ffi:get_env(<<"CLIENT_SECRET"/utf8>>),
{ok, Client_secret} = case _assert_subject@3 of
{ok, _} -> _assert_subject@3;
_assert_fail@3 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail@3,
module => <<"glitch"/utf8>>,
function => <<"new_api_client"/utf8>>,
line => 49})
end,
Scopes = [channel_bot,
channel_manage_redemptions,
channel_read_redemptions,
channel_read_subscriptions,
chat_read,
user_bot,
user_read_chat,
user_write_chat],
Access_token = glitch@types@access_token:new_user_access_token(
0,
0,
Refresh_token_str,
Scopes,
Access_token_str,
none
),
Auth_provider = glitch@auth@auth_provider:new_refreshing_provider(
Access_token,
Client_id,
Client_secret,
none
),
glitch@api@client:new(Auth_provider).
-spec test_chat() -> {ok, list(glitch@api@chat:message())} |
{error, glitch@error:twitch_error()}.
test_chat() ->
Client = new_api_client(),
Send_msg_request = {send_message_request,
<<"209286766"/utf8>>,
<<"209286766"/utf8>>,
<<"Hello, chat!"/utf8>>,
none},
_assert_subject = glitch@api@chat:send_message(Client, Send_msg_request),
{ok, _} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"glitch"/utf8>>,
function => <<"test_chat"/utf8>>,
line => 88})
end.
-spec test_eventsub() -> nil.
test_eventsub() ->
Mailbox = gleam@erlang@process:new_subject(),
Eventsub = glitch@eventsub@client:new(new_api_client(), Mailbox),
_ = glitch@eventsub@client:start(Eventsub),
gleam_erlang_ffi:sleep_forever().
-spec main() -> nil.
main() ->
test_eventsub().