feat(apievent): added hs latency to api event (#2734)

Co-authored-by: Sampras lopes <lsampras@pm.me>
This commit is contained in:
harsh-sharma-juspay
2023-11-13 15:58:29 +05:30
committed by GitHub
parent 8e538dbd5c
commit c124511052
2 changed files with 18 additions and 0 deletions

View File

@ -38,6 +38,7 @@ pub struct ApiEvent {
response: Option<serde_json::Value>,
#[serde(flatten)]
event_type: ApiEventsType,
hs_latency: Option<u128>,
}
impl ApiEvent {
@ -49,6 +50,7 @@ impl ApiEvent {
status_code: i64,
request: serde_json::Value,
response: Option<serde_json::Value>,
hs_latency: Option<u128>,
auth_type: AuthenticationType,
event_type: ApiEventsType,
http_req: &HttpRequest,
@ -72,6 +74,7 @@ impl ApiEvent {
.and_then(|user_agent_value| user_agent_value.to_str().ok().map(ToOwned::to_owned)),
url_path: http_req.path().to_string(),
event_type,
hs_latency,
}
}
}

View File

@ -830,6 +830,7 @@ where
.as_millis();
let mut serialized_response = None;
let mut overhead_latency = None;
let status_code = match output.as_ref() {
Ok(res) => {
if let ApplicationResponse::Json(data) = res {
@ -839,6 +840,19 @@ where
.attach_printable("Failed to serialize json response")
.change_context(errors::ApiErrorResponse::InternalServerError.switch())?,
);
} else if let ApplicationResponse::JsonWithHeaders((data, headers)) = res {
serialized_response.replace(
masking::masked_serialize(&data)
.into_report()
.attach_printable("Failed to serialize json response")
.change_context(errors::ApiErrorResponse::InternalServerError.switch())?,
);
if let Some((_, value)) = headers.iter().find(|(key, _)| key == X_HS_LATENCY) {
if let Ok(external_latency) = value.parse::<u128>() {
overhead_latency.replace(external_latency);
}
}
}
event_type = res.get_api_event_type().or(event_type);
@ -854,6 +868,7 @@ where
status_code,
serialized_request,
serialized_response,
overhead_latency,
auth_type,
event_type.unwrap_or(ApiEventsType::Miscellaneous),
request,