-module(kitazith@internal@validation@embed). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/kitazith/internal/validation/embed.gleam"). -export([validate_embeds/3]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC(false). -file("src/kitazith/internal/validation/embed.gleam", 47). ?DOC(false). -spec validate_embed( binary(), kitazith@embed:embed(), gleam@option:option(list(binary())) ) -> list(kitazith@validation:validation_error()). validate_embed(Path, Embed, Attachment_filenames) -> lists:append([case erlang:element(2, Embed) of {some, Title} -> kitazith@internal@validation@common:validate_string_max_length( kitazith@internal@validation@common:join_path( Path, <<"title"/utf8>> ), Title, 256 ); none -> [] end, case erlang:element(3, Embed) of {some, Description} -> kitazith@internal@validation@common:validate_string_max_length( kitazith@internal@validation@common:join_path( Path, <<"description"/utf8>> ), Description, 4096 ); none -> [] end, case erlang:element(7, Embed) of {some, Footer} -> lists:append( [kitazith@internal@validation@common:validate_string_length( kitazith@internal@validation@common:join_path( Path, <<"footer.text"/utf8>> ), erlang:element(2, Footer), 1, 2048 ), case erlang:element(3, Footer) of {some, Icon_url} -> kitazith@internal@validation@attachment:validate_attachment_reference( kitazith@internal@validation@common:join_path( Path, <<"footer.icon_url"/utf8>> ), Icon_url, Attachment_filenames ); none -> [] end] ); none -> [] end, case erlang:element(8, Embed) of {some, Image} -> kitazith@internal@validation@attachment:validate_attachment_reference( kitazith@internal@validation@common:join_path( Path, <<"image.url"/utf8>> ), erlang:element(2, Image), Attachment_filenames ); none -> [] end, case erlang:element(9, Embed) of {some, Thumbnail} -> kitazith@internal@validation@attachment:validate_attachment_reference( kitazith@internal@validation@common:join_path( Path, <<"thumbnail.url"/utf8>> ), erlang:element(2, Thumbnail), Attachment_filenames ); none -> [] end, case erlang:element(10, Embed) of {some, Author} -> lists:append( [kitazith@internal@validation@common:validate_string_length( kitazith@internal@validation@common:join_path( Path, <<"author.name"/utf8>> ), erlang:element(2, Author), 1, 256 ), case erlang:element(4, Author) of {some, Icon_url@1} -> kitazith@internal@validation@attachment:validate_attachment_reference( kitazith@internal@validation@common:join_path( Path, <<"author.icon_url"/utf8>> ), Icon_url@1, Attachment_filenames ); none -> [] end] ); none -> [] end, case erlang:element(11, Embed) of {some, Fields} -> lists:append( [kitazith@internal@validation@common:validate_list_max_length( kitazith@internal@validation@common:join_path( Path, <<"fields"/utf8>> ), Fields, 25, <<"fields"/utf8>> ), begin _pipe = Fields, _pipe@1 = gleam@list:index_map( _pipe, fun(Field, Index) -> lists:append( [kitazith@internal@validation@common:validate_string_length( kitazith@internal@validation@common:join_path( kitazith@internal@validation@common:indexed_path( kitazith@internal@validation@common:join_path( Path, <<"fields"/utf8>> ), Index ), <<"name"/utf8>> ), erlang:element(2, Field), 1, 256 ), kitazith@internal@validation@common:validate_string_length( kitazith@internal@validation@common:join_path( kitazith@internal@validation@common:indexed_path( kitazith@internal@validation@common:join_path( Path, <<"fields"/utf8>> ), Index ), <<"value"/utf8>> ), erlang:element(3, Field), 1, 1024 )] ) end ), lists:append(_pipe@1) end] ); none -> [] end]). -file("src/kitazith/internal/validation/embed.gleam", 208). ?DOC(false). -spec optional_field_character_count( gleam@option:option(list(kitazith@embed:embed_field())) ) -> integer(). optional_field_character_count(Value) -> case Value of {some, Fields} -> _pipe = Fields, _pipe@1 = gleam@list:map( _pipe, fun(Field) -> string:length(erlang:element(2, Field)) + string:length( erlang:element(3, Field) ) end ), gleam@list:fold(_pipe@1, 0, fun(Total, Count) -> Total + Count end); none -> 0 end. -file("src/kitazith/internal/validation/embed.gleam", 201). ?DOC(false). -spec optional_author_name_length( gleam@option:option(kitazith@embed:embed_author()) ) -> integer(). optional_author_name_length(Value) -> case Value of {some, Author} -> string:length(erlang:element(2, Author)); none -> 0 end. -file("src/kitazith/internal/validation/embed.gleam", 194). ?DOC(false). -spec optional_footer_text_length( gleam@option:option(kitazith@embed:embed_footer()) ) -> integer(). optional_footer_text_length(Value) -> case Value of {some, Footer} -> string:length(erlang:element(2, Footer)); none -> 0 end. -file("src/kitazith/internal/validation/embed.gleam", 187). ?DOC(false). -spec optional_string_length(gleam@option:option(binary())) -> integer(). optional_string_length(Value) -> case Value of {some, Value@1} -> string:length(Value@1); none -> 0 end. -file("src/kitazith/internal/validation/embed.gleam", 179). ?DOC(false). -spec embed_character_count(kitazith@embed:embed()) -> integer(). embed_character_count(Embed) -> (((optional_string_length(erlang:element(2, Embed)) + optional_string_length( erlang:element(3, Embed) )) + optional_footer_text_length(erlang:element(7, Embed))) + optional_author_name_length(erlang:element(10, Embed))) + optional_field_character_count(erlang:element(11, Embed)). -file("src/kitazith/internal/validation/embed.gleam", 10). ?DOC(false). -spec validate_embeds( binary(), list(kitazith@embed:embed()), gleam@option:option(list(binary())) ) -> list(kitazith@validation:validation_error()). validate_embeds(Path, Embeds, Attachment_filenames) -> Total_character_count = begin _pipe = Embeds, _pipe@1 = gleam@list:map(_pipe, fun embed_character_count/1), gleam@list:fold(_pipe@1, 0, fun(Total, Count) -> Total + Count end) end, lists:append( [kitazith@internal@validation@common:validate_list_max_length( Path, Embeds, 10, <<"embeds"/utf8>> ), case Total_character_count =< 6000 of true -> []; false -> [kitazith@internal@validation@common:error( Path, {aggregate_character_limit_exceeded, <<"embed_total_characters"/utf8>>, 6000, Total_character_count} )] end, begin _pipe@2 = Embeds, _pipe@3 = gleam@list:index_map( _pipe@2, fun(Embed, Index) -> validate_embed( kitazith@internal@validation@common:indexed_path( Path, Index ), Embed, Attachment_filenames ) end ), lists:append(_pipe@3) end] ).