X402.Hooks behaviour (X402 v0.3.3)

Copy Markdown View Source

Behaviour for lifecycle hooks around facilitator verify and settle operations.

Hooks run around each operation in this order:

  1. before_verify/2 or before_settle/2
  2. after_verify/2 or after_settle/2 on success
  3. on_verify_failure/2 or on_settle_failure/2 on failure

before_* callbacks can continue with {:cont, context} or abort with {:halt, reason}.

on_*_failure callbacks can continue failure handling with {:cont, context} or recover the operation with {:recover, result}.

Summary

Types

Return type for after_* callbacks.

Return type for before_* callbacks.

Hook callback identifier.

Hook execution error tuple returned by X402.Facilitator.

Lifecycle callback metadata passed to hooks.

Return type for on_*_failure callbacks.

Callbacks

Runs after a successful settle request.

Runs after a successful verify request.

Runs before a settle request is sent.

Runs before a verify request is sent.

Runs after a failed settle request.

Runs after a failed verify request.

Functions

Validates that a value is a module implementing X402.Hooks.

Types

after_result()

@type after_result() :: {:cont, X402.Hooks.Context.t()}

Return type for after_* callbacks.

before_result()

@type before_result() :: {:cont, X402.Hooks.Context.t()} | {:halt, term()}

Return type for before_* callbacks.

callback_name()

@type callback_name() ::
  :before_verify
  | :after_verify
  | :on_verify_failure
  | :before_settle
  | :after_settle
  | :on_settle_failure

Hook callback identifier.

hook_error()

@type hook_error() ::
  {:hook_halted, callback_name(), term()}
  | {:hook_callback_failed, callback_name(), term()}
  | {:hook_invalid_return, callback_name(), term()}

Hook execution error tuple returned by X402.Facilitator.

metadata()

@type metadata() :: %{
  operation: :verify | :settle,
  endpoint: String.t(),
  hook_module: module()
}

Lifecycle callback metadata passed to hooks.

on_failure_result()

@type on_failure_result() :: {:cont, X402.Hooks.Context.t()} | {:recover, map()}

Return type for on_*_failure callbacks.

Callbacks

after_settle(t, metadata)

@callback after_settle(X402.Hooks.Context.t(), metadata()) :: after_result()

Runs after a successful settle request.

after_verify(t, metadata)

@callback after_verify(X402.Hooks.Context.t(), metadata()) :: after_result()

Runs after a successful verify request.

before_settle(t, metadata)

@callback before_settle(X402.Hooks.Context.t(), metadata()) :: before_result()

Runs before a settle request is sent.

before_verify(t, metadata)

@callback before_verify(X402.Hooks.Context.t(), metadata()) :: before_result()

Runs before a verify request is sent.

on_settle_failure(t, metadata)

@callback on_settle_failure(X402.Hooks.Context.t(), metadata()) :: on_failure_result()

Runs after a failed settle request.

on_verify_failure(t, metadata)

@callback on_verify_failure(X402.Hooks.Context.t(), metadata()) :: on_failure_result()

Runs after a failed verify request.

Functions

validate_module(module)

(since 0.1.0)
@spec validate_module(term()) :: :ok | {:error, String.t()}

Validates that a value is a module implementing X402.Hooks.

This function is designed for NimbleOptions custom validation.