use std::thread::sleep; use std::time::Duration; use clap::Parser; use log::{error, info}; use anyhow::Result; use env_logger::Env; /// Implements a client that constantly refreshes with the server. #[derive(Parser, Debug)] #[command(version, about, long_about = None)] struct Args { /// The skubelb server we should register with #[arg(short, long)] server: String, /// The listen address that should be sent to skubelb. #[arg(short, long)] listen: String, } fn main() { // Log info and above by default env_logger::Builder::from_env(Env::default().default_filter_or("info")).init(); let args = Args::parse(); match handle(&args.server, &args.listen) { Ok(_) => (), Err(e) => error!("{}", e), } } fn handle(remote: &str, listen: &str) -> Result<()> { let client = reqwest::blocking::Client::new(); let url = format!("http://{}/register/{}", remote, listen); loop { sleep(Duration::from_secs(20)); info!("sending post to {}", url); client.post(&url).send()?; } }