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(())
}