lib/ueberauth/strategy/amco/api.ex

defmodule Ueberauth.Strategy.Amco.API do
  alias OAuth2.Response
  alias Ueberauth.Strategy.Amco.OAuth

  @doc """
  Gets authorization's claims based on an access token. The claims will
  depend on the scope that was used in the authorization process.

  ## Parameters

    - access_token: String [Access token generated by the IdP].

  ## Examples

      iex> userinfo("bGWcAKadGrBwM...")
      {:ok, %{email: "test@example", phone_number: "+523344556677"}}

      iex> userinfo("InvalidAccessToken")
      {:error, :invalid}

  """
  def userinfo(access_token) do
    case OAuth.userinfo(access_token) do
      {:ok, %Response{status_code: 200, body: body}} -> {:ok, body}
      _ -> {:error, :access_token_invalid}
    end
  end
end