Skip to main content

X402Middleware

Struct X402Middleware 

Source
pub struct X402Middleware<F> { /* private fields */ }
Available on crate feature server only.
Expand description

The main X402 middleware instance for enforcing x402 payments on routes.

Create a single instance per application and use it to build payment layers for protected routes.

Implementations§

Source§

impl<F> X402Middleware<F>

Source

pub const fn facilitator(&self) -> &F

Returns a reference to the underlying facilitator.

Source§

impl X402Middleware<Arc<FacilitatorClient>>

Source

pub fn new(url: &str) -> Self

Creates a new middleware instance with a default facilitator URL.

§Panics

Panics if the facilitator URL is invalid.

Source

pub fn try_new(url: &str) -> Result<Self, Box<dyn Error>>

Creates a new middleware instance with a facilitator URL.

§Errors

Returns an error if the URL is invalid.

Source

pub fn facilitator_url(&self) -> &Url

Returns the configured facilitator URL.

Source

pub fn with_supported_cache_ttl(&self, ttl: Duration) -> Self

Sets the TTL for caching the facilitator’s supported response.

Default is 10 minutes. Use FacilitatorClient::without_supported_cache() to disable caching entirely.

Source§

impl<F> X402Middleware<F>
where F: Clone,

Source

pub fn with_base_url(&self, base_url: Url) -> Self

Sets the base URL used to construct resource URLs dynamically.

If X402LayerBuilder::with_resource is not called, this base URL is combined with each request’s path/query to compute the resource. If not set, defaults to http://localhost/.

In production, prefer calling with_resource or setting a precise base_url.

Source

pub fn settle_before_execution(&self) -> Self

Enables settlement prior to request execution. When disabled (default), settlement occurs after successful request execution.

Source

pub fn settle_after_execution(&self) -> Self

Disables settlement prior to request execution (default behavior).

When disabled, settlement occurs after successful request execution. This is the default behavior and allows the application to process the request before committing the payment on-chain.

Source§

impl<TFacilitator> X402Middleware<TFacilitator>
where TFacilitator: Clone,

Source

pub fn with_price_tag( &self, price_tag: PriceTag, ) -> X402LayerBuilder<StaticPriceTags, TFacilitator>

Sets the price tag for the protected route.

Creates a layer builder that can be further configured with additional price tags and resource information.

Source

pub fn with_dynamic_price<F, Fut>( &self, callback: F, ) -> X402LayerBuilder<DynamicPriceTags, TFacilitator>
where F: Fn(&HeaderMap, &Uri, Option<&Url>) -> Fut + Send + Sync + 'static, Fut: Future<Output = Vec<PriceTag>> + Send + 'static,

Sets a dynamic price source for the protected route.

The callback receives request headers, URI, and base URL, and returns a vector of V2 price tags.

Trait Implementations§

Source§

impl<F: Clone> Clone for X402Middleware<F>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<F: Debug> Debug for X402Middleware<F>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl TryFrom<&str> for X402Middleware<Arc<FacilitatorClient>>

Source§

type Error = Box<dyn Error>

The type returned in the event of a conversion error.
Source§

fn try_from(value: &str) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<String> for X402Middleware<Arc<FacilitatorClient>>

Source§

type Error = Box<dyn Error>

The type returned in the event of a conversion error.
Source§

fn try_from(value: String) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

§

impl<F> Freeze for X402Middleware<F>
where F: Freeze,

§

impl<F> RefUnwindSafe for X402Middleware<F>
where F: RefUnwindSafe,

§

impl<F> Send for X402Middleware<F>
where F: Send,

§

impl<F> Sync for X402Middleware<F>
where F: Sync,

§

impl<F> Unpin for X402Middleware<F>
where F: Unpin,

§

impl<F> UnwindSafe for X402Middleware<F>
where F: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more