Lockspire.Storage.CibaAuthorizationStore behaviour (lockspire v1.0.0)

Copy Markdown

Behaviour for storing and managing CIBA Authorizations.

Summary

Types

ciba_poll_outcome()

@type ciba_poll_outcome() :: %{
  :result => ciba_poll_result(),
  optional(:ciba_authorization) => Lockspire.Domain.CibaAuthorization.t(),
  optional(:effective_poll_interval_seconds) => pos_integer(),
  optional(:next_poll_allowed_at) => DateTime.t()
}

ciba_poll_result()

@type ciba_poll_result() ::
  :approved_ready
  | :client_mismatch
  | :consumed
  | :denied
  | :expired
  | :invalid_grant
  | :pending
  | :slow_down

Callbacks

fetch_ciba_authorization_by_auth_req_id_hash(t)

@callback fetch_ciba_authorization_by_auth_req_id_hash(String.t()) ::
  {:ok, Lockspire.Domain.CibaAuthorization.t() | nil} | {:error, term()}

put_ciba_authorization(t)

@callback put_ciba_authorization(Lockspire.Domain.CibaAuthorization.t()) ::
  {:ok, Lockspire.Domain.CibaAuthorization.t()} | {:error, term()}

record_ciba_poll(t, t, t)

@callback record_ciba_poll(String.t(), String.t(), DateTime.t()) ::
  {:ok, ciba_poll_outcome()} | {:error, term()}

transition_ciba_authorization(t, list, map)

@callback transition_ciba_authorization(
  String.t(),
  [Lockspire.Domain.CibaAuthorization.status()],
  map()
) :: {:ok, Lockspire.Domain.CibaAuthorization.t()} | {:error, term()}