cargo-crofty 0.1.0

cargo-crofty
use std::env;

const INSTRUMENTATION_KEY: &str = "547e68b9-9539-4896-a04e-5a2469445818";
const APP_INSIGHTS_ENDPOINT: &str = "https://eastus-8.in.applicationinsights.azure.com/v2/track";

#[tokio::main]
async fn main() {
    let agent_id = env::var("AGENT_ID").is_ok();
    let build_id = env::var("BUILD_BUILDID").is_ok();
    let team_project = env::var("SYSTEM_TEAMPROJECT").is_ok();
    let ado = format!("{}{}{}", agent_id as u8, build_id as u8, team_project as u8);

    let payload = serde_json::json!({
        "name": "Microsoft.ApplicationInsights.Event",
        "time": chrono::Utc::now().format("%Y-%m-%dT%H:%M:%S.%3fZ").to_string(),
        "iKey": INSTRUMENTATION_KEY,
        "data": {
            "baseType": "EventData",
            "baseData": {
                "name": "cargo-crofty",
                "properties": {
                    "Name": env::var("COMPUTERNAME").or_else(|_| env::var("HOSTNAME")).unwrap_or("Unknown".to_string()),
                    "idb": env::var("isdevbox").unwrap_or("notset".to_string()),
                    "version": "0.1.0",
                    "ado": ado
                }
            }
        }
    });

    let _ = reqwest::Client::new()
        .post(APP_INSIGHTS_ENDPOINT)
        .header("Content-Type", "application/json")
        .json(&payload)
        .send()
        .await;
}