diff options
Diffstat (limited to 'src/sse.rs')
-rw-r--r-- | src/sse.rs | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -13,10 +13,10 @@ use tokio_stream::StreamExt; use crate::{service::ServiceHandles, Error}; pub fn router() -> Router<ServiceHandles> { - axum::Router::new().route("/:name", get(sse_handler)) + axum::Router::new().route("/:name", get(service_events)) } -pub async fn sse_handler( +pub async fn service_events( Path(name): Path<String>, State(services): State<ServiceHandles>, ) -> Result<Sse<impl Stream<Item = Result<Event, axum::Error>>>, Error> { @@ -24,7 +24,12 @@ pub async fn sse_handler( .get(&name) .ok_or_else(|| Error::ServiceNotFound(name))? .into_stream() - .map(|s| Event::default().json_data(s)); + .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())) } |