use async_trait::async_trait;
use crate::engine::models::Server;
use crate::errors::{EngineError, EngineResult};
use super::Provider;
pub struct CustomProvider {
servers: Vec<Server>,
}
impl CustomProvider {
pub fn new(servers: Vec<Server>) -> EngineResult<Self> {
if servers.is_empty() {
return Err(EngineError::InvalidResponse(
"provider \"custom\" requires at least one [[servers]] entry in config.toml"
.to_owned(),
));
}
Ok(Self { servers })
}
}
#[async_trait]
impl Provider for CustomProvider {
fn name(&self) -> &'static str {
"Custom"
}
async fn fetch_servers(&self) -> EngineResult<Vec<Server>> {
Ok(self.servers.clone())
}
}