31 lines
986 B
Rust
31 lines
986 B
Rust
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<String, ureq::Error> {
|
|
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<u8>) -> Result<&'b mut Vec<u8>, ureq::Error> {
|
|
buffer.clear();
|
|
agent.get(location)
|
|
.call()?
|
|
.into_reader()
|
|
.take(size_limit)
|
|
.read_to_end(buffer)?;
|
|
Ok(buffer)
|
|
}
|