Current section

Files

Jump to
gamora lib gamora api.ex
Raw

lib/gamora/api.ex

defmodule Gamora.API do
@moduledoc """
This module wraps the functions to access IDP's endpoints.
"""
alias OAuth2.Response
alias Gamora.OAuth
@doc """
Gets user's data based on an access token using userinfo
endpoint in the IDP.
## 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, :access_token_invalid}
"""
@spec userinfo(access_token :: String.t()) :: {:ok, Response.t()} | {:error, term()}
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
@doc """
Gets token's data based on an access token using introspection
endpoint in the IDP.
## Parameters
- access_token: String [Access token generated by the IDP].
## Examples
iex> introspect("bGWcAKadGrBwM...")
{:ok, %{active: true, ...}
iex> introspect("InvalidAccessToken")
{:error, :access_token_invalid}
"""
@spec introspect(access_token :: String.t()) :: {:ok, Response.t()} | {:error, term()}
def introspect(access_token) do
case OAuth.introspect(access_token) do
{:ok, %Response{status_code: 200, body: body}} -> {:ok, body}
_ -> {:error, :access_token_invalid}
end
end
end