mprober 0.10.12

This program aims to collect Linux system information including hostname, kernel version, uptime, RTC time, load average, CPU, memory, network interfaces and block devices. It can be used not only as a normal CLI tool, but also a web application with a front-end webpage and useful HTTP APIs.
use std::collections::HashMap;

use crate::rocket::{Rocket, State};

use crate::rocket_cache_response::CacheResponse;
use crate::rocket_include_handlebars::HandlebarsResponse;
use crate::rocket_json_response::json_gettext::JSONGetTextValue;

const HANDLEBARS_RESOURCES_CACHE_MAX_AGE: u32 = 259_200;

fn handlebars_response(responder: HandlebarsResponse) -> CacheResponse<HandlebarsResponse> {
    CacheResponse::public_only_release(responder, HANDLEBARS_RESOURCES_CACHE_MAX_AGE, false)
}

#[get("/")]
fn index(
    detect_interval: State<super::DetectInterval>,
    auth_key: State<super::AuthKey>,
) -> CacheResponse<HandlebarsResponse> {
    let mut map = HashMap::new();

    map.insert("version", JSONGetTextValue::Str(crate::CARGO_PKG_VERSION));

    map.insert("timeInterval", JSONGetTextValue::from_u64(detect_interval.as_secs()));

    if let Some(auth_key) = auth_key.get_value() {
        map.insert("authKey", JSONGetTextValue::from_str(auth_key));
    }

    handlebars_response(handlebars_response!("index", &map))
}

pub fn rocket_handler(rocket: Rocket) -> Rocket {
    rocket
        .attach(HandlebarsResponse::fairing(|handlebars| {
            handlebars_resources_initialize!(handlebars, "index", "views/index.hbs",);
        }))
        .mount("/", routes![index])
}