aboutsummaryrefslogtreecommitdiff
path: root/src/api/routes/stats/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/routes/stats/mod.rs')
-rw-r--r--src/api/routes/stats/mod.rs25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/api/routes/stats/mod.rs b/src/api/routes/stats/mod.rs
index a58e4b3..f7af6e8 100644
--- a/src/api/routes/stats/mod.rs
+++ b/src/api/routes/stats/mod.rs
@@ -4,12 +4,33 @@
pub mod structures;
use rocket_contrib::json::Json;
+use sysinfo::{get_current_pid, ProcessExt, System, SystemExt};
-use crate::api::routes::stats::structures::Statistics;
+use crate::{
+ api::routes::stats::structures::{Statistics, StatisticsProcess, StatisticsSystem},
+ utils::system::seconds_to_hrtime,
+};
+// This is mostly for developmental testing, it consumes more CPU than it's
+// worth.
#[get("/statistics")]
pub fn statistics() -> Json<Statistics> {
+ let mut sys = System::new_all();
+ sys.refresh_all();
+
+ let process = sys.get_process(get_current_pid().unwrap()).unwrap();
+
Json(Statistics {
- message: "todo".to_string(),
+ system: StatisticsSystem {
+ os_type: sys.get_name().unwrap(),
+ release: sys.get_kernel_version().unwrap(),
+ uptime: seconds_to_hrtime(sysinfo::System::new().get_uptime() as usize),
+ },
+ process: StatisticsProcess {
+ memory_usage: (process.memory() / 1000).to_string(),
+ // (process.cpu_usage() * 100.0).round() / 100.0
+ cpu_usage: (process.cpu_usage() / sys.get_processors().len() as f32).to_string(),
+ // uptime: seconds_to_hrtime((sys.get_uptime() - process.start_time()) as usize),
+ },
})
}