Earlier versions of Goth relied on global application environment configuration which is deprecated in favour of a more direct and explicit approach in Goth v1.3+.
Below is a step-by-step upgrade path from Goth 1.x to 1.3:
Change your mix.exs
:
def deps do
[
{:goth, "~> 1.3-rc"}
]
end
You might have code similar to this:
# config/config.exs
config :goth,
json: {:system, "GCP_CREDENTIALS"}
# lib/myapp.ex
defmodule MyApp do
def gcloud_authorization() do
{:ok, token} = Goth.Token.for_scope("https://www.googleapis.com/auth/cloud-platform.read-only")
"#{token.type} #{token.token}"
end
end
Replace it with:
defmodule MyApp.Application do
@moduledoc false
use Application
def start(_type, _args) do
credentials = "GCP_CREDENTIALS" |> System.fetch_env!() |> Jason.decode!()
scopes = ["https://www.googleapis.com/auth/cloud-platform.read-only"]
source = {:service_account, credentials, scopes: scopes}
children = [
{Goth, name: MyApp.Goth, source: source}
]
Supervisor.start_link(children, strategy: :one_for_one)
end
end
# lib/myapp.ex
defmodule MyApp do
def gcloud_authorization() do
{:ok, token} = Goth.fetch(MyApp.Goth)
"#{token.type} #{token.token}"
end
end
For more information on earlier versions of Goth, see v1.2.0 documentation on hexdocs.pm.