Skip to main content

DownloadBuilder

Struct DownloadBuilder 

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

Fluent builder for a single download.

Create one via crate::builder() or DownloadBuilder::new().

Implementations§

Source§

impl DownloadBuilder

Source

pub fn new(url: impl Into<String>) -> Self

Start building a download for url.

Source

pub fn output(self, path: impl Into<String>) -> Self

Set the output file path or directory.

If a directory is given, the filename is inferred from the URL.

Source

pub fn connections(self, n: usize) -> Self

Number of parallel HTTP connections. Clamped to 1–32.

Source

pub fn speed_limit(self, bytes_per_sec: u64) -> Self

Global speed limit in bytes per second.

Source

pub fn proxy(self, url: impl Into<String>) -> Self

HTTP proxy URL (e.g. "http://proxy:8080" or "socks5://host:1080").

Source

pub fn proxy_auth( self, user: impl Into<String>, pass: impl Into<String>, ) -> Self

Proxy credentials (optional, required only for authenticated proxies).

Source

pub fn sha256(self, hash: impl Into<String>) -> Self

Expect a SHA-256 digest. The download fails if the file doesn’t match.

Source

pub fn sha512(self, hash: impl Into<String>) -> Self

Expect a SHA-512 digest.

Source

pub fn sha1(self, hash: impl Into<String>) -> Self

Expect a SHA-1 digest.

Source

pub fn md5(self, hash: impl Into<String>) -> Self

Expect an MD5 digest.

Source

pub fn blake3(self, hash: impl Into<String>) -> Self

Expect a BLAKE3 digest.

Source

pub fn verify_from(self, url: impl Into<String>) -> Self

Download a checksum sidecar file from url and use it to populate the expected digest automatically.

Supports GNU (<hash> <file>) and BSD (SHA256 (<file>) = <hash>) formats.

Source

pub fn header(self, name: impl Into<String>, value: impl Into<String>) -> Self

Add a custom HTTP request header. Can be called multiple times.

Source

pub fn retry(self, config: RetryConfig) -> Self

Override the default retry policy.

Source

pub fn range(self, start: u64, end: u64) -> Self

Request only a byte range of the file: [start, end] (both inclusive).

Sends Range: bytes=start-end. The returned DownloadResult will have bytes_downloaded equal to end - start + 1.

Source

pub fn quiet(self, q: bool) -> Self

Suppress all progress output.

Source

pub fn download(self) -> Result<DownloadResult, KgetError>

Execute the download synchronously and return metrics on success.

Source

pub fn download_to_bytes(self) -> Result<Vec<u8>, KgetError>

Download entirely into memory and return the raw bytes.

Respects .range(), .proxy(), and .header() settings. Does not write to disk, so .output() is ignored.

Source

pub fn download_to_reader(self) -> Result<impl Read, KgetError>

Download to memory and return an impl Read.

Convenience wrapper over download_to_bytes.

Source

pub fn spawn( self, ) -> (JoinHandle<Result<DownloadResult, KgetError>>, Receiver<DownloadEvent>)

Spawn the download in a background thread and return an event channel.

The DownloadEvent receiver yields progress updates until the channel is closed (on completion or error). Call .join() on the handle to retrieve the final DownloadResult.

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

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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, 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