diff options
| author | Mariot Tsitoara <[email protected]> | 2021-01-02 01:23:38 +0100 |
|---|---|---|
| committer | Mariot Tsitoara <[email protected]> | 2021-01-02 01:23:38 +0100 |
| commit | 0bb216b8f5f6010b0f68103b1011c6a024da0dae (patch) | |
| tree | 8842ab2735bb8e1a5c70f9e81db25984b96d71ae | |
| parent | Upgrade dependencies (diff) | |
| download | chan-downloader-0bb216b8f5f6010b0f68103b1011c6a024da0dae.tar.xz chan-downloader-0bb216b8f5f6010b0f68103b1011c6a024da0dae.zip | |
Upgrade reqwest version
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/main.rs | 78 |
2 files changed, 38 insertions, 42 deletions
@@ -16,4 +16,4 @@ clap = {version = "2.33.3", features = ["yaml"]} indicatif = "0.15.0" lazy_static = "1.4.0" regex = "1.4.2" -reqwest = "0.9.12" +reqwest = "0.9.19" diff --git a/src/main.rs b/src/main.rs index 38e0328..88e301c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,7 +8,7 @@ extern crate reqwest; use clap::{App, ArgMatches}; use indicatif::{ProgressBar, ProgressStyle}; use regex::Regex; -use reqwest::{Client, StatusCode}; +use reqwest::{Client, Error}; use std::env; use std::fs::create_dir_all; @@ -24,25 +24,19 @@ fn main() { download_thread(thread, &matches, &client); } -fn load(url: &str, client: &Client) -> reqwest::Response { - client.get(url).send().unwrap() +fn load(url: &str, client: &Client) -> Result<String, Error> { + let mut response = client.get(url).send()?; + Ok(response.text().unwrap()) } -fn save_image(url: &str, name: &str, client: &Client) -> Result<String, String> { - let mut response = client.get(url).send().unwrap(); +fn save_image(url: &str, name: &str, client: &Client) -> Result<String, Error> { + let mut response = client.get(url).send()?; - let file_name = match response.status() { - StatusCode::OK => { - let mut dest = File::create(name).unwrap(); - copy(&mut response, &mut dest).unwrap(); - name - } - StatusCode::NOT_FOUND => { - return Err(String::from("File not found")); - } - s => return Err(format!("Received response status: {:?}", s)), - }; - Ok(String::from(file_name)) + if response.status().is_success() { + let mut dest = File::create(name).unwrap(); + copy(&mut response, &mut dest).unwrap(); + } + Ok(String::from(name)) } fn download_thread(thread_link: &str, matches: &ArgMatches, client: &Client) { @@ -78,31 +72,33 @@ fn download_thread(thread_link: &str, matches: &ArgMatches, client: &Client) { } } - let mut thread_page = load(thread_link, client); - let page_string = thread_page.text().unwrap(); - let links_iter = RE.captures_iter(page_string.as_str()); - - let number_of_links = RE.captures_iter(page_string.as_str()).count() / 2; - let pb = ProgressBar::new(number_of_links as u64); - pb.set_style(ProgressStyle::default_bar() - .template("{spinner:.green} [{elapsed_precise}] [{bar:40.cyan/blue}] {pos}/{len} {msg} ({eta})") - .progress_chars("#>-")); - - pb.tick(); - for cap in links_iter.step_by(2) { - let img_path = directory.join(&cap[2]); - if !img_path.exists() { - match save_image( - format!("{}{}", "https:", &cap[1]).as_str(), - img_path.to_str().unwrap(), - client, - ) { - Ok(_) => {} - Err(err) => eprintln!("Error: {}", err), + match load(thread_link, client) { + Ok(page_string) => { + let links_iter = RE.captures_iter(page_string.as_str()); + let number_of_links = RE.captures_iter(page_string.as_str()).count() / 2; + let pb = ProgressBar::new(number_of_links as u64); + pb.set_style(ProgressStyle::default_bar() + .template("{spinner:.green} [{elapsed_precise}] [{bar:40.cyan/blue}] {pos}/{len} {msg} ({eta})") + .progress_chars("#>-")); + + pb.tick(); + for cap in links_iter.step_by(2) { + let img_path = directory.join(&cap[2]); + if !img_path.exists() { + match save_image( + format!("{}{}", "https:", &cap[1]).as_str(), + img_path.to_str().unwrap(), + client, + ) { + Ok(_) => {} + Err(err) => eprintln!("Error: {}", err), + } + } + pb.set_message(&cap[2].to_string()); + pb.inc(1); } + pb.finish_with_message("Done"); } - pb.set_message(&cap[2].to_string()); - pb.inc(1); + Err(err) => eprintln!("Error: {}", err), } - pb.finish_with_message("Done"); } |