Struct Multipart

Source
pub struct Multipart<S> { /* private fields */ }
Expand description

The entry point of the client-side multipart API.

Though they perform I/O, the .write_*() methods do not return io::Result<_> in order to facilitate method chaining. Upon the first error, all subsequent API calls will be no-ops until .send() is called, at which point the error will be reported.

Implementations§

Source§

impl Multipart<()>

Source

pub fn from_request<R: HttpRequest>( req: R, ) -> Result<Multipart<R::Stream>, R::Error>

Create a new Multipart to wrap a request.

§Returns Error

If req.open_stream() returns an error.

Source§

impl<S: HttpStream> Multipart<S>

Source

pub fn write_text<N: AsRef<str>, V: AsRef<str>>( &mut self, name: N, val: V, ) -> Result<&mut Self, S::Error>

Write a text field to this multipart request. name and val can be either owned String or &str.

§Errors

If something went wrong with the HTTP stream.

Source

pub fn write_file<N: AsRef<str>, P: AsRef<Path>>( &mut self, name: N, path: P, ) -> Result<&mut Self, S::Error>

Open a file pointed to by path and write its contents to the multipart request, supplying its filename and guessing its Content-Type from its extension.

If you want to set these values manually, or use another type that implements Read, use .write_stream().

name can be either String or &str, and path can be PathBuf or &Path.

§Errors

If there was a problem opening the file (was a directory or didn’t exist), or if something went wrong with the HTTP stream.

Source

pub fn write_stream<N: AsRef<str>, St: Read>( &mut self, name: N, stream: &mut St, filename: Option<&str>, content_type: Option<Mime>, ) -> Result<&mut Self, S::Error>

Write a byte stream to the multipart request as a file field, supplying filename if given, and content_type if given or "application/octet-stream" if not.

name can be either String or &str, and read can take the Read by-value or with an &mut borrow.

§Warning

The given Read must be able to read to EOF (end of file/no more data), meaning Read::read() returns Ok(0). If it never returns EOF it will be read to infinity and the request will never be completed.

When using SizedRequest this also can cause out-of-control memory usage as the multipart data has to be written to an in-memory buffer so its size can be calculated.

Use Read::take() if you wish to send data from a Read that will never return EOF otherwise.

§Errors

If the reader returned an error, or if something went wrong with the HTTP stream.

Source

pub fn send(self) -> Result<S::Response, S::Error>

Finalize the request and return the response from the server, or the last error if set.

Source§

impl<R: HttpRequest> Multipart<SizedRequest<R>>
where <R::Stream as HttpStream>::Error: From<R::Error>,

Source

pub fn from_request_sized(req: R) -> Result<Self, R::Error>

Create a new Multipart using the SizedRequest wrapper around req.

Auto Trait Implementations§

§

impl<S> Freeze for Multipart<S>
where S: Freeze,

§

impl<S> RefUnwindSafe for Multipart<S>
where S: RefUnwindSafe,

§

impl<S> Send for Multipart<S>
where S: Send,

§

impl<S> Sync for Multipart<S>
where S: Sync,

§

impl<S> Unpin for Multipart<S>
where S: Unpin,

§

impl<S> UnwindSafe for Multipart<S>
where S: 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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> Typeable for T
where T: Any,

Source§

fn get_type(&self) -> TypeId

Get the TypeId of this object.
Source§

impl<T> UnsafeAny for T
where T: Any,