Siwi Download

Download file

Crates.io version License Download docs.rs docs github actions

API Docs

Siwi Download is a downloader build on tokio and reqwest. ## Example > cargo run --example download ```rust use reqwest::header::{HeaderMap, HeaderValue, USER_AGENT}; use siwi_download::{ download::{Download, DownloadOptions}, error::AnyResult, }; use tracing::Level; use tracing_subscriber::FmtSubscriber; #[tokio::main] async fn main() -> AnyResult<()> { let subscriber = FmtSubscriber::builder() .with_max_level(Level::INFO) .finish(); tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed"); let url = "https://nodejs.org/dist/v22.11.0/node-v22.11.0.pkg"; let mut storage_path = std::env::current_dir()?; storage_path.push("storage"); let storage_path = storage_path.to_str().unwrap(); let mut options = DownloadOptions::default(); let mut headers = HeaderMap::new(); headers.insert(USER_AGENT, HeaderValue::from_str("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36")?); options .set_headers(headers) .set_file_name("node-v22.11.0.pkg") .set_show_progress(true); let download = Download::new(storage_path); download.auto_create_storage_path().await?; let report = download.download(url, options).await?; println!("report {:#?}", report); Ok(()) } ``` - Write a CLI tool ```rust use siwi_download::download::Download; use siwi_download::download::DownloadOptions; use siwi_download::error::AnyResult; #[tokio::main] async fn main() -> AnyResult<()> { let args: Vec = std::env::args().collect(); let storage_path = std::env::current_dir()?; let storage_path = storage_path.to_str().unwrap_or(""); if let Some(url) = args.get(1) { let mut options = DownloadOptions::default(); options.set_show_progress(true); let download = Download::new(storage_path); let report = download.download(url, options).await?; println!("{:?}", report); } Ok(()) } ```