Current section

Files

Jump to
discord_gleam src discord_gleam@http@endpoints.erl
Raw

src/discord_gleam@http@endpoints.erl

-module(discord_gleam@http@endpoints).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([me/1, send_message/3, reply/3, kick_member/4, ban_member/4, delete_message/4, wipe_global_commands/2, wipe_guild_commands/3, register_global_command/3, register_guild_command/4, interaction_send_text/3]).
-file("src/discord_gleam/http/endpoints.gleam", 16).
-spec me(binary()) -> {ok, discord_gleam@types@user:user()} |
{error, discord_gleam@internal@error:discord_error()}.
me(Token) ->
Request = discord_gleam@http@request:new_auth(
get,
<<"/users/@me"/utf8>>,
Token
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case gleam@http@response:get_header(Resp, <<"content-type"/utf8>>) of
{ok, <<"application/json"/utf8>>} ->
discord_gleam@types@user:from_json_string(
erlang:element(4, Resp)
);
_ ->
{error,
{invalid_format,
{decode_error,
<<"application/json content-type"/utf8>>,
<<"unknown"/utf8>>,
[]}}}
end;
{error, Err} ->
{error, {http_error, Err}}
end.
-file("src/discord_gleam/http/endpoints.gleam", 40).
-spec send_message(binary(), binary(), discord_gleam@types@message:message()) -> nil.
send_message(Token, Channel_id, Message) ->
Data = discord_gleam@types@message:to_string(Message),
logging:log(debug, <<"Sending message: "/utf8, Data/binary>>),
Request = discord_gleam@http@request:new_auth_post(
post,
<<<<"/channels/"/utf8, Channel_id/binary>>/binary, "/messages"/utf8>>,
Token,
Data
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
200 ->
logging:log(debug, <<"Message sent"/utf8>>),
nil;
_ ->
logging:log(error, <<"Failed to send message"/utf8>>),
gleam_stdlib:println(<<"- Response: "/utf8>>),
gleam@io:debug(erlang:element(4, Resp)),
gleam_stdlib:println(
<<"- Status: "/utf8,
(erlang:integer_to_binary(erlang:element(2, Resp)))/binary>>
),
nil
end,
nil;
{error, Err} ->
logging:log(error, <<"Failed to send message: "/utf8>>),
gleam_stdlib:println(<<"- Error: "/utf8>>),
gleam@io:debug(Err),
nil
end.
-file("src/discord_gleam/http/endpoints.gleam", 85).
-spec reply(binary(), binary(), discord_gleam@types@reply:reply()) -> nil.
reply(Token, Channel_id, Message) ->
Data = discord_gleam@types@reply:to_string(Message),
gleam@io:debug(Data),
logging:log(debug, <<"Replying: "/utf8, Data/binary>>),
Request = discord_gleam@http@request:new_auth_post(
post,
<<<<"/channels/"/utf8, Channel_id/binary>>/binary, "/messages"/utf8>>,
Token,
Data
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
200 ->
logging:log(debug, <<"Reply sent"/utf8>>),
nil;
_ ->
logging:log(error, <<"Failed to send reply"/utf8>>),
gleam@io:debug(erlang:element(4, Resp)),
nil
end,
nil;
{error, Err} ->
logging:log(error, <<"Failed to send reply: "/utf8>>),
gleam@io:debug(Err),
nil
end.
-file("src/discord_gleam/http/endpoints.gleam", 124).
-spec kick_member(binary(), binary(), binary(), binary()) -> {binary(),
binary()}.
kick_member(Token, Guild_id, User_id, Reason) ->
Request = discord_gleam@http@request:new_auth_with_header(
delete,
<<<<<<"/guilds/"/utf8, Guild_id/binary>>/binary, "/members/"/utf8>>/binary,
User_id/binary>>,
Token,
{<<"X-Audit-Log-Reason"/utf8>>, Reason}
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
204 ->
logging:log(debug, <<"Kicked member"/utf8>>),
{<<"OK"/utf8>>, erlang:element(4, Resp)};
_ ->
logging:log(error, <<"Failed to kick member"/utf8>>),
gleam@io:debug(erlang:element(4, Resp)),
{<<"FAILED"/utf8>>, erlang:element(4, Resp)}
end;
{error, Err} ->
logging:log(error, <<"Failed to kick member: "/utf8>>),
gleam@io:debug(Err),
{<<"FAILED"/utf8>>, <<"ERROR"/utf8>>}
end.
-file("src/discord_gleam/http/endpoints.gleam", 162).
-spec ban_member(binary(), binary(), binary(), binary()) -> {binary(), binary()}.
ban_member(Token, Guild_id, User_id, Reason) ->
Request = discord_gleam@http@request:new_auth_with_header(
put,
<<<<<<"/guilds/"/utf8, Guild_id/binary>>/binary, "/bans/"/utf8>>/binary,
User_id/binary>>,
Token,
{<<"X-Audit-Log-Reason"/utf8>>, Reason}
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
204 ->
logging:log(debug, <<"Banned member"/utf8>>),
{<<"OK"/utf8>>, erlang:element(4, Resp)};
_ ->
logging:log(error, <<"Failed to ban member"/utf8>>),
gleam@io:debug(erlang:element(4, Resp)),
{<<"FAILED"/utf8>>, erlang:element(4, Resp)}
end;
{error, Err} ->
logging:log(error, <<"Failed to ban member: "/utf8>>),
gleam@io:debug(Err),
{<<"FAILED"/utf8>>, <<"ERROR"/utf8>>}
end.
-file("src/discord_gleam/http/endpoints.gleam", 200).
-spec delete_message(binary(), binary(), binary(), binary()) -> {binary(),
binary()}.
delete_message(Token, Channel_id, Message_id, Reason) ->
Request = discord_gleam@http@request:new_auth_with_header(
delete,
<<<<<<"/channels/"/utf8, Channel_id/binary>>/binary, "/messages/"/utf8>>/binary,
Message_id/binary>>,
Token,
{<<"X-Audit-Log-Reason"/utf8>>, Reason}
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
204 ->
logging:log(debug, <<"Deleted Message"/utf8>>),
{<<"OK"/utf8>>, erlang:element(4, Resp)};
_ ->
logging:log(error, <<"Failed to delete message"/utf8>>),
gleam@io:debug(erlang:element(4, Resp)),
{<<"FAILED"/utf8>>, erlang:element(4, Resp)}
end;
{error, Err} ->
logging:log(error, <<"Failed to delete message"/utf8>>),
gleam@io:debug(Err),
{<<"FAILED"/utf8>>, <<"ERROR"/utf8>>}
end.
-file("src/discord_gleam/http/endpoints.gleam", 238).
-spec wipe_global_commands(binary(), binary()) -> {binary(), binary()}.
wipe_global_commands(Token, Client_id) ->
Request = discord_gleam@http@request:new_auth_post(
put,
<<<<"/applications/"/utf8, Client_id/binary>>/binary, "/commands"/utf8>>,
Token,
<<"{}"/utf8>>
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
200 ->
logging:log(debug, <<"Wiped global commands"/utf8>>),
{<<"OK"/utf8>>, erlang:element(4, Resp)};
_ ->
logging:log(
error,
<<"Failed to wipe global commands"/utf8>>
),
gleam@io:debug(erlang:element(4, Resp)),
{<<"FAILED"/utf8>>, erlang:element(4, Resp)}
end;
{error, Err} ->
logging:log(error, <<"Failed to wipe global commands"/utf8>>),
gleam@io:debug(Err),
{<<"FAILED"/utf8>>, <<"ERROR"/utf8>>}
end.
-file("src/discord_gleam/http/endpoints.gleam", 274).
-spec wipe_guild_commands(binary(), binary(), binary()) -> {binary(), binary()}.
wipe_guild_commands(Token, Client_id, Guild_id) ->
Request = discord_gleam@http@request:new_auth_post(
put,
<<<<<<<<"/applications/"/utf8, Client_id/binary>>/binary,
"/guilds/"/utf8>>/binary,
Guild_id/binary>>/binary,
"/commands"/utf8>>,
Token,
<<"{}"/utf8>>
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
200 ->
logging:log(debug, <<"Wiped guild commands"/utf8>>),
{<<"OK"/utf8>>, erlang:element(4, Resp)};
_ ->
logging:log(error, <<"Failed to wipe guild commands"/utf8>>),
gleam@io:debug(erlang:element(4, Resp)),
{<<"FAILED"/utf8>>, erlang:element(4, Resp)}
end;
{error, Err} ->
logging:log(error, <<"Failed to wipe guild commands"/utf8>>),
gleam@io:debug(Err),
{<<"FAILED"/utf8>>, <<"ERROR"/utf8>>}
end.
-file("src/discord_gleam/http/endpoints.gleam", 311).
-spec register_global_command(
binary(),
binary(),
discord_gleam@types@slash_command:slash_command()
) -> {binary(), binary()}.
register_global_command(Token, Client_id, Command) ->
Request = discord_gleam@http@request:new_auth_post(
post,
<<<<"/applications/"/utf8, Client_id/binary>>/binary, "/commands"/utf8>>,
Token,
discord_gleam@types@slash_command:command_to_string(Command)
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
201 ->
logging:log(
debug,
<<"Added global command "/utf8,
(erlang:element(2, Command))/binary>>
),
{<<"OK"/utf8>>, erlang:element(4, Resp)};
200 ->
logging:log(
debug,
<<"Updated global command "/utf8,
(erlang:element(2, Command))/binary>>
),
{<<"OK"/utf8>>, erlang:element(4, Resp)};
_ ->
logging:log(
error,
<<"Failed to add global command"/utf8,
(erlang:element(2, Command))/binary>>
),
gleam@io:debug(erlang:element(4, Resp)),
{<<"FAILED"/utf8>>, erlang:element(4, Resp)}
end;
{error, Err} ->
logging:log(
error,
<<"Failed to add global command"/utf8,
(erlang:element(2, Command))/binary>>
),
gleam@io:debug(Err),
{<<"FAILED"/utf8>>, <<"ERROR"/utf8>>}
end.
-file("src/discord_gleam/http/endpoints.gleam", 355).
-spec register_guild_command(
binary(),
binary(),
binary(),
discord_gleam@types@slash_command:slash_command()
) -> {binary(), binary()}.
register_guild_command(Token, Client_id, Guild_id, Command) ->
Request = discord_gleam@http@request:new_auth_post(
post,
<<<<<<<<"/applications/"/utf8, Client_id/binary>>/binary,
"/guilds/"/utf8>>/binary,
Guild_id/binary>>/binary,
"/commands"/utf8>>,
Token,
discord_gleam@types@slash_command:command_to_string(Command)
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
201 ->
logging:log(
debug,
<<"Added guild command "/utf8,
(erlang:element(2, Command))/binary>>
),
{<<"OK"/utf8>>, erlang:element(4, Resp)};
200 ->
logging:log(
debug,
<<"Updated guild command "/utf8,
(erlang:element(2, Command))/binary>>
),
{<<"OK"/utf8>>, erlang:element(4, Resp)};
_ ->
logging:log(
error,
<<"Failed to add guild command"/utf8,
(erlang:element(2, Command))/binary>>
),
gleam@io:debug(erlang:element(4, Resp)),
{<<"FAILED"/utf8>>, erlang:element(4, Resp)}
end;
{error, Err} ->
logging:log(
error,
<<"Failed to add guild command"/utf8,
(erlang:element(2, Command))/binary>>
),
gleam@io:debug(Err),
{<<"FAILED"/utf8>>, <<"ERROR"/utf8>>}
end.
-file("src/discord_gleam/http/endpoints.gleam", 400).
-spec interaction_send_text(
discord_gleam@ws@packets@interaction_create:interaction_create(),
binary(),
boolean()
) -> {binary(), binary()}.
interaction_send_text(Interaction, Message, Ephemeral) ->
Request = discord_gleam@http@request:new_post(
post,
<<<<<<<<"/interactions/"/utf8,
(erlang:element(4, erlang:element(5, Interaction)))/binary>>/binary,
"/"/utf8>>/binary,
(erlang:element(2, erlang:element(5, Interaction)))/binary>>/binary,
"/callback"/utf8>>,
discord_gleam@types@slash_command:make_basic_text_reply(
Message,
Ephemeral
)
),
case gleam@hackney:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
204 ->
logging:log(debug, <<"Sent Interaction Response"/utf8>>),
{<<"OK"/utf8>>, erlang:element(4, Resp)};
_ ->
logging:log(
error,
<<"Failed to send Interaction Response"/utf8>>
),
gleam@io:debug(erlang:element(4, Resp)),
{<<"FAILED"/utf8>>, erlang:element(4, Resp)}
end;
{error, Err} ->
logging:log(
error,
<<"Error when sending Interaction Response"/utf8>>
),
gleam@io:debug(Err),
{<<"FAILED"/utf8>>, <<"ERROR"/utf8>>}
end.