This commit is contained in:
Mateusz Gruszczyński committed 2026-11-07 13:56:11 +01:00
1 parent 672c84bc13
commit 6f52ac3d00
38 files changed
+1183 -221

No files matched your search

+10 -5
View File
@@ -171,6 +171,7 @@ async fn metrics_summary(State(state): State<Arc<App>>) -> Response {
#[serde(default, deny_unknown_fields)]
struct EventsQuery {
interval: Option<u64>,
logs: Option<bool>,
}
async fn events(
@@ -179,6 +180,7 @@ async fn events(
Query(query): Query<EventsQuery>,
) -> Result<Response, ApiError> {
let interval = query.interval.unwrap_or(3);
let include_logs = query.logs.unwrap_or(true);
if ![1, 2, 3, 5, 10].contains(&interval) {
return Err(ApiError(
StatusCode::UNPROCESSABLE_ENTITY,
@@ -198,8 +200,8 @@ async fn events(
)
})?;
let stream = futures_util::stream::unfold(
(state, secret, permit, false, interval),
|(state, secret, permit, delayed, interval)| async move {
(state, secret, permit, false, interval, include_logs),
|(state, secret, permit, delayed, interval, include_logs)| async move {
if delayed {
tokio::time::sleep(Duration::from_secs(interval)).await;
}
@@ -218,13 +220,16 @@ async fn events(
Ok(Some(_)) => {}
_ => return None,
}
let payload =
let payload = if include_logs {
json!({"status":live_status_payload(&state), "logs":logs_payload(&state)})
.to_string();
} else {
json!({"status":live_status_payload(&state)})
}
.to_string();
let event = Event::default().event("snapshot").data(payload);
Some((
Ok::<Event, Infallible>(event),
(state, secret, permit, true, interval),
(state, secret, permit, true, interval, include_logs),
))
},
);