|
|
|
@ -114,8 +114,11 @@ pub fn fetch(host: &str, port: &str, selector: &str) -> io::Result<String> {
|
|
|
|
|
pub fn download_url(url: &str) -> io::Result<String> {
|
|
|
|
|
let (_, host, port, sel) = parse_url(url);
|
|
|
|
|
let sel = sel.replace('?', "\t"); // search queries
|
|
|
|
|
let parts = sel.split_terminator("/").collect::<Vec<&str>>();
|
|
|
|
|
let filename = parts.iter().rev().nth(0).unwrap_or(&"download");
|
|
|
|
|
let filename = sel
|
|
|
|
|
.split_terminator('/')
|
|
|
|
|
.rev()
|
|
|
|
|
.nth(0)
|
|
|
|
|
.unwrap_or(&"download");
|
|
|
|
|
let mut path = std::path::PathBuf::from(".");
|
|
|
|
|
path.push(filename);
|
|
|
|
|
|
|
|
|
@ -136,6 +139,7 @@ pub fn download_url(url: &str) -> io::Result<String> {
|
|
|
|
|
std::fs::OpenOptions::new()
|
|
|
|
|
.write(true)
|
|
|
|
|
.create(true)
|
|
|
|
|
.truncate(true)
|
|
|
|
|
.open(path)
|
|
|
|
|
.and_then(|mut file| {
|
|
|
|
|
let mut buf = [0; 1024];
|
|
|
|
|