Current section
Files
Jump to
Current section
Files
src/glitch@api@api_request.erl
-module(glitch@api@api_request).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([to_http_request/1, is_auth_request/1, is_helix_request/1, headers/1, set_headers/2, set_header/2, merge_headers/3, set_method/2, set_query/2, set_body/2, set_path/2, new_helix_request/0, new_auth_request/0]).
-export_type([twitch_api_request/0]).
-opaque twitch_api_request() :: {helix_api_request,
gleam@http@request:request(binary())} |
{auth_api_request, gleam@http@request:request(binary())}.
-spec api_request_from_request(gleam@http@request:request(binary())) -> twitch_api_request().
api_request_from_request(Request) ->
{helix_api_request, Request}.
-spec auth_request_from_request(gleam@http@request:request(binary())) -> twitch_api_request().
auth_request_from_request(Request) ->
{auth_api_request, Request}.
-spec to_http_request(twitch_api_request()) -> gleam@http@request:request(binary()).
to_http_request(Request) ->
case Request of
{helix_api_request, Http_request} ->
Http_request;
{auth_api_request, Http_request@1} ->
Http_request@1
end.
-spec is_auth_request(twitch_api_request()) -> boolean().
is_auth_request(Request) ->
case Request of
{helix_api_request, _} ->
false;
{auth_api_request, _} ->
true
end.
-spec is_helix_request(twitch_api_request()) -> boolean().
is_helix_request(Request) ->
case Request of
{helix_api_request, _} ->
true;
{auth_api_request, _} ->
false
end.
-spec headers(twitch_api_request()) -> list({binary(), binary()}).
headers(Request) ->
erlang:element(3, to_http_request(Request)).
-spec set_headers(twitch_api_request(), list({binary(), binary()})) -> twitch_api_request().
set_headers(Request, Headers) ->
Set_headers_internal = fun(Request@1, Headers@1) -> _pipe = Request@1,
_pipe@1 = to_http_request(_pipe),
glitch@extended@request_ext:set_headers(_pipe@1, Headers@1) end,
case Request of
{helix_api_request, _} = Http_request ->
_pipe@2 = Http_request,
_pipe@3 = Set_headers_internal(_pipe@2, Headers),
{helix_api_request, _pipe@3};
{auth_api_request, _} = Http_request@1 ->
_pipe@4 = Http_request@1,
_pipe@5 = Set_headers_internal(_pipe@4, Headers),
{auth_api_request, _pipe@5}
end.
-spec set_header(twitch_api_request(), {binary(), binary()}) -> twitch_api_request().
set_header(Request, Header) ->
Set_header_internal = fun(Request@1, Header@1) -> _pipe = Request@1,
_pipe@1 = to_http_request(_pipe),
glitch@extended@request_ext:set_header(_pipe@1, Header@1) end,
case Request of
{helix_api_request, _} = Http_request ->
_pipe@2 = Http_request,
_pipe@3 = Set_header_internal(_pipe@2, Header),
{helix_api_request, _pipe@3};
{auth_api_request, _} = Http_request@1 ->
_pipe@4 = Http_request@1,
_pipe@5 = Set_header_internal(_pipe@4, Header),
{auth_api_request, _pipe@5}
end.
-spec merge_headers(
twitch_api_request(),
list({binary(), binary()}),
list({binary(), binary()})
) -> twitch_api_request().
merge_headers(Request, Base, Overrides) ->
case Request of
{helix_api_request, Http_request} ->
{helix_api_request,
glitch@extended@request_ext:merge_headers(
Http_request,
Base,
Overrides
)};
{auth_api_request, Http_request@1} ->
{auth_api_request,
glitch@extended@request_ext:merge_headers(
Http_request@1,
Base,
Overrides
)}
end.
-spec set_method(twitch_api_request(), gleam@http:method()) -> twitch_api_request().
set_method(Request, Method) ->
case Request of
{helix_api_request, Http_request} ->
{helix_api_request, erlang:setelement(2, Http_request, Method)};
{auth_api_request, Http_request@1} ->
{auth_api_request, erlang:setelement(2, Http_request@1, Method)}
end.
-spec set_query(twitch_api_request(), list({binary(), binary()})) -> twitch_api_request().
set_query(Request, Query_params) ->
case Request of
{helix_api_request, Http_request} ->
_pipe = Http_request,
_pipe@1 = gleam@http@request:set_query(_pipe, Query_params),
{helix_api_request, _pipe@1};
{auth_api_request, Http_request@1} ->
_pipe@2 = Http_request@1,
_pipe@3 = gleam@http@request:set_query(_pipe@2, Query_params),
{auth_api_request, _pipe@3}
end.
-spec set_body(twitch_api_request(), binary()) -> twitch_api_request().
set_body(Request, Body) ->
case Request of
{helix_api_request, Http_request} ->
{helix_api_request, erlang:setelement(4, Http_request, Body)};
{auth_api_request, Http_request@1} ->
{auth_api_request, erlang:setelement(4, Http_request@1, Body)}
end.
-spec set_path(twitch_api_request(), binary()) -> twitch_api_request().
set_path(Request, Path) ->
case Request of
{helix_api_request, Http_request} ->
{helix_api_request, erlang:setelement(8, Http_request, Path)};
{auth_api_request, Http_request@1} ->
{auth_api_request, erlang:setelement(8, Http_request@1, Path)}
end.
-spec new_helix_request() -> twitch_api_request().
new_helix_request() ->
_pipe = gleam@http@request:new(),
_pipe@1 = gleam@http@request:set_scheme(_pipe, https),
_pipe@2 = gleam@http@request:set_host(
_pipe@1,
<<"api.twitch.tv/helix"/utf8>>
),
api_request_from_request(_pipe@2).
-spec new_auth_request() -> twitch_api_request().
new_auth_request() ->
_pipe = gleam@http@request:new(),
_pipe@1 = gleam@http@request:set_scheme(_pipe, https),
_pipe@2 = gleam@http@request:set_host(_pipe@1, <<"id.twitch.tv"/utf8>>),
auth_request_from_request(_pipe@2).