pub struct Form<'a> { /* private fields */ }
Expand description

Implements the multipart/form-data media type as described by RFC 7578.

See.

Implementations§

source§

impl<'a> Form<'a>

source

pub fn new<G>() -> Form<'a>

Creates a new form with the specified boundary generator function.

Examples
struct TestGenerator;

impl BoundaryGenerator for TestGenerator {
    fn generate_boundary() -> String {
        "test".to_string()
    }
}

let form = multipart::Form::new::<TestGenerator>();
source

pub fn add_text<N, T>(&mut self, name: N, text: T)
where N: Display, T: Into<String>,

Adds a text part to the Form.

Examples
use common_multipart_rfc7578::client::multipart;

let mut form = multipart::Form::default();

form.add_text("text", "Hello World!");
form.add_text("more", String::from("Hello Universe!"));
source

pub fn add_reader<F, R>(&mut self, name: F, read: R)
where F: Display, R: 'a + Read + Send + Sync + Unpin,

Adds a readable part to the Form.

Examples
use common_multipart_rfc7578::client::multipart;
use std::io::Cursor;

let bytes = Cursor::new("Hello World!");
let mut form = multipart::Form::default();

form.add_reader("input", bytes);
source

pub fn add_async_reader<F, R>(&mut self, name: F, read: R)
where F: Display, R: 'a + AsyncRead + Send + Sync + Unpin,

Adds a readable part to the Form.

Examples
use common_multipart_rfc7578::client::multipart;
use futures_util::io::Cursor;

let bytes = Cursor::new("Hello World!");
let mut form = multipart::Form::default();

form.add_async_reader("input", bytes);
source

pub fn add_file<P, F>(&mut self, name: F, path: P) -> Result<()>
where P: AsRef<Path>, F: Display,

Adds a file, and attempts to derive the mime type.

Examples
use common_multipart_rfc7578::client::multipart;

let mut form = multipart::Form::default();

form.add_file("file", file!()).expect("file to exist");
source

pub fn add_file_with_mime<P, F>( &mut self, name: F, path: P, mime: Mime ) -> Result<()>
where P: AsRef<Path>, F: Display,

Adds a file with the specified mime type to the form. If the mime type isn’t specified, a mime type will try to be derived.

Examples
use common_multipart_rfc7578::client::multipart;

let mut form = multipart::Form::default();

form.add_file_with_mime("data", "test.csv", mime::TEXT_CSV);
source

pub fn add_reader_file<F, G, R>(&mut self, name: F, read: R, filename: G)
where F: Display, G: Into<String>, R: 'a + Read + Send + Sync + Unpin,

Adds a readable part to the Form as a file.

Examples
use common_multipart_rfc7578::client::multipart;
use std::io::Cursor;

let bytes = Cursor::new("Hello World!");
let mut form = multipart::Form::default();

form.add_reader_file("input", bytes, "filename.txt");
source

pub fn add_async_reader_file<F, G, R>(&mut self, name: F, read: R, filename: G)
where F: Display, G: Into<String>, R: 'a + AsyncRead + Send + Sync + Unpin,

Adds a readable part to the Form as a file.

Examples
use common_multipart_rfc7578::client::multipart;
use futures_util::io::Cursor;

let bytes = Cursor::new("Hello World!");
let mut form = multipart::Form::default();

form.add_async_reader_file("input", bytes, "filename.txt");
source

pub fn add_reader_2<F, R>( &mut self, name: F, read: R, filename: Option<String>, mime: Option<Mime> )
where F: Display, R: 'a + Read + Send + Sync + Unpin,

source

pub fn add_reader_file_with_mime<F, G, R>( &mut self, name: F, read: R, filename: G, mime: Mime )
where F: Display, G: Into<String>, R: 'a + Read + Send + Sync + Unpin,

Adds a readable part to the Form as a file with a specified mime.

Examples
use common_multipart_rfc7578::client::multipart;
use std::io::Cursor;

let bytes = Cursor::new("Hello World!");
let mut form = multipart::Form::default();

form.add_reader_file_with_mime("input", bytes, "filename.txt", mime::TEXT_PLAIN);
source

pub fn add_async_reader_file_with_mime<F, G, R>( &mut self, name: F, read: R, filename: G, mime: Mime )
where F: Display, G: Into<String>, R: 'a + AsyncRead + Send + Sync + Unpin,

Adds a readable part to the Form as a file with a specified mime.

Examples
use common_multipart_rfc7578::client::multipart;
use futures_util::io::Cursor;

let bytes = Cursor::new("Hello World!");
let mut form = multipart::Form::default();

form.add_async_reader_file_with_mime("input", bytes, "filename.txt", mime::TEXT_PLAIN);
source

pub fn set_body<B>(self, req: Builder) -> Result<Request<B>, Error>
where B: From<Body<'a>>,

Updates a request instance with the multipart Content-Type header and the payload data.

Examples
use hyper::{Method, Request};
use hyper_multipart_rfc7578::client::multipart;

let mut req_builder = Request::post("http://localhost:80/upload");
let mut form = multipart::Form::default();

form.add_text("text", "Hello World!");
let req = form.set_body::<multipart::Body>(req_builder).unwrap();
source

pub fn set_body_convert<B, I>(self, req: Builder) -> Result<Request<B>, Error>
where I: From<Body<'a>> + Into<B>,

Updates a request instance with the multipart Content-Type header and the payload data.

Allows converting body into an intermediate type.

Examples
use hyper::{Body, Method, Request};
use hyper_multipart_rfc7578::client::multipart;

let mut req_builder = Request::post("http://localhost:80/upload");
let mut form = multipart::Form::default();

form.add_text("text", "Hello World!");
let req = form.set_body_convert::<hyper::Body, multipart::Body>(req_builder).unwrap();
source

pub fn content_type(&self) -> String

Trait Implementations§

source§

impl<'a> Default for Form<'a>

source§

fn default() -> Form<'a>

Creates a new form with the default boundary generator.

source§

impl<'a> From<Form<'a>> for Body<'a>

source§

fn from(form: Form<'a>) -> Self

Turns a Form into a multipart Body.

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for Form<'a>

§

impl<'a> Send for Form<'a>

§

impl<'a> Sync for Form<'a>

§

impl<'a> Unpin for Form<'a>

§

impl<'a> !UnwindSafe for Form<'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> 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>,

§

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>,

§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V