Skip to main content

SubscriptionClient

Struct SubscriptionClient 

Source
pub struct SubscriptionClient { /* private fields */ }
Expand description

Public client for the separate 3x-ui subscription HTTP/HTTPS server.

This client intentionally has no panel authentication or cookie state. The subscription identifier embedded into every request path is redacted from SDK errors.

Implementations§

Source§

impl SubscriptionClient

Source

pub fn new(server_url: impl AsRef<str>) -> Result<Self>

Creates a client using the default /sub/, /json/, and /clash/ paths below server_url.

§Errors

Returns an error when the URL or HTTP-client configuration is invalid.

Source

pub fn builder(server_url: impl AsRef<str>) -> Result<SubscriptionClientBuilder>

Starts configuring a standalone subscription client.

§Errors

Returns an error when server_url is not an absolute HTTP(S) URL.

Source

pub fn from_settings(settings: &SubscriptionSettings) -> Result<Self>

Creates a client from the absolute public URIs and fallback paths in a panel settings snapshot.

§Errors

Returns an error when subURI is not an absolute HTTP(S) prefix or any configured URI/HTTP option is invalid.

Source

pub const fn response_body_limit(&self) -> usize

Returns the configured maximum subscription response body size.

Source

pub async fn raw( &self, subscription_id: &str, ) -> Result<SubscriptionResponse<SubscriptionDocument>>

Fetches the raw subscription body.

The body is base64 when the panel’s subEncrypt setting is enabled.

§Errors

Returns an error for transport or unsuccessful HTTP status.

Source

pub async fn html( &self, subscription_id: &str, ) -> Result<SubscriptionResponse<SubscriptionDocument>>

Fetches the browser HTML information page.

§Errors

Returns an error for transport, unsuccessful HTTP status, or invalid UTF-8.

Source

pub async fn info(&self, subscription_id: &str) -> Result<SubscriptionInfo>

Fetches the typed format=info status view without imported link data.

§Errors

Returns an error for transport, unsuccessful HTTP status, or invalid JSON.

Source

pub async fn info_with_metadata( &self, subscription_id: &str, ) -> Result<SubscriptionResponse<SubscriptionInfo>>

Fetches the typed information view together with common and HWID headers.

Prefer this method when device-limit state is relevant to the caller.

§Errors

Returns an error for transport, unsuccessful HTTP status, or invalid JSON.

Source

pub async fn json( &self, subscription_id: &str, ) -> Result<SubscriptionResponse<SubscriptionJson>>

Fetches and parses the Xray JSON subscription document.

The raw-download view is requested to avoid browser content negotiation.

§Errors

Returns an error for transport, unsuccessful HTTP status, or invalid JSON.

Source

pub async fn clash( &self, subscription_id: &str, ) -> Result<SubscriptionResponse<SubscriptionDocument>>

Fetches the Clash/Mihomo YAML subscription document.

The raw-download view is requested to avoid browser content negotiation.

§Errors

Returns an error for transport, unsuccessful HTTP status, or invalid UTF-8.

Source

pub async fn mihomo( &self, subscription_id: &str, ) -> Result<SubscriptionResponse<SubscriptionDocument>>

Fetches the Mihomo alias (/mihomo/), when enabled and not shadowed by a configured path.

§Errors

Returns a configuration error when the alias is shadowed, or an error for transport, unsuccessful HTTP status, or invalid UTF-8.

Source

pub async fn mihomo_metadata( &self, subscription_id: &str, ) -> Result<SubscriptionMetadata>

Retrieves response headers from the mihomo alias.

§Errors

Returns a configuration error when the alias is shadowed, or an error for transport or unsuccessful HTTP status.

Source

pub async fn clash_legacy( &self, subscription_id: &str, ) -> Result<SubscriptionResponse<SubscriptionDocument>>

Fetches the legacy Clash alias (/clash-legacy/), when enabled and not shadowed by a configured path.

§Errors

Returns a configuration error when the alias is shadowed, or an error for transport, unsuccessful HTTP status, or invalid UTF-8.

Source

pub async fn clash_legacy_metadata( &self, subscription_id: &str, ) -> Result<SubscriptionMetadata>

Retrieves response headers from the clash_legacy alias.

§Errors

Returns a configuration error when the alias is shadowed, or an error for transport or unsuccessful HTTP status.

Source

pub async fn hwid_status(&self, subscription_id: &str) -> Result<HwidSlotStatus>

Reads device-slot counts without registering or touching a device.

§Errors

Returns an error for transport, unsuccessful HTTP status, or malformed JSON.

Source

pub async fn hwid_status_metadata( &self, subscription_id: &str, ) -> Result<SubscriptionMetadata>

Checks the read-only HWID status route with HEAD.

§Errors

Returns an error for transport or unsuccessful HTTP status.

Source

pub async fn raw_metadata( &self, subscription_id: &str, ) -> Result<SubscriptionMetadata>

Executes HEAD against the raw subscription route.

§Errors

Returns an error for transport or unsuccessful HTTP status.

Source

pub async fn json_metadata( &self, subscription_id: &str, ) -> Result<SubscriptionMetadata>

Executes HEAD against the JSON subscription route.

§Errors

Returns an error for transport or unsuccessful HTTP status.

Source

pub async fn clash_metadata( &self, subscription_id: &str, ) -> Result<SubscriptionMetadata>

Executes HEAD against the Clash subscription route.

§Errors

Returns an error for transport or unsuccessful HTTP status.

Trait Implementations§

Source§

impl Clone for SubscriptionClient

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for SubscriptionClient

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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: Sized + 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> Same for T

Source§

type Output = T

Should always be Self
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 = !

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

fn try_from(value: U) -> Result<T, !>

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