Packages

A Gleam library for building Discord webhook payloads safely.

Current section

Files

Jump to
kitazith src kitazith@webhook@execute.erl
Raw

src/kitazith@webhook@execute.erl

-module(kitazith@webhook@execute).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/kitazith/webhook/execute.gleam").
-export([new/0, with_content/2, with_username/2, with_avatar_url/2, with_tts/2, with_embeds/2, with_allowed_mentions/2, with_components/2, with_attachments/2, with_flags/2, with_thread_name/2, with_applied_tags/2, with_poll/2, validate/1, validate_with_query/2, to_json/1, to_string/1, to_string_tree/1]).
-export_type([execute_payload/0, execute_payload_flag/0]).
-type execute_payload() :: {execute_payload,
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(boolean()),
gleam@option:option(list(kitazith@embed:embed())),
gleam@option:option(kitazith@allowed_mentions:allowed_mentions()),
gleam@option:option(list(kitazith@component:component())),
gleam@option:option(list(kitazith@attachment:attachment())),
gleam@option:option(list(execute_payload_flag())),
gleam@option:option(binary()),
gleam@option:option(list(kitazith@snowflake:snowflake())),
gleam@option:option(kitazith@poll:poll())}.
-type execute_payload_flag() :: suppress_embeds |
suppress_notifications |
is_components_v2.
-file("src/kitazith/webhook/execute.gleam", 62).
-spec new() -> execute_payload().
new() ->
{execute_payload,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none}.
-file("src/kitazith/webhook/execute.gleam", 79).
-spec with_content(execute_payload(), binary()) -> execute_payload().
with_content(Payload, Content) ->
{execute_payload,
{some, Content},
erlang:element(3, Payload),
erlang:element(4, Payload),
erlang:element(5, Payload),
erlang:element(6, Payload),
erlang:element(7, Payload),
erlang:element(8, Payload),
erlang:element(9, Payload),
erlang:element(10, Payload),
erlang:element(11, Payload),
erlang:element(12, Payload),
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 86).
-spec with_username(execute_payload(), binary()) -> execute_payload().
with_username(Payload, Username) ->
{execute_payload,
erlang:element(2, Payload),
{some, Username},
erlang:element(4, Payload),
erlang:element(5, Payload),
erlang:element(6, Payload),
erlang:element(7, Payload),
erlang:element(8, Payload),
erlang:element(9, Payload),
erlang:element(10, Payload),
erlang:element(11, Payload),
erlang:element(12, Payload),
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 93).
-spec with_avatar_url(execute_payload(), binary()) -> execute_payload().
with_avatar_url(Payload, Avatar_url) ->
{execute_payload,
erlang:element(2, Payload),
erlang:element(3, Payload),
{some, Avatar_url},
erlang:element(5, Payload),
erlang:element(6, Payload),
erlang:element(7, Payload),
erlang:element(8, Payload),
erlang:element(9, Payload),
erlang:element(10, Payload),
erlang:element(11, Payload),
erlang:element(12, Payload),
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 100).
-spec with_tts(execute_payload(), boolean()) -> execute_payload().
with_tts(Payload, Tts) ->
{execute_payload,
erlang:element(2, Payload),
erlang:element(3, Payload),
erlang:element(4, Payload),
{some, Tts},
erlang:element(6, Payload),
erlang:element(7, Payload),
erlang:element(8, Payload),
erlang:element(9, Payload),
erlang:element(10, Payload),
erlang:element(11, Payload),
erlang:element(12, Payload),
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 104).
-spec with_embeds(execute_payload(), list(kitazith@embed:embed())) -> execute_payload().
with_embeds(Payload, Embeds) ->
{execute_payload,
erlang:element(2, Payload),
erlang:element(3, Payload),
erlang:element(4, Payload),
erlang:element(5, Payload),
{some, Embeds},
erlang:element(7, Payload),
erlang:element(8, Payload),
erlang:element(9, Payload),
erlang:element(10, Payload),
erlang:element(11, Payload),
erlang:element(12, Payload),
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 111).
-spec with_allowed_mentions(
execute_payload(),
kitazith@allowed_mentions:allowed_mentions()
) -> execute_payload().
with_allowed_mentions(Payload, Mentions) ->
{execute_payload,
erlang:element(2, Payload),
erlang:element(3, Payload),
erlang:element(4, Payload),
erlang:element(5, Payload),
erlang:element(6, Payload),
{some, Mentions},
erlang:element(8, Payload),
erlang:element(9, Payload),
erlang:element(10, Payload),
erlang:element(11, Payload),
erlang:element(12, Payload),
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 118).
-spec with_components(execute_payload(), list(kitazith@component:component())) -> execute_payload().
with_components(Payload, Components) ->
{execute_payload,
erlang:element(2, Payload),
erlang:element(3, Payload),
erlang:element(4, Payload),
erlang:element(5, Payload),
erlang:element(6, Payload),
erlang:element(7, Payload),
{some, Components},
erlang:element(9, Payload),
erlang:element(10, Payload),
erlang:element(11, Payload),
erlang:element(12, Payload),
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 125).
-spec with_attachments(
execute_payload(),
list(kitazith@attachment:attachment())
) -> execute_payload().
with_attachments(Payload, Attachments) ->
{execute_payload,
erlang:element(2, Payload),
erlang:element(3, Payload),
erlang:element(4, Payload),
erlang:element(5, Payload),
erlang:element(6, Payload),
erlang:element(7, Payload),
erlang:element(8, Payload),
{some, Attachments},
erlang:element(10, Payload),
erlang:element(11, Payload),
erlang:element(12, Payload),
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 132).
-spec with_flags(execute_payload(), list(execute_payload_flag())) -> execute_payload().
with_flags(Payload, Flags) ->
{execute_payload,
erlang:element(2, Payload),
erlang:element(3, Payload),
erlang:element(4, Payload),
erlang:element(5, Payload),
erlang:element(6, Payload),
erlang:element(7, Payload),
erlang:element(8, Payload),
erlang:element(9, Payload),
{some, Flags},
erlang:element(11, Payload),
erlang:element(12, Payload),
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 139).
-spec with_thread_name(execute_payload(), binary()) -> execute_payload().
with_thread_name(Payload, Thread_name) ->
{execute_payload,
erlang:element(2, Payload),
erlang:element(3, Payload),
erlang:element(4, Payload),
erlang:element(5, Payload),
erlang:element(6, Payload),
erlang:element(7, Payload),
erlang:element(8, Payload),
erlang:element(9, Payload),
erlang:element(10, Payload),
{some, Thread_name},
erlang:element(12, Payload),
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 146).
-spec with_applied_tags(execute_payload(), list(kitazith@snowflake:snowflake())) -> execute_payload().
with_applied_tags(Payload, Applied_tags) ->
{execute_payload,
erlang:element(2, Payload),
erlang:element(3, Payload),
erlang:element(4, Payload),
erlang:element(5, Payload),
erlang:element(6, Payload),
erlang:element(7, Payload),
erlang:element(8, Payload),
erlang:element(9, Payload),
erlang:element(10, Payload),
erlang:element(11, Payload),
{some, Applied_tags},
erlang:element(13, Payload)}.
-file("src/kitazith/webhook/execute.gleam", 153).
-spec with_poll(execute_payload(), kitazith@poll:poll()) -> execute_payload().
with_poll(Payload, Poll) ->
{execute_payload,
erlang:element(2, Payload),
erlang:element(3, Payload),
erlang:element(4, Payload),
erlang:element(5, Payload),
erlang:element(6, Payload),
erlang:element(7, Payload),
erlang:element(8, Payload),
erlang:element(9, Payload),
erlang:element(10, Payload),
erlang:element(11, Payload),
erlang:element(12, Payload),
{some, Poll}}.
-file("src/kitazith/webhook/execute.gleam", 357).
-spec components_v2_conflict_errors(execute_payload()) -> list(kitazith@validation:validation_error()).
components_v2_conflict_errors(Payload) ->
lists:append([case erlang:element(2, Payload) of
{some, _} ->
[{validation_error,
<<"content"/utf8>>,
{mutually_exclusive_with,
<<"flags[IsComponentsV2]"/utf8>>}}];
none ->
[]
end, case erlang:element(6, Payload) of
{some, _} ->
[{validation_error,
<<"embeds"/utf8>>,
{mutually_exclusive_with,
<<"flags[IsComponentsV2]"/utf8>>}}];
none ->
[]
end, case erlang:element(13, Payload) of
{some, _} ->
[{validation_error,
<<"poll"/utf8>>,
{mutually_exclusive_with,
<<"flags[IsComponentsV2]"/utf8>>}}];
none ->
[]
end]).
-file("src/kitazith/webhook/execute.gleam", 350).
-spec has_is_components_v2_flag(
gleam@option:option(list(execute_payload_flag()))
) -> boolean().
has_is_components_v2_flag(Flags) ->
case Flags of
{some, Flags@1} ->
gleam@list:contains(Flags@1, is_components_v2);
none ->
false
end.
-file("src/kitazith/webhook/execute.gleam", 157).
-spec validate(execute_payload()) -> {ok, execute_payload()} |
{error, list(kitazith@validation:validation_error())}.
validate(Payload) ->
Attachment_filenames = case erlang:element(9, Payload) of
{some, Attachments} ->
kitazith@internal@validation@attachment:attachment_filenames(
Attachments
);
none ->
[]
end,
Components_require_v2 = case erlang:element(8, Payload) of
{some, Components} ->
kitazith@internal@validation@component:components_require_v2_flag(
Components
);
none ->
false
end,
Has_components_v2_flag = has_is_components_v2_flag(
erlang:element(10, Payload)
),
Errors = lists:append([case erlang:element(2, Payload) of
{some, Content} ->
kitazith@internal@validation@common:validate_string_max_length(
<<"content"/utf8>>,
Content,
2000
);
none ->
[]
end, case erlang:element(3, Payload) of
{some, Username} ->
kitazith@internal@validation@common:validate_string_length(
<<"username"/utf8>>,
Username,
1,
80
);
none ->
[]
end, case erlang:element(11, Payload) of
{some, Thread_name} ->
kitazith@internal@validation@common:validate_string_length(
<<"thread_name"/utf8>>,
Thread_name,
1,
100
);
none ->
[]
end, case erlang:element(6, Payload) of
{some, Embeds} ->
kitazith@internal@validation@embed:validate_embeds(
<<"embeds"/utf8>>,
Embeds,
{some, Attachment_filenames}
);
none ->
[]
end, case erlang:element(7, Payload) of
{some, Allowed_mentions} ->
kitazith@internal@validation@allowed_mentions:validate_allowed_mentions(
<<"allowed_mentions"/utf8>>,
Allowed_mentions
);
none ->
[]
end, case erlang:element(8, Payload) of
{some, Components@1} ->
kitazith@internal@validation@component:validate_components(
<<"components"/utf8>>,
Components@1,
{some, Attachment_filenames}
);
none ->
[]
end, case erlang:element(9, Payload) of
{some, Attachments@1} ->
kitazith@internal@validation@attachment:validate_attachments(
<<"attachments"/utf8>>,
Attachments@1
);
none ->
[]
end, case erlang:element(13, Payload) of
{some, Poll} ->
kitazith@internal@validation@poll:validate_poll(
<<"poll"/utf8>>,
Poll
);
none ->
[]
end, case Components_require_v2 andalso not Has_components_v2_flag of
true ->
[{validation_error,
<<"flags"/utf8>>,
{requires_flag, <<"IsComponentsV2"/utf8>>}}];
false ->
[]
end, case Has_components_v2_flag of
true ->
components_v2_conflict_errors(Payload);
false ->
[]
end]),
case Errors of
[] ->
{ok, Payload};
_ ->
{error, Errors}
end.
-file("src/kitazith/webhook/execute.gleam", 334).
-spec validate_query(
kitazith@webhook@execute_query:execute_query(),
execute_payload()
) -> list(kitazith@validation:validation_error()).
validate_query(Query, Payload) ->
case {erlang:element(3, Query), erlang:element(11, Payload)} of
{{some, _}, {some, _}} ->
[{validation_error,
<<"query.thread_id"/utf8>>,
{mutually_exclusive_with, <<"thread_name"/utf8>>}}];
{_, _} ->
[]
end.
-file("src/kitazith/webhook/execute.gleam", 266).
-spec validate_with_query(
execute_payload(),
kitazith@webhook@execute_query:execute_query()
) -> {ok, execute_payload()} |
{error, list(kitazith@validation:validation_error())}.
validate_with_query(Payload, Query) ->
kitazith@internal@validation@common:validate_with_query(
Payload,
Query,
fun validate/1,
fun validate_query/2
).
-file("src/kitazith/webhook/execute.gleam", 324).
-spec execute_payload_flag_to_message_flag(execute_payload_flag()) -> kitazith@flag:message_flag().
execute_payload_flag_to_message_flag(Execute_payload_flag) ->
case Execute_payload_flag of
suppress_embeds ->
suppress_embeds;
suppress_notifications ->
suppress_notifications;
is_components_v2 ->
is_components_v2
end.
-file("src/kitazith/webhook/execute.gleam", 278).
-spec to_json(execute_payload()) -> gleam@json:json().
to_json(Payload) ->
kitazith@internal@json_helper:object_omit_none(
[kitazith@internal@json_helper:optional(
<<"content"/utf8>>,
erlang:element(2, Payload),
fun gleam@json:string/1
),
kitazith@internal@json_helper:optional(
<<"username"/utf8>>,
erlang:element(3, Payload),
fun gleam@json:string/1
),
kitazith@internal@json_helper:optional(
<<"avatar_url"/utf8>>,
erlang:element(4, Payload),
fun gleam@json:string/1
),
kitazith@internal@json_helper:optional(
<<"tts"/utf8>>,
erlang:element(5, Payload),
fun gleam@json:bool/1
),
kitazith@internal@json_helper:optional(
<<"embeds"/utf8>>,
erlang:element(6, Payload),
fun(Embeds) ->
gleam@json:array(Embeds, fun kitazith@embed:to_json/1)
end
),
kitazith@internal@json_helper:optional(
<<"allowed_mentions"/utf8>>,
erlang:element(7, Payload),
fun kitazith@allowed_mentions:to_json/1
),
kitazith@internal@json_helper:optional(
<<"components"/utf8>>,
erlang:element(8, Payload),
fun(Components) ->
gleam@json:array(
Components,
fun kitazith@component:to_json/1
)
end
),
kitazith@internal@json_helper:optional(
<<"attachments"/utf8>>,
erlang:element(9, Payload),
fun(Attachments) ->
gleam@json:array(
Attachments,
fun kitazith@attachment:to_json/1
)
end
),
kitazith@internal@json_helper:optional(
<<"flags"/utf8>>,
erlang:element(10, Payload),
fun(Flags) -> _pipe = Flags,
_pipe@1 = gleam@list:map(
_pipe,
fun execute_payload_flag_to_message_flag/1
),
_pipe@2 = kitazith@flag:to_int(_pipe@1),
gleam@json:int(_pipe@2) end
),
kitazith@internal@json_helper:optional(
<<"thread_name"/utf8>>,
erlang:element(11, Payload),
fun gleam@json:string/1
),
kitazith@internal@json_helper:optional(
<<"applied_tags"/utf8>>,
erlang:element(12, Payload),
fun(Tags) ->
gleam@json:array(Tags, fun kitazith@snowflake:to_json/1)
end
),
kitazith@internal@json_helper:optional(
<<"poll"/utf8>>,
erlang:element(13, Payload),
fun kitazith@poll:to_json/1
)]
).
-file("src/kitazith/webhook/execute.gleam", 312).
-spec to_string(execute_payload()) -> binary().
to_string(Payload) ->
_pipe = Payload,
_pipe@1 = to_json(_pipe),
gleam@json:to_string(_pipe@1).
-file("src/kitazith/webhook/execute.gleam", 318).
-spec to_string_tree(execute_payload()) -> gleam@string_tree:string_tree().
to_string_tree(Payload) ->
_pipe = Payload,
_pipe@1 = to_json(_pipe),
gleam_json_ffi:json_to_iodata(_pipe@1).