1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
pub fn get_bytes<U: AsRef<str>>(url: U) -> Result<Vec<u8>, String> {
	let mut handle = curl::easy::Easy::new();
	let mut bytes = Vec::new();
	handle.url(url.as_ref()).map_err(|e| format!("bad url: {}", e))?;

	{
		let mut transfer = handle.transfer();
		transfer
			.write_function(|new_data| {
				bytes.extend_from_slice(new_data);
				Ok(new_data.len())
			})
			.map_err(|e| format!("write function: {}", e))?;
		transfer.perform().map_err(|e| format!("failed to perform: {}", e))?;
	}

	Ok(bytes)
}