innisfree 0.4.3

Exposes local services on public IPv4 address, via cloud server.
Documentation
//! Construction helpers for backend cloud providers.
//!
//! Wraps the per-backend setup boilerplate (auth, default sizing) so
//! callers like `main.rs` and the eventual operator binary can stay
//! provider-agnostic and don't have to know which struct goes inside
//! the `Box<dyn Provider>`.

use crate::server::digitalocean::client::DoClient;
use crate::server::digitalocean::provider::DigitalOceanProvider;
use crate::server::digitalocean::server::DropletDefaults;
use crate::server::Provider;

/// Build a [`Provider`] backed by DigitalOcean. `client` carries the
/// API token (typically [`DoClient::from_env`]); `defaults` carries
/// the sizing knobs (region/size/image), usually wired from CLI flags
/// — see [`DropletDefaults`] for the defaults the constants supply.
pub fn digitalocean(client: DoClient, defaults: DropletDefaults) -> Box<dyn Provider> {
    Box::new(DigitalOceanProvider::new(client, defaults))
}