Current section

Files

Jump to
boruta lib boruta oauth responses token.ex
Raw

lib/boruta/oauth/responses/token.ex

defmodule Boruta.Oauth.TokenResponse do
@moduledoc """
Response returned in case of access token request success. Provides utilities and mandatory data needed to respond to the token part of client credentials, resource owner password, code and hybrid flows.
"""
@enforce_keys [:access_token, :expires_in]
defstruct token_type: "bearer",
access_token: nil,
expires_in: nil,
refresh_token: nil,
id_token: nil
@type t :: %__MODULE__{
token_type: String.t(),
access_token: String.t() | nil,
id_token: String.t() | nil,
expires_in: integer() | nil,
refresh_token: String.t() | nil
}
alias Boruta.Oauth.Token
alias Boruta.Oauth.TokenResponse
@spec from_token(%{
(type :: :token | :id_token) => token :: Boruta.Oauth.Token.t() | String.t()
}) :: t()
def from_token(
%{
token: %Token{
value: value,
expires_at: expires_at,
refresh_token: refresh_token
}
} = params
) do
{:ok, expires_at} = DateTime.from_unix(expires_at)
expires_in = DateTime.diff(expires_at, DateTime.utc_now())
%TokenResponse{
access_token: value,
token_type: "bearer",
expires_in: expires_in,
refresh_token: refresh_token,
id_token: params[:id_token] && params[:id_token].value
}
end
end