orign 0.2.3

A globally distributed container orchestrator
Documentation
// src/commands/trigger_cmd.rs

use orign::config::GlobalConfig;
use reqwest::Client;
use serde_json::Value;
use std::error::Error;

pub async fn trigger_buffer(name: String) -> Result<(), Box<dyn Error>> {
    let parts: Vec<&str> = name.split('/').collect();
    if parts.len() != 2 {
        return Err("You must specify the name in the format 'namespace/name'.".into());
    }
    let (namespace, buffer_name) = (parts[0], parts[1]);

    let client = Client::new();
    let config = GlobalConfig::read()?;
    let server = config.server.unwrap();
    let api_key = config.api_key.as_deref().ok_or("API key not set")?;
    let bearer_token = format!("Bearer {}", api_key);

    let url = format!("{}/v1/buffers/{}/{}/train", server, namespace, buffer_name);
    let response = client
        .post(&url)
        .header("Authorization", bearer_token)
        .send()
        .await?;

    if response.status().is_success() {
        let resp_json: Value = response.json().await?;
        println!("{}", serde_json::to_string_pretty(&resp_json)?);
    } else {
        let error_text = response.text().await?;
        eprintln!("Error triggering buffer: {}", error_text);
    }

    Ok(())
}