pub struct ResourceServer { /* private fields */ }server only.Expand description
Server-side payment orchestrator.
Implementations§
Source§impl ResourceServer
impl ResourceServer
Sourcepub async fn notify_verified_payment_canceled(
&self,
payload: &PaymentPayload<PaymentRequirements, Value>,
requirements: &PaymentRequirements,
reason: CancelReason,
error: Option<&str>,
response_status: Option<u16>,
)
pub async fn notify_verified_payment_canceled( &self, payload: &PaymentPayload<PaymentRequirements, Value>, requirements: &PaymentRequirements, reason: CancelReason, error: Option<&str>, response_status: Option<u16>, )
Fires on_verified_payment_canceled for every registered hook.
Sourcepub fn cancellation_guard(
&self,
payload: PaymentPayload<PaymentRequirements, Value>,
requirements: PaymentRequirements,
) -> CancellationGuard
pub fn cancellation_guard( &self, payload: PaymentPayload<PaymentRequirements, Value>, requirements: PaymentRequirements, ) -> CancellationGuard
Builds a one-shot cancellation dispatcher (first call wins).
Source§impl ResourceServer
impl ResourceServer
Sourcepub fn find_matching_requirements<'a>(
&self,
available: &'a [PaymentRequirements],
payload: &PaymentPayload<PaymentRequirements, Value>,
) -> Option<&'a PaymentRequirements>
pub fn find_matching_requirements<'a>( &self, available: &'a [PaymentRequirements], payload: &PaymentPayload<PaymentRequirements, Value>, ) -> Option<&'a PaymentRequirements>
First available accept that matches payload.accepted.
Scheme-declared crate::SchemeNetworkServer::dynamic_extra_fields are
omitted from the extra-subset comparison.
Source§impl ResourceServer
impl ResourceServer
Sourcepub async fn create_payment_required_response(
&self,
accepts: Vec<PaymentRequirements>,
ctx: PaymentRequiredBuildContext,
) -> Result<PaymentRequired, FacilitatorError>
pub async fn create_payment_required_response( &self, accepts: Vec<PaymentRequirements>, ctx: PaymentRequiredBuildContext, ) -> Result<PaymentRequired, FacilitatorError>
One 402 body used for both unpaid challenges and paid matching.
After scheme enrich and extension advertise, each accept is resolved
through the registered scheme table and written with
apply_payment_flow_wire_extra. Unregistered schemes fail closed.
§Errors
FacilitatorError::Internal when hook policy, unregistered scheme,
or payment-flow resolution / wire extra application fails.
Source§impl ResourceServer
impl ResourceServer
Sourcepub fn new<F>(facilitator: Arc<F>) -> ResourceServerwhere
F: Facilitator + 'static,
pub fn new<F>(facilitator: Arc<F>) -> ResourceServerwhere
F: Facilitator + 'static,
Creates a resource server over any Facilitator.
Sourcepub fn from_dyn(facilitator: Arc<dyn DynFacilitator>) -> ResourceServer
pub fn from_dyn(facilitator: Arc<dyn DynFacilitator>) -> ResourceServer
Creates from an already-erased facilitator handle.
Sourcepub fn with_hook(
self,
hook: impl ResourceServerHooks + 'static,
) -> ResourceServer
pub fn with_hook( self, hook: impl ResourceServerHooks + 'static, ) -> ResourceServer
Registers a lifecycle hook. Returns self for builder chaining.
Sourcepub fn add_hook(&mut self, hook: impl ResourceServerHooks + 'static)
pub fn add_hook(&mut self, hook: impl ResourceServerHooks + 'static)
Registers a lifecycle hook after construction.
Sourcepub fn hook_count(&self) -> usize
pub fn hook_count(&self) -> usize
Number of registered resource-server hooks.
Sourcepub fn facilitator(&self) -> Arc<dyn DynFacilitator> ⓘ
pub fn facilitator(&self) -> Arc<dyn DynFacilitator> ⓘ
Returns a clone of the inner facilitator handle.
Sourcepub fn with_scheme(
self,
network: ChainIdPattern,
scheme: impl SchemeNetworkServer + 'static,
) -> ResourceServer
pub fn with_scheme( self, network: ChainIdPattern, scheme: impl SchemeNetworkServer + 'static, ) -> ResourceServer
Registers a scheme/network adapter. Returns self for builder chaining.
Sourcepub fn register_scheme(
&mut self,
network: ChainIdPattern,
scheme: impl SchemeNetworkServer + 'static,
)
pub fn register_scheme( &mut self, network: ChainIdPattern, scheme: impl SchemeNetworkServer + 'static, )
Registers a scheme/network adapter after construction.
Sourcepub fn registered_scheme(
&self,
scheme: &str,
network: &ChainId,
) -> Option<&dyn DynSchemeNetworkServer>
pub fn registered_scheme( &self, scheme: &str, network: &ChainId, ) -> Option<&dyn DynSchemeNetworkServer>
Registered adapter for scheme on network, if any.
Exact CAIP-2 registrations win over wildcard/set patterns.
Sourcepub fn get_payment_flow(
&self,
requirements: &PaymentRequirements,
) -> Result<PaymentFlowName, PaymentFlowError>
pub fn get_payment_flow( &self, requirements: &PaymentRequirements, ) -> Result<PaymentFlowName, PaymentFlowError>
Resolves the payment-flow name for this accept from the scheme table.
§Errors
PaymentFlowError::UnregisteredScheme when no adapter matches this
accept, or ATM/flow errors from resolve_payment_flow.
Sourcepub async fn has_settle_on_cancel(
&self,
requirements: &PaymentRequirements,
) -> bool
pub async fn has_settle_on_cancel( &self, requirements: &PaymentRequirements, ) -> bool
Whether the registered scheme yields cancel-settle requirements.
Escrow accepts must return true before a transport will serve them.
Sourcepub fn with_extension(
self,
extension: impl Extension + 'static,
) -> ResourceServer
pub fn with_extension( self, extension: impl Extension + 'static, ) -> ResourceServer
Registers a protocol extension advertised on 402 responses.
Source§impl ResourceServer
impl ResourceServer
Sourcepub async fn settle_payment(
&self,
payload: &PaymentPayload<PaymentRequirements, Value>,
requirements: &PaymentRequirements,
overrides: Option<&SettlementOverrides>,
phase: SettlePhase,
resource_url: Option<&str>,
advertised: Option<&Extensions>,
) -> Result<SettleResponse, FacilitatorError>
pub async fn settle_payment( &self, payload: &PaymentPayload<PaymentRequirements, Value>, requirements: &PaymentRequirements, overrides: Option<&SettlementOverrides>, phase: SettlePhase, resource_url: Option<&str>, advertised: Option<&Extensions>, ) -> Result<SettleResponse, FacilitatorError>
Optional amount overrides → before hooks → facilitator → after hooks.
Facilitator settle is attempted twice only when the first Ok result is
settlement_pending with a non-empty transaction; no sleep.
§Errors
Propagates facilitator / abort / invalid-override errors unless a failure hook recovers.
Source§impl ResourceServer
impl ResourceServer
Sourcepub async fn verify_payment(
&self,
payload: &PaymentPayload<PaymentRequirements, Value>,
requirements: &PaymentRequirements,
advertised: Option<&Extensions>,
) -> Result<VerifyPaymentOutcome, FacilitatorError>
pub async fn verify_payment( &self, payload: &PaymentPayload<PaymentRequirements, Value>, requirements: &PaymentRequirements, advertised: Option<&Extensions>, ) -> Result<VerifyPaymentOutcome, FacilitatorError>
Before hooks → facilitator → after hooks.
Every accept must have a registered crate::SchemeNetworkServer. Empty
schemes is crate::PaymentFlowError::UnregisteredScheme, not an
always-facilitator fallback. When the resolved flow has
!verify_before_handler, returns Valid without the facilitator and
without after_verify.
§Errors
Propagates facilitator errors (unless recovered), before-hook aborts,
after-verify aborts (FacilitatorError::Aborted), and payment-flow
resolution failures.
Trait Implementations§
Source§impl Clone for ResourceServer
impl Clone for ResourceServer
Source§fn clone(&self) -> ResourceServer
fn clone(&self) -> ResourceServer
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for ResourceServer
impl !UnwindSafe for ResourceServer
impl Freeze for ResourceServer
impl Send for ResourceServer
impl Sync for ResourceServer
impl Unpin for ResourceServer
impl UnsafeUnpin for ResourceServer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more