Skip to main content

lib/kagi/session_token.ex

defmodule Kagi.SessionToken do
  @moduledoc false

  alias Kagi.Error

  @spec resolve() :: {:ok, String.t()} | {:error, Error.t()}
  def resolve do
    case normalize_token(Application.get_env(:kagi_ex, :session_token)) do
      nil ->
        {:error,
         Error.new(
           :missing_session_token,
           "missing session token; configure :kagi_ex, :session_token"
         )}

      token ->
        {:ok, token}
    end
  end

  @spec normalize_token(term()) :: String.t() | nil
  defp normalize_token(token) when is_binary(token) do
    token = String.trim(token)
    if token == "", do: nil, else: token
  end

  defp normalize_token(_token), do: nil
end