Current section

Files

Jump to
gleam_stdlib gen src gleam@base.erl
Raw

gen/src/gleam@base.erl

-module(gleam@base).
-compile(no_auto_import).
-export([encode64/2, decode64/1, url_encode64/2, url_decode64/1]).
encode64(Input, Padding) ->
Encoded = base64:encode(Input),
case Padding of
true ->
Encoded;
false ->
gleam@string:replace(Encoded, <<"="/utf8>>, <<""/utf8>>)
end.
decode64(Encoded) ->
Padded = case gleam@bit_string:byte_size(
gleam@bit_string:from_string(Encoded)
)
rem 4 of
0 ->
Encoded;
N ->
gleam@string:append(
Encoded,
gleam@string:repeat(<<"="/utf8>>, 4 - N)
)
end,
gleam_stdlib:base_decoded4(Padded).
url_encode64(Input, Padding) ->
gleam@string:replace(
gleam@string:replace(
encode64(Input, Padding),
<<"+"/utf8>>,
<<"-"/utf8>>
),
<<"/"/utf8>>,
<<"_"/utf8>>
).
url_decode64(Encoded) ->
decode64(
gleam@string:replace(
gleam@string:replace(Encoded, <<"-"/utf8>>, <<"+"/utf8>>),
<<"_"/utf8>>,
<<"/"/utf8>>
)
).