use smop::prelude::*;
#[derive(Parser)]
#[command(name = "fetch_api")]
#[command(about = "Fetch JSON from a URL and display key count")]
struct Args {
#[arg(short, long)]
url: String,
#[arg(short, long)]
verbose: bool,
}
fn main() -> Result<()> {
let args = Args::parse();
if args.verbose {
println!("Fetching from: {}", args.url);
}
let spinner = print::spinner("Fetching data...");
let data: serde_json::Value = http::get_json(&args.url)?;
spinner.finish();
let key_count = data.as_object().map_or(0, |o| o.len());
success!("Got response with {} top-level keys", key_count);
if args.verbose {
println!("{}", serde_json::to_string_pretty(&data)?);
}
Ok(())
}