v0.36.1
This commit is contained in:
1 parent
672c84bc13
commit
6f52ac3d00
38 files changed
+1183
-221
No files matched your search
@@ -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),
|
||||
))
|
||||
},
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user