use crate::dsh_api_client::DshApiClient;
use crate::error::DshApiResult;
use crate::types::KafkaProxy;
use crate::DependantProxy;
#[allow(unused_imports)]
use crate::DshApiError;
use futures::future::try_join_all;
use itertools::Itertools;
impl DshApiClient {
pub async fn proxies(&self) -> DshApiResult<Vec<(String, KafkaProxy)>> {
let proxy_ids = self.get_kafkaproxy_ids().await?;
let proxies = try_join_all(proxy_ids.iter().map(|proxy_id| self.get_kafkaproxy_configuration(proxy_id))).await?;
Ok(proxy_ids.into_iter().zip(proxies).collect_vec())
}
pub async fn proxies_dependant_on_certificate(&self, certificate_id: &str) -> DshApiResult<Vec<DependantProxy>> {
Ok(
proxies_that_use_certificate(certificate_id, &self.proxies().await?)
.into_iter()
.map(|(proxy_id, proxy)| DependantProxy::new(proxy_id.to_string(), proxy.instances.get()))
.collect_vec(),
)
}
pub async fn proxies_dependant_on_secret(&self, secret_name: &str) -> DshApiResult<Vec<DependantProxy>> {
Ok(
proxies_that_use_secret(secret_name, &self.proxies().await?)
.into_iter()
.map(|(proxy_id, proxy)| DependantProxy::new(proxy_id.to_string(), proxy.instances.get()))
.collect_vec(),
)
}
}
pub fn proxies_that_use_certificate<'a>(certificate_id: &str, proxies: &'a [(String, KafkaProxy)]) -> Vec<(&'a str, &'a KafkaProxy)> {
proxies
.iter()
.filter(|(_, proxy)| proxy.certificate == certificate_id)
.map(|(proxy_id, proxy)| (proxy_id.as_str(), proxy))
.collect_vec()
}
pub fn proxies_that_use_secret<'a>(secret_name: &str, proxies: &'a [(String, KafkaProxy)]) -> Vec<(&'a str, &'a KafkaProxy)> {
proxies
.iter()
.filter(|(_, proxy)| proxy.secret_name_ca_chain == secret_name)
.map(|(proxy_id, proxy)| (proxy_id.as_str(), proxy))
.collect_vec()
}