diff options
author | Toby Vincent <tobyv@tobyvin.dev> | 2024-10-01 13:15:24 -0500 |
---|---|---|
committer | Toby Vincent <tobyv@tobyvin.dev> | 2024-10-01 13:15:24 -0500 |
commit | fe16a923190243dfde5db6ceff2ef0bcf9158926 (patch) | |
tree | 9b8b616e1972ca3ef6e28d29c980899af3ddde49 /src/sse.rs | |
parent | e1d9c956beb6921b0d549248bea3a6853fde5f46 (diff) |
feat: simplify service status type
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())) } |