diff --git a/Cargo.lock b/Cargo.lock index 8e865d1..51d6e34 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -526,16 +526,6 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" -[[package]] -name = "lock_api" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" -dependencies = [ - "autocfg", - "scopeguard", -] - [[package]] name = "log" version = "0.4.20" @@ -661,29 +651,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.48.5", -] - [[package]] name = "percent-encoding" version = "2.3.1" @@ -697,7 +664,6 @@ dependencies = [ "anyhow", "clap", "reqwest", - "tokio", ] [[package]] @@ -820,12 +786,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - [[package]] name = "security-framework" version = "2.9.2" @@ -892,15 +852,6 @@ dependencies = [ "serde", ] -[[package]] -name = "signal-hook-registry" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" -dependencies = [ - "libc", -] - [[package]] name = "slab" version = "0.4.9" @@ -910,12 +861,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "smallvec" -version = "1.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" - [[package]] name = "socket2" version = "0.5.5" @@ -1003,25 +948,11 @@ dependencies = [ "libc", "mio", "num_cpus", - "parking_lot", "pin-project-lite", - "signal-hook-registry", "socket2", - "tokio-macros", "windows-sys 0.48.0", ] -[[package]] -name = "tokio-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "tokio-native-tls" version = "0.3.1" diff --git a/Cargo.toml b/Cargo.toml index a17e0a8..1733da1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,5 +8,4 @@ edition = "2021" [dependencies] anyhow = "1.0.79" clap = { version = "4.4.13", features = ["derive"] } -reqwest = { version = "0.11.23", features = ["gzip", "stream"] } -tokio = { version = "1.35.1", features = ["full"] } +reqwest = { version = "0.11.23", features = ["gzip", "stream", "blocking"] } diff --git a/src/main.rs b/src/main.rs index e818eea..64ff22c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,9 @@ -use std::{ffi::OsStr, path::Path}; +use std::{ffi::OsStr, path::PathBuf}; use anyhow::{anyhow, Result}; use clap::Parser; use reqwest::StatusCode; -use tokio::fs::File; +use std::{fs::File, io}; #[derive(Parser, Debug)] struct Args { @@ -17,33 +17,40 @@ struct Args { key: String, } -#[tokio::main] -async fn main() -> Result<()> { +fn main() -> Result<()> { let args = Args::parse(); - let path = Path::new(&args.path); + let path = if args.path == "-" { + let mut line = String::new(); + io::stdin().read_line(&mut line)?; + line.trim().into() + } else { + args.path + }; - let file = File::open(&path).await?; + let path = PathBuf::from(&path); - let client = reqwest::Client::new(); + let file = File::open(&path)?; + + let client = reqwest::blocking::Client::new(); let res = client .post(args.url) .query(&[( "name".to_string(), - &path.file_name() + &path + .file_name() .and_then(OsStr::to_str) .unwrap_or_default() .to_string(), )]) .query(&[("key".to_string(), &args.key)]) .body(file) - .send() - .await?; + .send()?; match res.status() { StatusCode::OK => { - println!("{}", res.text().await?); + println!("{}", res.text()?); Ok(()) } StatusCode::FORBIDDEN => Err(anyhow!("failed: invalid upload key! (403)")),