veltrix 0.2.0

General utilities
Documentation
use std::path::PathBuf;

pub const SUPPORTED_CADDY_MAJOR: u64 = 2;

#[derive(Debug, Clone)]
pub enum CaddyAdminEndpoint {
    Http {
        base_url: String,
    },
    UnixSocket {
        socket_path: PathBuf,
    },
}

impl Default for CaddyAdminEndpoint {
    fn default() -> Self {
        Self::Http {
            base_url: "http://localhost:2019".to_string(),
        }
    }
}

#[derive(Debug, Clone)]
#[derive(Default)]
pub struct CaddyAdminSpec {
    pub endpoint: CaddyAdminEndpoint,
}

impl CaddyAdminSpec {
    pub fn new(endpoint: CaddyAdminEndpoint) -> Self {
        Self { endpoint }
    }

    pub fn localhost_default() -> Self {
        Self::default()
    }

    pub fn http(base_url: impl Into<String>) -> Self {
        Self {
            endpoint: CaddyAdminEndpoint::Http {
                base_url: base_url.into(),
            },
        }
    }

    pub fn unix_socket(socket_path: impl Into<PathBuf>) -> Self {
        Self {
            endpoint: CaddyAdminEndpoint::UnixSocket {
                socket_path: socket_path.into(),
            },
        }
    }
}

#[derive(Debug, Clone)]
pub enum CaddyBackendUsed {
    Http {
        base_url: String,
    },
    UnixSocket {
        socket_path: PathBuf,
    },
}

#[derive(Debug, Clone)]
pub struct CaddyResponse<T> {
    pub backend: CaddyBackendUsed,
    pub data: T,
}

#[derive(Debug, Clone)]
pub struct CaddyEmptyResponse {
    pub backend: CaddyBackendUsed,
}