Files
harmony/opnsense-api/examples/firmware_info.rs
Jean-Gabriel Gill-Couture da90dc55ad
Some checks failed
Run Check Script / check (pull_request) Failing after 19s
chore: cargo fmt across workspace
2026-03-25 23:20:57 -04:00

41 lines
1.1 KiB
Rust

//! Example: fetch and display OPNsense firmware/version information.
//!
//! ```text
//! cargo run --example firmware_info
//! ```
use std::env;
use opnsense_api::client::OpnsenseClient;
#[tokio::main]
async fn main() {
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
let base_url =
env::var("OPNSENSE_BASE_URL").unwrap_or_else(|_| "https://192.168.1.1/api".to_string());
let client = match (
env::var("OPNSENSE_API_KEY").ok(),
env::var("OPNSENSE_API_SECRET").ok(),
) {
(Some(key), Some(secret)) => OpnsenseClient::builder()
.base_url(&base_url)
.auth_from_key_secret(&key, &secret)
.skip_tls_verify()
.build()
.expect("failed to build HTTP client"),
_ => {
eprintln!("ERROR: OPNSENSE_API_KEY and OPNSENSE_API_SECRET must be set.");
std::process::exit(1);
}
};
let resp: serde_json::Value = client
.get_typed("core", "firmware", "status")
.await
.expect("API call failed");
println!("{}", serde_json::to_string_pretty(&resp).unwrap());
}