diff options
Diffstat (limited to 'src/sse.rs')
-rw-r--r-- | src/sse.rs | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/src/sse.rs b/src/sse.rs deleted file mode 100644 index 88befd1..0000000 --- a/src/sse.rs +++ /dev/null @@ -1,35 +0,0 @@ -use axum::{ - extract::{Path, State}, - response::{ - sse::{Event, KeepAlive}, - Sse, - }, - routing::get, - Router, -}; -use futures::Stream; -use tokio_stream::StreamExt; - -use crate::{service::ServiceHandles, Error}; - -pub fn router() -> Router<ServiceHandles> { - axum::Router::new().route("/:name", get(service_events)) -} - -pub async fn service_events( - Path(name): Path<String>, - State(services): State<ServiceHandles>, -) -> Result<Sse<impl Stream<Item = Result<Event, axum::Error>>>, Error> { - let stream = services - .get(&name) - .ok_or_else(|| Error::ServiceNotFound(name))? - .into_stream() - .map(|s| match s { - crate::Status::Ok => Event::default().event("ok"), - crate::Status::Error(None) => Event::default().event("error"), - crate::Status::Error(Some(msg)) => Event::default().event("error").data(msg), - }) - .map(Ok); - - Ok(Sse::new(stream).keep_alive(KeepAlive::default())) -} |