squarecloud 0.2.0

Async Rust client for the SquareCloud API
Documentation
pub mod deploys;
pub mod envs;
pub mod files;
pub mod network;
pub mod snapshots;

use super::Endpoint;
use reqwest::Method;

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "post",
    path: "/apps",
    domain: "UploadErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::UploadErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "get",
    path: "/apps/status",
    domain: "AppErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::AppErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "get",
    path: "/apps/domains",
    domain: "NetworkErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::NetworkErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "get",
    path: "/apps/load-balancers",
    domain: "NetworkErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::NetworkErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "get",
    path: "/apps/{app_id}",
    domain: "AppErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::AppErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "delete",
    path: "/apps/{app_id}",
    domain: "AppErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::AppErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "get",
    path: "/apps/{app_id}/status",
    domain: "AppErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::AppErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "get",
    path: "/apps/{app_id}/logs",
    domain: "AppErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::AppErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "get",
    path: "/apps/{app_id}/metrics",
    domain: "AppErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::AppErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "get",
    path: "/apps/{app_id}/realtime",
    domain: "AppErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::AppErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "post",
    path: "/apps/{app_id}/start",
    domain: "AppErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::AppErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "post",
    path: "/apps/{app_id}/restart",
    domain: "AppErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::AppErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "post",
    path: "/apps/{app_id}/stop",
    domain: "AppErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::AppErrorCode>,
    }
}

#[cfg(feature = "test-utils")]
inventory::submit! {
    crate::EndpointSpec {
    method: "post",
    path: "/apps/{app_id}/commit",
    domain: "UploadErrorCode",
    known_code: crate::errors::code_is_known::<crate::errors::UploadErrorCode>,
    }
}

impl Endpoint {
    pub(crate) fn upload_app() -> Endpoint {
        Self::builder("/apps", Method::POST).build()
    }

    pub(crate) fn all_apps_status() -> Endpoint {
        Self::builder("/apps/status", Method::GET).build()
    }

    pub(crate) fn app_info(app_id: &str) -> Endpoint {
        Self::builder("/apps/{app_id}", Method::GET)
            .param("app_id", app_id)
            .build()
    }

    pub(crate) fn app_status(app_id: &str) -> Endpoint {
        Self::builder("/apps/{app_id}/status", Method::GET)
            .param("app_id", app_id)
            .build()
    }

    pub(crate) fn app_logs(app_id: &str) -> Endpoint {
        Self::builder("/apps/{app_id}/logs", Method::GET)
            .param("app_id", app_id)
            .build()
    }

    pub(crate) fn sse_realtime_app_logs(app_id: &str) -> Endpoint {
        Self::builder("/apps/{app_id}/realtime", Method::GET)
            .param("app_id", app_id)
            .build()
    }

    pub(crate) fn app_start(app_id: &str) -> Endpoint {
        Self::builder("/apps/{app_id}/start", Method::POST)
            .param("app_id", app_id)
            .build()
    }

    pub(crate) fn app_restart(app_id: &str) -> Endpoint {
        Self::builder("/apps/{app_id}/restart", Method::POST)
            .param("app_id", app_id)
            .build()
    }

    pub(crate) fn app_stop(app_id: &str) -> Endpoint {
        Self::builder("/apps/{app_id}/stop", Method::POST)
            .param("app_id", app_id)
            .build()
    }

    pub(crate) fn app_commit(app_id: &str, path: Option<&str>) -> Endpoint {
        let mut b = Self::builder("/apps/{app_id}/commit", Method::POST)
            .param("app_id", app_id);
        if let Some(path) = path {
            b = b.query("path", path);
        }
        b.build()
    }

    pub(crate) fn app_delete(app_id: &str) -> Endpoint {
        Self::builder("/apps/{app_id}", Method::DELETE)
            .param("app_id", app_id)
            .build()
    }

    pub(crate) fn app_domains() -> Endpoint {
        Self::builder("/apps/domains", Method::GET).build()
    }

    pub(crate) fn app_load_balancers() -> Endpoint {
        Self::builder("/apps/load-balancers", Method::GET).build()
    }

    pub(crate) fn app_metrics(app_id: &str) -> Endpoint {
        Self::builder("/apps/{app_id}/metrics", Method::GET)
            .param("app_id", app_id)
            .build()
    }
}