Current section

Files

Jump to
glitch src glitch@api@client.erl
Raw

src/glitch@api@client.erl

-module(glitch@api@client).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/1, client_id/1, access_token/1, get/2, post/2]).
-export_type([client/0]).
-opaque client() :: {client, glitch@auth@auth_provider:auth_provider()}.
-spec new(glitch@auth@auth_provider:auth_provider()) -> client().
new(Auth_provider) ->
{client, Auth_provider}.
-spec client_id(client()) -> binary().
client_id(Client) ->
glitch@auth@auth_provider:client_id(erlang:element(2, Client)).
-spec access_token(client()) -> {ok, glitch@types@access_token:access_token()} |
{error, glitch@error:twitch_error()}.
access_token(Client) ->
glitch@auth@auth_provider:access_token(erlang:element(2, Client)).
-spec headers(client()) -> {ok, list({binary(), binary()})} |
{error, glitch@error:twitch_error()}.
headers(Client) ->
Client_id = glitch@auth@auth_provider:client_id(erlang:element(2, Client)),
gleam@result:'try'(
access_token(Client),
fun(Access_token) ->
Authorization = <<"Bearer "/utf8,
(glitch@types@access_token:token(Access_token))/binary>>,
{ok,
[{<<"Authorization"/utf8>>, Authorization},
{<<"Client-Id"/utf8>>, Client_id},
{<<"Content-Type"/utf8>>, <<"application/json"/utf8>>}]}
end
).
-spec get(client(), glitch@api@api_request:twitch_api_request()) -> {ok,
glitch@api@api_response:twitch_api_response(binary())} |
{error, glitch@error:twitch_error()}.
get(Client, Request) ->
gleam@result:'try'(headers(Client), fun(Headers) -> _pipe = Request,
_pipe@1 = glitch@api@api_request:merge_headers(
_pipe,
Headers,
glitch@api@api_request:headers(Request)
),
_pipe@2 = glitch@api@api_request:set_method(_pipe@1, get),
glitch@api@api:send(_pipe@2) end).
-spec post(client(), glitch@api@api_request:twitch_api_request()) -> {ok,
glitch@api@api_response:twitch_api_response(binary())} |
{error, glitch@error:twitch_error()}.
post(Client, Request) ->
gleam@result:'try'(headers(Client), fun(Headers) -> _pipe = Request,
_pipe@1 = glitch@api@api_request:merge_headers(
_pipe,
Headers,
glitch@api@api_request:headers(Request)
),
_pipe@2 = glitch@api@api_request:set_method(_pipe@1, post),
glitch@api@api:send(_pipe@2) end).