lib/ueberauth/strategy/amco/api/access_token.ex

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

  def authorize(token) do
    OAuth.authorize_access_token(token)
    |> process_response()
  end

  defp process_response({:ok, %Response{status_code: 200} = response}) do
    case response.body do
      %{"active" => true} -> {:ok, response.body}
      %{"active" => false} -> {:error, :access_token_expired}
    end
  end

  defp process_response(_), do: {:error, :access_token_invalid}
end