-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(), _assert_subject = glitch@eventsub@client:new(new_api_client(), Mailbox), {ok, Eventsub} = 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_eventsub"/utf8>>, line => 93}) end, _ = glitch@eventsub@client:start(Eventsub), gleam_erlang_ffi:sleep_forever(). -spec main() -> nil. main() -> test_eventsub().