Struct CachedCdnClient

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

A caching wrapper around CdnClient

Implementations§

Source§

impl CachedCdnClient

Source

pub async fn new() -> Result<Self>

Create a new cached CDN client

Source

pub async fn for_product(product: &str) -> Result<Self>

Create a new cached client for a specific product

Source

pub async fn with_cache_dir(cache_dir: PathBuf) -> Result<Self>

Create a new cached client with custom cache directory

Source

pub async fn with_client(client: CdnClient) -> Result<Self>

Create from an existing CDN client

Source

pub fn set_caching_enabled(&mut self, enabled: bool)

Enable or disable caching

Source

pub fn cache_dir(&self) -> &PathBuf

Get the cache directory

Source

pub async fn request(&self, url: &str) -> Result<Response>

Make a basic request to a CDN URL

This method does not use caching as it’s for arbitrary URLs. Use download for hash-based content that should be cached.

Source

pub async fn download( &self, cdn_host: &str, path: &str, hash: &str, ) -> Result<CachedResponse>

Download content from CDN by hash with caching

If caching is enabled and the content exists in cache, it will be returned without making a network request. Otherwise, the content is downloaded from the CDN and stored in cache for future use.

Source

pub async fn download_stream( &self, cdn_host: &str, path: &str, hash: &str, ) -> Result<Box<dyn AsyncRead + Unpin + Send>>

Stream download content from CDN with caching

For large files, this method allows streaming the content while still benefiting from caching. If the content is cached, it opens the file for streaming. Otherwise, it downloads and caches the content first.

Source

pub async fn cached_size(&self, path: &str, hash: &str) -> Result<Option<u64>>

Get the size of cached content without reading it

Source

pub async fn clear_cache(&self) -> Result<()>

Clear all cached content

This removes all cached CDN content from disk. Use with caution as it will require re-downloading all content.

Source

pub async fn cache_stats(&self) -> Result<CacheStats>

Get cache statistics

Source

pub async fn download_build_config( &self, cdn_host: &str, path: &str, hash: &str, ) -> Result<CachedResponse>

Download BuildConfig from CDN with caching

BuildConfig files are stored at {path}/config/{hash}

Source

pub async fn download_cdn_config( &self, cdn_host: &str, path: &str, hash: &str, ) -> Result<CachedResponse>

Download CDNConfig from CDN with caching

CDNConfig files are stored at {path}/config/{hash}

Source

pub async fn download_product_config( &self, cdn_host: &str, config_path: &str, hash: &str, ) -> Result<CachedResponse>

Download ProductConfig from CDN with caching

ProductConfig files are stored at {config_path}/{hash} Note: This uses the config_path from CDN response, not the regular path

Source

pub async fn download_key_ring( &self, cdn_host: &str, path: &str, hash: &str, ) -> Result<CachedResponse>

Download KeyRing from CDN with caching

KeyRing files are stored at {path}/config/{hash}

Source

pub async fn download_data( &self, cdn_host: &str, path: &str, hash: &str, ) -> Result<CachedResponse>

Download data file from CDN with caching

Data files are stored at {path}/data/{hash}

Source

pub async fn download_patch( &self, cdn_host: &str, path: &str, hash: &str, ) -> Result<CachedResponse>

Download patch file from CDN with caching

Patch files are stored at {path}/patch/{hash}

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

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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

impl<T> ErasedDestructor for T
where T: 'static,