Lockspire.Storage.CibaAuthorizationStore behaviour
(lockspire v1.0.0)
Copy Markdown
Behaviour for storing and managing CIBA Authorizations.
Summary
Types
@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() }
@type ciba_poll_result() ::
:approved_ready
| :client_mismatch
| :consumed
| :denied
| :expired
| :invalid_grant
| :pending
| :slow_down
Callbacks
@callback fetch_ciba_authorization_by_auth_req_id_hash(String.t()) :: {:ok, Lockspire.Domain.CibaAuthorization.t() | nil} | {:error, term()}
@callback put_ciba_authorization(Lockspire.Domain.CibaAuthorization.t()) :: {:ok, Lockspire.Domain.CibaAuthorization.t()} | {:error, term()}
@callback record_ciba_poll(String.t(), String.t(), DateTime.t()) :: {:ok, ciba_poll_outcome()} | {:error, term()}
@callback transition_ciba_authorization( String.t(), [Lockspire.Domain.CibaAuthorization.status()], map() ) :: {:ok, Lockspire.Domain.CibaAuthorization.t()} | {:error, term()}