Implementation of RFC 7578 (Multipart) for Rust
Switch branches/tags
Nothing to show
Clone or download
Ferris Tseng
Ferris Tseng update version number
Latest commit 2ce6bb9 Jun 28, 2018

README.md

Rust Hyper Multipart (RFC 7578)

Travis Crates.io Docs.rs

This crate contains an implementation of the multipart/form-data media type described in RFC 7578 for hyper.

Currently, only the client-side is implemented.

Usage

[dependencies]
hyper-multipart-rfc7578 = "0.2.0-alpha2"

Because the name of this library is really wordy, I recommend shortening it:

extern crate hyper_multipart_rfc7578 as hyper_multipart;

Using this requires a hyper client compatible with the multipart::Body data structure (see the documentation for more detailed examples):

use hyper::{Client, Request, rt::{self, Future}};
use hyper_multipart_rfc7578::client::{self, multipart};

let client = Client::new();
let mut req_builder = Request::get("http://localhost/upload");
let mut form = multipart::Form::default();

form.add_text("test", "Hello World");
let req = form.set_body(&mut req_builder).unwrap();

rt::run(
    client
        .request(req)
        .map(|_| println!("done..."))
        .map_err(|_| println!("an error occurred")),
);

Note on Server Implementation

I don't have any plans on implementing the server-side of this any time soon. I ended up implementing the client-side because I couldn't find any good libraries that were compatible with hyper >= 0.11.

Please feel free to submit a pull request, I would gladly review it!

Alternatives

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.