lib/mix/update_token_registry.ex

defmodule Mix.Tasks.DigitalToken.Registry.Update do
  @moduledoc """
  Updates the digital token registry data.
  """

  use Mix.Task
  require Logger

  @shortdoc "Update digital token registry data"

  @url "https://download.dtif.org/data.json"
  @priv_dir Application.app_dir(:digital_token, "priv")
  @output_file_name Path.join(@priv_dir, "digital_token_registry.json")

  @doc false
  def run(_) do
    require Logger

    case Cldr.Http.get(@url) do
      {:ok, body} ->
        File.write!(@output_file_name, body)
        Logger.info "Updated digital token registry at #{@output_file_name}"

      {:error, reason} ->
        Logger.warning "Failed to update digital token registry. #{inspect reason}"
    end
  end
end