Revert "feat: finish all func"

This reverts commit 4ca1b62979.
This commit is contained in:
2024-01-15 05:09:20 +08:00
parent 4b0ce7d7c7
commit c30b835167
2 changed files with 29 additions and 52 deletions

View File

@@ -7,6 +7,10 @@ authors = ["Smart SangGe <liangjunyong06@gmail.com>"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
<<<<<<< HEAD
clap = "2.33.2" clap = "2.33.2"
indicatif = "0.15" indicatif = "0.15"
console = "0.14" console = "0.14"
=======
clap = "2.26.0"
>>>>>>> parent of 4ca1b62 (feat: finish all func)

View File

@@ -1,4 +1,5 @@
extern crate clap; extern crate clap;
<<<<<<< HEAD
extern crate indicatif; extern crate indicatif;
extern crate console; extern crate console;
@@ -9,6 +10,10 @@ use std::fs::File;
use std::io::{self, Write}; use std::io::{self, Write};
=======
use clap::{Arg, App};
>>>>>>> parent of 4ca1b62 (feat: finish all func)
fn main() { fn main() {
let matches = App::new("Rget") let matches = App::new("Rget")
@@ -21,12 +26,8 @@ fn main() {
.index(1) .index(1)
.help("url to download")) .help("url to download"))
.get_matches(); .get_matches();
let url = matches.value_of("URL").unwrap(); let url = matches.value_of("URL").unwrap();
println!("{}", url);
if let Err(e) = download(url, false) {
eprintln!("Download error: {}", e);
}
} }
fn create_progress_bar(quiet_mode: bool, msg: &str, length: Option<u64>) -> ProgressBar { fn create_progress_bar(quiet_mode: bool, msg: &str, length: Option<u64>) -> ProgressBar {
@@ -52,56 +53,41 @@ fn create_progress_bar(quiet_mode: bool, msg: &str, length: Option<u64>) -> Prog
bar bar
} }
fn download(target: &str, quiet_mode: bool) -> Result<(), Box<dyn (::std::error::Error)>> { fn download(target: &str, quiet_mode: bool) -> Result<(), Box<::std::error::Error>> {
// parse url // parse url
let url = reqwest::Url::parse(target)?; let url = parse_url(target)?;
let client = reqwest::blocking::Client::new(); let client = Client::new().unwrap();
let mut resp = client.get(url).send()?; let mut resp = client.get(url)?
.send()
.unwrap();
print(format!("HTTP request sent... {}",
if !quiet_mode { style(format!("{}", resp.status())).green()),
println!("HTTP request sent... {}", style(resp.status()).green()); quiet_mode);
}
if resp.status().is_success() { if resp.status().is_success() {
let headers = resp.headers().clone(); let headers = resp.headers().clone();
let ct_len = headers.get("content-length") let ct_len = headers.get::<ContentLength>().map(|ct_len| **ct_len);
.and_then(|ct_len| ct_len.to_str().ok())
.and_then(|ct_len_str| ct_len_str.parse::<u64>().ok());
let ct_type = headers.get("content-type")
.and_then(|ct_type| ct_type.to_str().ok())
.unwrap(); // Be cautious with unwrap; it's better to handle None case
let ct_type = headers.get::<ContentType>().unwrap();
match ct_len { match ct_len {
Some(len) => { Some(len) => {
if !quiet_mode { print(format!("Length: {} ({})",
println!("Length: {} ({})", style(len).green(),
style(len).green(), style(format!("{}", HumanBytes(len))).red()),
style(HumanBytes(len)).red()); quiet_mode);
}
}, },
None => { None => {
if !quiet_mode { print(format!("Length: {}", style("unknown").red()), quiet_mode);
println!("Length: {}", style("unknown").red());
}
}, },
} }
print(format!("Type: {}", style(ct_type).green()), quiet_mode);
// Print content type
custom_print(format!("Type: {}", style(ct_type).green()), quiet_mode);
// Get the filename from the URL
let fname = target.split("/").last().unwrap(); let fname = target.split("/").last().unwrap();
// Print saving message print(format!("Saving to: {}", style(fname).green()), quiet_mode);
custom_print(format!("Saving to: {}", style(fname).green()), quiet_mode);
let chunk_size = match ct_len { let chunk_size = match ct_len {
Some(x) => x as usize / 99, Some(x) => x as usize / 99,
@@ -135,16 +121,3 @@ fn download(target: &str, quiet_mode: bool) -> Result<(), Box<dyn (::std::error:
Ok(()) Ok(())
} }
fn save_to_file(data: &[u8], filename: &str) -> io::Result<()> {
let mut file = File::create(filename)?;
file.write_all(data)?;
Ok(())
}
fn custom_print(message: String, quiet_mode: bool) {
if !quiet_mode {
println!("{}", message);
}
}