Skip to main content

UploadClient

Struct UploadClient 

Source
pub struct UploadClient<'a, T: Transport, A: AuthProvider> { /* private fields */ }
Expand description

Client for Nextcloud’s WebDAV Chunked Upload v2 protocol.

Manages creating upload directories, streaming individual chunks, assembling the uploaded chunks into the destination file, or aborting the upload.

Generic over the Transport and AuthProvider, held by reference so that connection pools and credentials can be shared across tasks.

Implementations§

Source§

impl<'a, T: Transport, A: AuthProvider> UploadClient<'a, T, A>

Source

pub const fn new(transport: &'a T, auth: &'a A) -> Self

Binds an upload client to a transport and credential provider.

Source

pub const fn transport(&self) -> &'a T

The transport this client sends requests through.

Source

pub const fn auth(&self) -> &'a A

The credential provider applied to every request.

Source

pub async fn start( &self, user_id: &str, destination_path: &str, total_size: u64, ) -> Result<UploadSession, Error>

Initializes a new chunked upload session by sending an MKCOL request with an auto-generated upload ID.

Sends MKCOL /remote.php/dav/uploads/{user_id}/{upload_id} with the Destination header set.

Source

pub async fn start_with_id( &self, user_id: &str, destination_path: &str, total_size: u64, upload_id: &str, ) -> Result<UploadSession, Error>

Initializes a new chunked upload session using an explicit upload_id.

Sends MKCOL /remote.php/dav/uploads/{user_id}/{upload_id} with the Destination header set.

Source

pub async fn upload_chunk( &self, session: &UploadSession, chunk_index: u32, chunk_data: Vec<u8>, ) -> Result<(), Error>

Uploads an individual chunk into the upload collection.

Sends PUT /remote.php/dav/uploads/{user_id}/{upload_id}/{chunk_number} with:

  • Destination: {destination_path}
  • OC-Total-Length: {total_size}
  • payload containing chunk_data

Automatically marks the chunk index as uploaded in the session upon success.

Source

pub async fn finish( &self, session: &UploadSession, mtime: Option<u64>, ) -> Result<(), Error>

Finalizes the upload by moving .file to the destination path.

Sends MOVE /remote.php/dav/uploads/{user_id}/{upload_id}/.file with:

  • Destination: {destination_path}
  • OC-Total-Length: {total_size}
  • optionally X-OC-Mtime: {mtime}
Source

pub async fn abort(&self, session: &UploadSession) -> Result<(), Error>

Cancels and removes the temporary upload collection.

Sends DELETE /remote.php/dav/uploads/{user_id}/{upload_id}/.

Trait Implementations§

Source§

impl<'a, T: Clone + Transport, A: Clone + AuthProvider> Clone for UploadClient<'a, T, A>

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<'a, T: Copy + Transport, A: Copy + AuthProvider> Copy for UploadClient<'a, T, A>

Source§

impl<'a, T: Debug + Transport, A: Debug + AuthProvider> Debug for UploadClient<'a, T, A>

Source§

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

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

impl<T: Transport, A: AuthProvider> Display for UploadClient<'_, T, A>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, T, A> Freeze for UploadClient<'a, T, A>

§

impl<'a, T, A> RefUnwindSafe for UploadClient<'a, T, A>

§

impl<'a, T, A> Send for UploadClient<'a, T, A>
where &'a T: Send, &'a A: Send,

§

impl<'a, T, A> Sync for UploadClient<'a, T, A>
where &'a T: Sync, &'a A: Sync,

§

impl<'a, T, A> Unpin for UploadClient<'a, T, A>

§

impl<'a, T, A> UnsafeUnpin for UploadClient<'a, T, A>

§

impl<'a, T, A> UnwindSafe for UploadClient<'a, T, A>

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> 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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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