use anyhow::Result;
use async_trait::async_trait;
use crate::server::digitalocean::client::DoClient;
use crate::server::digitalocean::server::Droplet;
use crate::server::{InnisfreeServer, Provider, ServerSpec};
pub struct DigitalOceanProvider {
client: DoClient,
}
impl DigitalOceanProvider {
pub fn new(client: DoClient) -> Self {
Self { client }
}
}
#[async_trait]
impl Provider for DigitalOceanProvider {
async fn create(&self, spec: &ServerSpec) -> Result<Box<dyn InnisfreeServer>> {
let droplet = Droplet::new(self.client.clone(), spec).await?;
Ok(Box::new(droplet))
}
}