aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariot Tsitoara <[email protected]>2021-01-02 01:23:38 +0100
committerMariot Tsitoara <[email protected]>2021-01-02 01:23:38 +0100
commit0bb216b8f5f6010b0f68103b1011c6a024da0dae (patch)
tree8842ab2735bb8e1a5c70f9e81db25984b96d71ae
parentUpgrade dependencies (diff)
downloadchan-downloader-0bb216b8f5f6010b0f68103b1011c6a024da0dae.tar.xz
chan-downloader-0bb216b8f5f6010b0f68103b1011c6a024da0dae.zip
Upgrade reqwest version
-rw-r--r--Cargo.toml2
-rw-r--r--src/main.rs78
2 files changed, 38 insertions, 42 deletions
diff --git a/Cargo.toml b/Cargo.toml
index dd9eb88..46cebff 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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");
}