use csm_rs::ShastaClient;
use manta_backend_dispatcher::error::Error;
use ochami_rs::backend_connector::Ochami;
#[derive(Clone, Debug)]
#[allow(clippy::upper_case_acronyms)]
pub enum StaticBackendDispatcher {
CSM(ShastaClient),
OCHAMI(Ochami),
}
impl StaticBackendDispatcher {
pub fn backend_kind(&self) -> &'static str {
match self {
Self::CSM(_) => "csm",
Self::OCHAMI(_) => "ochami",
}
}
pub fn new(
backend_type: &str,
base_url: &str,
root_cert: &[u8],
socks5_proxy: Option<&str>,
) -> Result<Self, Error> {
match backend_type {
"csm" => Ok(Self::CSM(ShastaClient::new(
base_url,
root_cert,
socks5_proxy.map(str::to_string),
)?)),
"ochami" => {
Ok(Self::OCHAMI(Ochami::new(base_url, root_cert, socks5_proxy)))
}
_ => Err(Error::UnsupportedBackend(format!(
"Backend '{backend_type}' not supported"
))),
}
}
}