lib/firebase_auth/client.ex

defmodule FirebaseAuth.Client do
  require Logger

  @cert_url "https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com"

  defp http_client do
    Application.get_env(:firebase_auth, :http_client, HTTPoison)
  end

  def get() do
    case http_client().get(@cert_url) do
      {:ok, %{status_code: 200, body: body}} ->
        {:ok, body |> Jason.decode!()}

      {:ok, %{status_code: status_code}} ->
        Logger.error("Error fetching public key with status code: #{status_code}")
        {:error, "Status code: #{status_code}"}

      {:error, _} = error ->
        Logger.error("Error fetching public keys. Error: " <> inspect(error))
        error
    end
  end
end