diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 36 |
1 files changed, 22 insertions, 14 deletions
@@ -1,22 +1,37 @@ -use std::path::PathBuf; - use serde::{Deserialize, Serialize}; -use service::Services; -use tower_http::services::ServeDir; +use service::ServiceHandles; pub use crate::error::{Error, Result}; pub mod api; pub mod error; pub mod service; +pub mod sse; + +pub fn router() -> axum::Router<ServiceHandles> { + axum::Router::new() + .nest("/api", api::router()) + .nest("/sse", sse::router()) +} -#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] #[serde(rename_all = "lowercase", tag = "status", content = "output")] pub enum Status { - #[default] Pass, - Fail(Option<String>), Warn(Option<String>), + Fail(Option<String>), + #[default] + Unknown, +} + +impl Status { + pub fn update(&mut self, status: Status) -> bool { + let modif = *self != status; + if modif { + *self = status; + } + modif + } } impl<T: std::error::Error> From<T> for Status { @@ -30,10 +45,3 @@ impl axum::response::IntoResponse for Status { axum::Json(self).into_response() } } - -pub fn router(root: PathBuf) -> axum::Router<Services> { - axum::Router::new() - .nest_service("/", ServeDir::new(root)) - .nest("/api", api::router()) - .layer(tower_http::trace::TraceLayer::new_for_http()) -} |