use clap::Parser;
use std::io::Write;
use viuer::{print_from_file, Config};
#[derive(Parser, Debug)]
struct Cli {
#[clap(short = 'd', long = "data")]
data: String,
#[clap(short = 'o', long = "output", default_value = ".")]
#[clap(parse(from_os_str))]
output: std::path::PathBuf,
#[clap(short = 's')]
#[clap(long = "show")]
display: bool,
}
fn main() {
let args = Cli::parse();
let res = reqwest::blocking::get(format!("https://api.dhravya.me/qrcode?query={}", args.data).as_str());
if res.is_err() {
println!("Error: {}", res.err().unwrap());
return;
}
let body = res.unwrap().bytes().unwrap();
let mut file_ = std::fs::File::create(args.output.join("qrcode.png")).unwrap();
file_.write_all(&body).unwrap();
let conf = Config {
x: 4,
y: 4,
width: Some(80),
height: Some(40),
..Default::default()
};
println!("QR code saved to {}", args.output.join("qrcode.png").display());
if args.display {
print_from_file(args.output.join("qrcode.png").to_str().unwrap(), &conf).expect("Image printing failed.");
}
}