use std::io::Read; use ureq::{Agent, AgentBuilder}; const DATA_HEADER: &'static [u8] = b"--FuckLiterallyAllCops\r\nContent-Disposition: form-data; name=\"file\"; filename=\"pigeon.bin\"\r\nContent-Type: application/octet-stream\r\n\r\n"; const DATA_FOOTER: &'static [u8] = b"\r\n--FuckLiterallyAllCops--\r\n"; pub fn get_agent() -> Agent { AgentBuilder::new() .max_idle_connections(3) .redirects(2) .user_agent("aviary-cli/0.0.1") .build() } pub fn put_data(agent: &Agent, server: &str, data: &[u8]) -> Result { Ok(agent.post(server) .set("Content-Type", "multipart/form-data; boundary=FuckLiterallyAllCops") .send(DATA_HEADER.chain(data).chain(DATA_FOOTER))?.into_string()?) } pub fn get_data<'b>(agent: &Agent, location: &str, size_limit: u64, buffer: &'b mut Vec) -> Result<&'b mut Vec, ureq::Error> { buffer.clear(); agent.get(location) .call()? .into_reader() .take(size_limit) .read_to_end(buffer)?; Ok(buffer) }