use std::env;
use takproto::{CotEventBuilder, TakClient, TlsConfig};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let args: Vec<String> = env::args().collect();
if args.len() < 6 {
eprintln!(
"Usage: {} <server_addr> <server_name> <ca_cert> <client_cert> <client_key>",
args[0]
);
std::process::exit(1);
}
let server_addr = &args[1];
let server_name = &args[2];
let ca_cert_path = &args[3];
let client_cert_path = &args[4];
let client_key_path = &args[5];
let tls_config =
TlsConfig::new_with_client_cert(ca_cert_path, client_cert_path, client_key_path)?;
println!("Connecting to TAK server...");
let mut client = TakClient::connect_tls(server_addr, server_name, tls_config).await?;
println!("✓ Connected (XML mode, no negotiation)\n");
println!("Test: Sending marker with builder (matching test_attachments params)...");
let event = CotEventBuilder::new()
.uid("BUILDER-TEST")
.cot_type("b-m-p-s-m") .lat_lon(39.377445, -76.832160) .hae(10.0)
.ce_le(9.9, 9.9)
.how("h-e")
.stale_minutes(5)
.with_xml_detail(r#"<archive/><remarks>Testing builder vs manual</remarks>"#)
.build()?;
println!("Event created:");
println!(" type: {}", event.r#type);
println!(" uid: {}", event.uid);
println!(" lat: {}, lon: {}", event.lat, event.lon);
println!(" how: {}", event.how);
println!(" detail: {:?}", event.detail);
client.send_cot_event_xml(event).await?;
println!("\n✓ Sent!");
println!("\nCheck iTAK for marker 'BUILDER-TEST' near Maryland");
println!("If this shows up, the builder works fine.");
println!("If it doesn't, there's something wrong with how builder creates events.");
Ok(())
}