mirror of
https://github.com/moghtech/komodo.git
synced 2026-09-12 08:01:04 +00:00
45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
use axum::{
|
|
routing::{get, post},
|
|
Extension, Json, Router,
|
|
};
|
|
use helpers::{
|
|
docker::{self, DockerExtension},
|
|
handle_anyhow_error,
|
|
};
|
|
use serde::Deserialize;
|
|
|
|
use crate::response;
|
|
|
|
#[derive(Deserialize, Clone)]
|
|
pub struct NetworkReqBody {
|
|
name: String,
|
|
driver: Option<String>,
|
|
}
|
|
|
|
pub fn router() -> Router {
|
|
Router::new()
|
|
.route(
|
|
"/list",
|
|
get(|Extension(docker): DockerExtension| async move {
|
|
let networks = docker.list_networks().await.map_err(handle_anyhow_error)?;
|
|
response!(Json(networks))
|
|
}),
|
|
)
|
|
.route(
|
|
"/create",
|
|
post(|Json(body): Json<NetworkReqBody>| async move {
|
|
Json(docker::create_network(&body.name, body.driver).await)
|
|
}),
|
|
)
|
|
.route(
|
|
"/delete",
|
|
post(|Json(body): Json<NetworkReqBody>| async move {
|
|
Json(docker::delete_network(&body.name).await)
|
|
}),
|
|
)
|
|
.route(
|
|
"/prune",
|
|
post(|| async move { Json(docker::prune_networks().await) }),
|
|
)
|
|
}
|