takproto 0.4.2

Rust library for TAK (Team Awareness Kit) Protocol - send CoT messages to TAK servers with mTLS support
Documentation
//! Debug what XML is being sent to the server

use takproto::{TakClient, TlsConfigBuilder, CotEventBuilder};
use takproto::helpers::contact;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let args: Vec<String> = std::env::args().collect();
    if args.len() < 6 {
        eprintln!("Usage: {} <server:port> <server_name> <p12_file> <password> <server_cert.pem>", args[0]);
        std::process::exit(1);
    }

    let server_addr = &args[1];
    let server_name = &args[2];
    let p12_file = &args[3];
    let password = &args[4];
    let server_cert = &args[5];

    let tls_config = TlsConfigBuilder::new()
        .with_p12(p12_file, password)?
        .with_additional_root_cert(server_cert)?
        .build()?;

    println!("Connecting...");
    let mut client = TakClient::connect_tls(server_addr, server_name, tls_config).await?;
    println!("✓ Connected\n");

    let event = CotEventBuilder::new()
        .uid("DEBUG-XML-TEST")
        .cot_type("a-f-G-U-C")
        .lat_lon(39.377445, -76.832160)
        .hae(10.0)
        .ce_le(9.9, 9.9)
        .how("m-g")
        .stale_minutes(5)
        .with_contact(contact("DebugTest", None))
        .build()?;

    // Show what we're about to send
    let xml = takproto::xml::encode_cot_event_xml(&event);
    println!("=== XML Being Sent ===");
    println!("{}", xml);
    println!("=== End XML ===\n");
    println!("XML Length: {} bytes\n", xml.len());

    println!("Sending...");
    client.send_cot_event_xml(event).await?;
    println!("✓ Sent (no error)\n");

    println!("Message sent successfully from client perspective.");
    println!("Check server logs to see if it was received.");
    println!("Check iTAK for 'DEBUG-XML-TEST' marker.");

    Ok(())
}