use std::path::PathBuf; use serde::{Deserialize, Serialize}; use service::Services; use tower_http::services::ServeDir; pub use crate::error::{Error, Result}; pub mod api; pub mod error; pub mod service; #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "lowercase", tag = "status", content = "output")] pub enum Status { #[default] Pass, Fail(Option), Warn(Option), } impl From for Status { fn from(value: T) -> Self { Status::Fail(Some(value.to_string())) } } impl axum::response::IntoResponse for Status { fn into_response(self) -> axum::response::Response { axum::Json(self).into_response() } } pub fn router(root: PathBuf) -> axum::Router { axum::Router::new() .nest_service("/", ServeDir::new(root)) .nest("/api", api::router()) .layer(tower_http::trace::TraceLayer::new_for_http()) }