summaryrefslogtreecommitdiffstats
path: root/src/sse.rs
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2024-10-01 13:15:24 -0500
committerToby Vincent <tobyv@tobyvin.dev>2024-10-01 13:15:24 -0500
commitfe16a923190243dfde5db6ceff2ef0bcf9158926 (patch)
tree9b8b616e1972ca3ef6e28d29c980899af3ddde49 /src/sse.rs
parente1d9c956beb6921b0d549248bea3a6853fde5f46 (diff)
feat: simplify service status type
Diffstat (limited to 'src/sse.rs')
-rw-r--r--src/sse.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/sse.rs b/src/sse.rs
index b4a8840..88befd1 100644
--- a/src/sse.rs
+++ b/src/sse.rs
@@ -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()))
}