orign 0.2.3

A globally distributed container orchestrator
Documentation
use orign::config::GlobalConfig;
use reqwest::Client;
use std::error::Error;

pub async fn delete_deployment(id: String) -> Result<(), Box<dyn Error>> {
    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/deployments/{}", server, id.trim());
    let response = client
        .delete(&url)
        .header("Authorization", bearer_token)
        .send()
        .await?;

    if response.status().is_success() {
        println!("Deployment deleted successfully");
    } else {
        let error_text = response.text().await?;
        eprintln!("Error: {}", error_text);
    }

    Ok(())
}

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

    // Create an HTTP client
    let client = Client::new();

    // Read global config — server URL and API key
    let config = GlobalConfig::read()?;
    let server = config.server.ok_or("Server URL not set in config")?;
    let api_key = config.api_key.as_deref().ok_or("API key not set")?;

    // Prepare the Authorization header
    let bearer_token = format!("Bearer {}", api_key);

    // Construct the final URL, e.g., https://<SERVER>/v1/buffers/<namespace>/<name>
    let url = format!("{}/v1/buffers/{}/{}", server, namespace, name);

    // Fire off the DELETE request
    let response = client
        .delete(&url)
        .header("Authorization", bearer_token)
        .send()
        .await?;

    // Handle the response
    if response.status().is_success() {
        println!("Buffer deleted successfully.");
    } else {
        let error_text = response.text().await?;
        eprintln!("Error while deleting buffer: {}", error_text);
    }

    Ok(())
}

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

    // Create an HTTP client
    let client = Client::new();

    // Read global config — server URL and API key
    let config = GlobalConfig::read()?;
    let server = config.server.ok_or("Server URL not set in config")?;
    let api_key = config.api_key.as_deref().ok_or("API key not set")?;

    // Prepare the Authorization header
    let bearer_token = format!("Bearer {}", api_key);

    // Construct the final URL, e.g., https://<SERVER>/v1/adapters/<namespace>/<name>
    let url = format!("{}/v1/adapters/{}/{}", server, namespace, name);

    // Fire off the DELETE request
    let response = client
        .delete(&url)
        .header("Authorization", bearer_token)
        .send()
        .await?;

    // Handle the response
    if response.status().is_success() {
        println!("Adapter deleted successfully.");
    } else {
        let error_text = response.text().await?;
        eprintln!("Error while deleting adapter: {}", error_text);
    }

    Ok(())
}