Struct multipart::client::Multipart [] [src]

pub struct Multipart<S: HttpStream> {
    // some fields omitted
}

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.

Methods

impl Multipart<Sink>
[src]

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.

impl<S: HttpStream> Multipart<S>
[src]

fn last_err(&self) -> Option<&S::Error>

Get a reference to the last error returned from writing to the HTTP stream, if any.

fn take_err(&mut self) -> Option<S::Error>

Remove and return the last error to occur, allowing subsequent API calls to proceed normally.

fn write_text<N: Borrow<str>, V: Borrow<str>>(self, name: N, val: V) -> Self

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.

fn write_file<N: Borrow<str>, P: AsRef<Path>>(self, name: N, path: P) -> Self

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.

fn write_stream<N: Borrow<str>, St: Read, St_: BorrowMut<St>>(self, name: N, read: St_, filename: Option<&str>, content_type: Option<Mime>) -> Self

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.

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

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

impl<R: HttpRequest> Multipart<SizedRequest<R>> where R::Stream::Error: From<R::Error>
[src]

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

Create a new Multipart using the SizedRequest wrapper around req.