Current section
Files
Jump to
Current section
Files
src/telega@internal@multipart.erl
-module(telega@internal@multipart).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/telega/internal/multipart.gleam").
-export([content_type_header/0, encode/1]).
-export_type([part/0]).
-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).
-type part() :: {field_part, binary(), binary()} |
{file_part, binary(), binary(), binary(), bitstring()}.
-file("src/telega/internal/multipart.gleam", 31).
?DOC(false).
-spec content_type_header() -> binary().
content_type_header() ->
<<"multipart/form-data; boundary="/utf8,
"----telegaFormBoundaryX3nK7pQ9wLmZ2vRb"/utf8>>.
-file("src/telega/internal/multipart.gleam", 71).
?DOC(false).
-spec str(binary()) -> bitstring().
str(Value) ->
gleam_stdlib:identity(Value).
-file("src/telega/internal/multipart.gleam", 76).
?DOC(false).
-spec escape(binary()) -> binary().
escape(Filename) ->
gleam@string:replace(Filename, <<"\""/utf8>>, <<"'"/utf8>>).
-file("src/telega/internal/multipart.gleam", 45).
?DOC(false).
-spec encode_part(part()) -> bitstring().
encode_part(Part) ->
case Part of
{field_part, Name, Value} ->
gleam_stdlib:bit_array_concat(
[str(
<<<<"--"/utf8,
"----telegaFormBoundaryX3nK7pQ9wLmZ2vRb"/utf8>>/binary,
"\r\n"/utf8>>
),
str(
<<<<"Content-Disposition: form-data; name=\""/utf8,
Name/binary>>/binary,
"\"\r\n\r\n"/utf8>>
),
str(Value),
str(<<"\r\n"/utf8>>)]
);
{file_part, Name@1, Filename, Content_type, Content} ->
gleam_stdlib:bit_array_concat(
[str(
<<<<"--"/utf8,
"----telegaFormBoundaryX3nK7pQ9wLmZ2vRb"/utf8>>/binary,
"\r\n"/utf8>>
),
str(
<<<<<<<<"Content-Disposition: form-data; name=\""/utf8,
Name@1/binary>>/binary,
"\"; filename=\""/utf8>>/binary,
(escape(Filename))/binary>>/binary,
"\"\r\n"/utf8>>
),
str(
<<<<"Content-Type: "/utf8, Content_type/binary>>/binary,
"\r\n\r\n"/utf8>>
),
Content,
str(<<"\r\n"/utf8>>)]
)
end.
-file("src/telega/internal/multipart.gleam", 36).
?DOC(false).
-spec encode(list(part())) -> bitstring().
encode(Parts) ->
Body = begin
_pipe = Parts,
_pipe@1 = gleam@list:map(_pipe, fun encode_part/1),
gleam_stdlib:bit_array_concat(_pipe@1)
end,
gleam_stdlib:bit_array_concat(
[Body,
str(
<<<<"--"/utf8, "----telegaFormBoundaryX3nK7pQ9wLmZ2vRb"/utf8>>/binary,
"--\r\n"/utf8>>
)]
).