Elixir Base64 encode and decode with errors
Elixir
defmodule Base64Codec do
def encode(data) when is_binary(data), do: Base.encode64(data)
def decode(encoded) when is_binary(encoded) do
case Base.decode64(encoded, padding: true) do
{:ok, data} -> {:ok, data}
:error ->
case Base.decode64(encoded, padding: false) do
{:ok, data} -> {:ok, data}
:error -> {:error, :invalid_base64}
end
end
end
def decode!(encoded) do
case decode(encoded) do
{:ok, data} -> data
{:error, _reason} -> raise ArgumentError, "invalid base64 input"
end
end
end