relay_server/endpoints/
batch_metrics.rs1use axum::http::StatusCode;
2use axum::response::IntoResponse;
3use serde::{Deserialize, Serialize};
4
5use crate::extractors::{ReceivedAt, SignedBytes};
6use crate::service::ServiceState;
7use crate::services::processor::{BucketSource, ProcessBatchedMetrics};
8
9#[derive(Debug, Serialize, Deserialize)]
10struct SendMetricsResponse {}
11
12pub async fn handle(
13 state: ServiceState,
14 ReceivedAt(received_at): ReceivedAt,
15 body: SignedBytes,
16) -> impl IntoResponse {
17 if !body.relay.internal {
18 return StatusCode::FORBIDDEN.into_response();
19 }
20
21 state.processor().send(ProcessBatchedMetrics {
22 payload: body.body,
23 source: BucketSource::Internal,
24 received_at,
25 sent_at: None,
26 });
27
28 (StatusCode::ACCEPTED, axum::Json(SendMetricsResponse {})).into_response()
29}