-module(kitazith@webhook@edit). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/kitazith/webhook/edit.gleam"). -export([new/0, with_content/2, clear_content/1, with_embeds/2, clear_embeds/1, with_attachments/2, clear_attachments/1, with_components/2, clear_components/1, with_allowed_mentions/2, clear_allowed_mentions/1, with_flags/2, clear_flags/1, to_json/1, to_string/1, to_string_tree/1, validate/1, validate_with_query/2]). -export_type([edit_field/1, edit_payload/0, edit_payload_flag/0]). -type edit_field(FCV) :: omit | {set, FCV} | clear. -type edit_payload() :: {edit_payload, edit_field(binary()), edit_field(list(kitazith@embed:embed())), edit_field(list(kitazith@attachment:attachment())), edit_field(list(kitazith@component:component())), edit_field(kitazith@allowed_mentions:allowed_mentions()), edit_field(list(edit_payload_flag()))}. -type edit_payload_flag() :: suppress_embeds | is_components_v2. -file("src/kitazith/webhook/edit.gleam", 66). -spec new() -> edit_payload(). new() -> {edit_payload, omit, omit, omit, omit, omit, omit}. -file("src/kitazith/webhook/edit.gleam", 77). -spec with_content(edit_payload(), binary()) -> edit_payload(). with_content(Payload, Content) -> {edit_payload, {set, Content}, erlang:element(3, Payload), erlang:element(4, Payload), erlang:element(5, Payload), erlang:element(6, Payload), erlang:element(7, Payload)}. -file("src/kitazith/webhook/edit.gleam", 81). -spec clear_content(edit_payload()) -> edit_payload(). clear_content(Payload) -> {edit_payload, clear, erlang:element(3, Payload), erlang:element(4, Payload), erlang:element(5, Payload), erlang:element(6, Payload), erlang:element(7, Payload)}. -file("src/kitazith/webhook/edit.gleam", 85). -spec with_embeds(edit_payload(), list(kitazith@embed:embed())) -> edit_payload(). with_embeds(Payload, Embeds) -> {edit_payload, erlang:element(2, Payload), {set, Embeds}, erlang:element(4, Payload), erlang:element(5, Payload), erlang:element(6, Payload), erlang:element(7, Payload)}. -file("src/kitazith/webhook/edit.gleam", 92). -spec clear_embeds(edit_payload()) -> edit_payload(). clear_embeds(Payload) -> {edit_payload, erlang:element(2, Payload), clear, erlang:element(4, Payload), erlang:element(5, Payload), erlang:element(6, Payload), erlang:element(7, Payload)}. -file("src/kitazith/webhook/edit.gleam", 96). -spec with_attachments(edit_payload(), list(kitazith@attachment:attachment())) -> edit_payload(). with_attachments(Payload, Attachments) -> {edit_payload, erlang:element(2, Payload), erlang:element(3, Payload), {set, Attachments}, erlang:element(5, Payload), erlang:element(6, Payload), erlang:element(7, Payload)}. -file("src/kitazith/webhook/edit.gleam", 103). -spec clear_attachments(edit_payload()) -> edit_payload(). clear_attachments(Payload) -> {edit_payload, erlang:element(2, Payload), erlang:element(3, Payload), clear, erlang:element(5, Payload), erlang:element(6, Payload), erlang:element(7, Payload)}. -file("src/kitazith/webhook/edit.gleam", 107). -spec with_components(edit_payload(), list(kitazith@component:component())) -> edit_payload(). with_components(Payload, Components) -> {edit_payload, erlang:element(2, Payload), erlang:element(3, Payload), erlang:element(4, Payload), {set, Components}, erlang:element(6, Payload), erlang:element(7, Payload)}. -file("src/kitazith/webhook/edit.gleam", 114). -spec clear_components(edit_payload()) -> edit_payload(). clear_components(Payload) -> {edit_payload, erlang:element(2, Payload), erlang:element(3, Payload), erlang:element(4, Payload), clear, erlang:element(6, Payload), erlang:element(7, Payload)}. -file("src/kitazith/webhook/edit.gleam", 118). -spec with_allowed_mentions( edit_payload(), kitazith@allowed_mentions:allowed_mentions() ) -> edit_payload(). with_allowed_mentions(Payload, Mentions) -> {edit_payload, erlang:element(2, Payload), erlang:element(3, Payload), erlang:element(4, Payload), erlang:element(5, Payload), {set, Mentions}, erlang:element(7, Payload)}. -file("src/kitazith/webhook/edit.gleam", 125). -spec clear_allowed_mentions(edit_payload()) -> edit_payload(). clear_allowed_mentions(Payload) -> {edit_payload, erlang:element(2, Payload), erlang:element(3, Payload), erlang:element(4, Payload), erlang:element(5, Payload), clear, erlang:element(7, Payload)}. -file("src/kitazith/webhook/edit.gleam", 129). -spec with_flags(edit_payload(), list(edit_payload_flag())) -> edit_payload(). with_flags(Payload, Flags) -> {edit_payload, erlang:element(2, Payload), erlang:element(3, Payload), erlang:element(4, Payload), erlang:element(5, Payload), erlang:element(6, Payload), {set, Flags}}. -file("src/kitazith/webhook/edit.gleam", 136). -spec clear_flags(edit_payload()) -> edit_payload(). clear_flags(Payload) -> {edit_payload, erlang:element(2, Payload), erlang:element(3, Payload), erlang:element(4, Payload), erlang:element(5, Payload), erlang:element(6, Payload), clear}. -file("src/kitazith/webhook/edit.gleam", 287). -spec field(binary(), edit_field(FDG), fun((FDG) -> gleam@json:json())) -> gleam@option:option({binary(), gleam@json:json()}). field(Key, Value, Encoder) -> case Value of omit -> none; {set, Value@1} -> {some, {Key, Encoder(Value@1)}}; clear -> {some, {Key, gleam@json:null()}} end. -file("src/kitazith/webhook/edit.gleam", 299). -spec edit_payload_flag_to_message_flag(edit_payload_flag()) -> kitazith@flag:message_flag(). edit_payload_flag_to_message_flag(Edit_payload_flag) -> case Edit_payload_flag of suppress_embeds -> suppress_embeds; is_components_v2 -> is_components_v2 end. -file("src/kitazith/webhook/edit.gleam", 249). -spec to_json(edit_payload()) -> gleam@json:json(). to_json(Payload) -> kitazith@internal@json_helper:object_omit_none( [field( <<"content"/utf8>>, erlang:element(2, Payload), fun gleam@json:string/1 ), field( <<"embeds"/utf8>>, erlang:element(3, Payload), fun(Embeds) -> gleam@json:array(Embeds, fun kitazith@embed:to_json/1) end ), field( <<"attachments"/utf8>>, erlang:element(4, Payload), fun(Attachments) -> gleam@json:array( Attachments, fun kitazith@attachment:to_json/1 ) end ), field( <<"components"/utf8>>, erlang:element(5, Payload), fun(Components) -> gleam@json:array( Components, fun kitazith@component:to_json/1 ) end ), field( <<"allowed_mentions"/utf8>>, erlang:element(6, Payload), fun kitazith@allowed_mentions:to_json/1 ), field( <<"flags"/utf8>>, erlang:element(7, Payload), fun(Flags) -> _pipe = Flags, _pipe@1 = gleam@list:map( _pipe, fun edit_payload_flag_to_message_flag/1 ), _pipe@2 = kitazith@flag:to_int(_pipe@1), gleam@json:int(_pipe@2) end )] ). -file("src/kitazith/webhook/edit.gleam", 275). -spec to_string(edit_payload()) -> binary(). to_string(Payload) -> _pipe = Payload, _pipe@1 = to_json(_pipe), gleam@json:to_string(_pipe@1). -file("src/kitazith/webhook/edit.gleam", 281). -spec to_string_tree(edit_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). -file("src/kitazith/webhook/edit.gleam", 308). -spec validate_query(kitazith@webhook@edit_query:edit_query(), edit_payload()) -> list(kitazith@validation:validation_error()). validate_query(_, _) -> []. -file("src/kitazith/webhook/edit.gleam", 320). -spec contains_edit_payload_flag(list(edit_payload_flag()), edit_payload_flag()) -> boolean(). contains_edit_payload_flag(Flags, Target) -> case Flags of [] -> false; [Flag | Rest] -> (Flag =:= Target) orelse contains_edit_payload_flag(Rest, Target) end. -file("src/kitazith/webhook/edit.gleam", 330). -spec components_v2_conflict_errors(edit_payload()) -> list(kitazith@validation:validation_error()). components_v2_conflict_errors(Payload) -> lists:append([case erlang:element(2, Payload) of {set, _} -> [{validation_error, <<"content"/utf8>>, {mutually_exclusive_with, <<"flags[IsComponentsV2]"/utf8>>}}]; _ -> [] end, case erlang:element(3, Payload) of {set, _} -> [{validation_error, <<"embeds"/utf8>>, {mutually_exclusive_with, <<"flags[IsComponentsV2]"/utf8>>}}]; _ -> [] end]). -file("src/kitazith/webhook/edit.gleam", 140). -spec validate(edit_payload()) -> {ok, edit_payload()} | {error, list(kitazith@validation:validation_error())}. validate(Payload) -> Attachment_filenames = case erlang:element(4, Payload) of {set, Attachments} -> {some, kitazith@internal@validation@attachment:attachment_filenames( Attachments )}; clear -> {some, []}; omit -> none end, Components_require_v2 = case erlang:element(5, Payload) of {set, Components} -> kitazith@internal@validation@component:components_require_v2_flag( Components ); _ -> false end, Explicitly_has_components_v2_flag = case erlang:element(7, Payload) of {set, Flags} -> contains_edit_payload_flag(Flags, is_components_v2); _ -> false end, Errors = lists:append([case erlang:element(2, Payload) of {set, Content} -> kitazith@internal@validation@common:validate_string_max_length( <<"content"/utf8>>, Content, 2000 ); _ -> [] end, case erlang:element(3, Payload) of {set, Embeds} -> kitazith@internal@validation@embed:validate_embeds( <<"embeds"/utf8>>, Embeds, Attachment_filenames ); _ -> [] end, case erlang:element(4, Payload) of {set, Attachments@1} -> kitazith@internal@validation@attachment:validate_attachments( <<"attachments"/utf8>>, Attachments@1 ); _ -> [] end, case erlang:element(5, Payload) of {set, Components@1} -> kitazith@internal@validation@component:validate_components( <<"components"/utf8>>, Components@1, Attachment_filenames ); _ -> [] end, case erlang:element(6, Payload) of {set, Allowed_mentions} -> kitazith@internal@validation@allowed_mentions:validate_allowed_mentions( <<"allowed_mentions"/utf8>>, Allowed_mentions ); _ -> [] end, case erlang:element(7, Payload) of {set, _} -> []; clear -> []; omit -> [] end, case {Components_require_v2, erlang:element(7, Payload)} of {true, {set, _}} -> case Explicitly_has_components_v2_flag of true -> []; false -> [{validation_error, <<"flags"/utf8>>, {requires_flag, <<"IsComponentsV2"/utf8>>}}] end; {_, _} -> [] end, case Explicitly_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/edit.gleam", 237). -spec validate_with_query( edit_payload(), kitazith@webhook@edit_query:edit_query() ) -> {ok, edit_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 ).