takproto 0.4.2

Rust library for TAK (Team Awareness Kit) Protocol - send CoT messages to TAK servers with mTLS support
Documentation
//! Clone of test_attachments but using CotEventBuilder
//!
//! This helps isolate if the issue is with the builder or something else

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");

    // Use EXACT same parameters as test_attachments
    println!("Test: Sending marker with builder (matching test_attachments params)...");
    let event = CotEventBuilder::new()
        .uid("BUILDER-TEST")
        .cot_type("b-m-p-s-m") // Same type as test_attachments
        .lat_lon(39.377445, -76.832160) // Same location as test_attachments
        .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(())
}