From cd774827dd14f68d8405c45d2d9da30b3fab050e Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Sat, 28 Sep 2024 00:54:46 -0500 Subject: feat: refactor into pub-sub and impl SSE --- src/lib.rs | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 1ccecf7..d24f635 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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 { + 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), Warn(Option), + Fail(Option), + #[default] + Unknown, +} + +impl Status { + pub fn update(&mut self, status: Status) -> bool { + let modif = *self != status; + if modif { + *self = status; + } + modif + } } impl From for Status { @@ -30,10 +45,3 @@ impl axum::response::IntoResponse for Status { 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()) -} -- cgit v1.2.3-70-g09d2