extern crate hyper; | |
extern crate multipart; | |
use hyper::client::Request; | |
use hyper::method::Method; | |
use hyper::net::Streaming; | |
use multipart::client::Multipart; | |
use std::io::Read; | |
fn main() { | |
let url = "http://localhost:80".parse() | |
.expect("Failed to parse URL"); | |
let request = Request::new(Method::Post, url) | |
.expect("Failed to create request"); | |
let mut multipart = Multipart::from_request(request) | |
.expect("Failed to create Multipart"); | |
write_body(&mut multipart) | |
.expect("Failed to write multipart body"); | |
let mut response = multipart.send().expect("Failed to send multipart request"); | |
if !response.status.is_success() { | |
let mut res = String::new(); | |
response.read_to_string(&mut res).expect("failed to read response"); | |
println!("response reported unsuccessful: {:?}\n {}", response, res); | |
} | |
// Optional: read out response | |
} | |
fn write_body(multi: &mut Multipart<Request<Streaming>>) -> hyper::Result<()> { | |
let mut binary = "Hello world from binary!".as_bytes(); | |
multi.write_text("text", "Hello, world!")?; | |
multi.write_file("file", "lorem_ipsum.txt")?; | |
// &[u8] impl Read | |
multi.write_stream("binary", &mut binary, None, None) | |
.and(Ok(())) | |
} |