mirror of
https://github.com/DaLaw2/NetGuardia.git
synced 2026-08-24 22:20:28 +09:00
30 lines
1.0 KiB
Rust
30 lines
1.0 KiB
Rust
use actix_web::{HttpResponse, Responder, Scope, web};
|
|
|
|
use crate::core::common::statistics::FlowStatistics;
|
|
use crate::interface::port::drop_stats::DropStatsPort;
|
|
|
|
pub fn initialize() -> Scope {
|
|
web::scope("/stats")
|
|
.route("/flows", web::get().to(get_all_flows))
|
|
.route("/flows/top/{n}", web::get().to(get_top_flows))
|
|
.route("/summary", web::get().to(get_summary))
|
|
.route("/drops", web::get().to(get_drop_stats))
|
|
}
|
|
|
|
async fn get_all_flows(stats: web::Data<FlowStatistics>) -> impl Responder {
|
|
HttpResponse::Ok().json(stats.get_all_flows())
|
|
}
|
|
|
|
async fn get_top_flows(stats: web::Data<FlowStatistics>, path: web::Path<usize>) -> impl Responder {
|
|
let n = path.into_inner();
|
|
HttpResponse::Ok().json(stats.get_top_flows(n))
|
|
}
|
|
|
|
async fn get_summary(stats: web::Data<FlowStatistics>) -> impl Responder {
|
|
HttpResponse::Ok().json(stats.get_summary())
|
|
}
|
|
|
|
async fn get_drop_stats(monitor: web::Data<dyn DropStatsPort>) -> impl Responder {
|
|
HttpResponse::Ok().json(monitor.get_counters())
|
|
}
|