extern crate reqwest;
use std::fs;
use std::io;
use std::path::Path;
#[derive(Debug)]
pub enum DownloadError {
IO(io::Error),
HTTP(reqwest::Error),
}
pub fn download(url: &str, to: &str) -> Result<(), DownloadError> {
println!("downloading {} to {}", url, to);
let mut response = reqwest::get(url).map_err(DownloadError::HTTP)?;
let parent_path = Path::new(to).parent().expect("invalid path");
fs::create_dir_all(parent_path).map_err(DownloadError::IO)?;
let mut file = fs::File::create(to).map_err(DownloadError::IO)?;
io::copy(&mut response, &mut file).map_err(DownloadError::IO)?;
Ok(())
}