pulsar-admin 0.0.2

A Rust-based HTTP client for interacting with the Apache Pulsar REST API
Documentation
use std::error::Error;

use crate::inner_http_client::InnerHttpClient;
use crate::url_constants::URL_TENANTS;

pub struct Tenants<'a> {
    inner_http_client: &'a InnerHttpClient,
}

impl<'a> Tenants<'a> {
    pub fn new(inner_http_client: &'a InnerHttpClient) -> Self {
        Tenants { inner_http_client }
    }

    pub async fn list_tenants(&self) -> Result<Vec<String>, Box<dyn Error>> {
        let response = self.inner_http_client.get(URL_TENANTS).await?;
        let tenants: Vec<String> = serde_json::from_str(&response)?;
        Ok(tenants)
    }
}

#[cfg(test)]
mod tests {
    use crate::PulsarAdmin;

    const PULSAR_HOST: &str = "127.0.0.1";
    const PULSAR_PORT: u16 = 8080;

    #[tokio::test]
    async fn test_get_tenants() {
        let pulsar_admin = PulsarAdmin::new(PULSAR_HOST, PULSAR_PORT, None);
        let tenants_api = pulsar_admin.tenants();
        let tenants = tenants_api.list_tenants().await.unwrap();
        assert!(!tenants.is_empty(), "Tenants list should not be empty");
    }
}