lib/maru/params/types/base64.ex

defmodule Maru.Params.Types.Base64 do
  @moduledoc """
  Buildin Type: Base64

  ## Parser Arguments
      * `:options` - options for `Base.decode64/2`

  ## Examples
      requires :data, Base64, options: [padding: false]
  """

  use Maru.Params.Type

  def parser_arguments, do: [:options]

  def parse(input, args) do
    options = Map.get(args, :options, [])

    case Base.decode64(input, options) do
      {:ok, data} -> {:ok, data}
      :error -> {:error, :parse, "error to parse base64"}
    end
  end
end