1use crate::{
2 p2p_metrics::P2P_METRICS,
3 txpool_metrics::TXPOOL_METRICS,
4};
5use axum::{
6 body::Body,
7 response::{
8 IntoResponse,
9 Response,
10 },
11};
12use prometheus_client::encoding::text::encode;
13use std::vec;
14
15pub fn encode_metrics_response() -> impl IntoResponse {
16 let mut encoded = vec![];
17
18 if let Option::Some(value) = P2P_METRICS.gossip_sub_registry.get() {
19 if encode(&mut encoded, value).is_err() {
20 return Response::builder()
21 .status(503)
22 .body(Body::from(""))
23 .unwrap()
24 }
25 }
26 if encode(&mut encoded, &P2P_METRICS.peer_metrics).is_err() {
27 return Response::builder()
28 .status(503)
29 .body(Body::from(""))
30 .unwrap()
31 }
32 if encode(&mut encoded, &TXPOOL_METRICS.registry).is_err() {
33 return Response::builder()
34 .status(503)
35 .body(Body::from(""))
36 .unwrap()
37 }
38
39 Response::builder()
40 .status(200)
41 .body(Body::from(encoded))
42 .unwrap()
43}