98 lines
3.5 KiB
Rust
98 lines
3.5 KiB
Rust
//! Helper routes for pinging services to check that they are active
|
|
|
|
use rocket_contrib::json::{Json, JsonValue};
|
|
use log::{debug, info, warn};
|
|
use percent_encoding::percent_decode;
|
|
use rocket::http::RawStr;
|
|
use rocket::request::{FlashMessage, Form};
|
|
use rocket::response::{Flash, NamedFile, Redirect};
|
|
use rocket::{catch, get, post, uri};
|
|
use rocket::request::FromForm;
|
|
use rocket::UriDisplayQuery;
|
|
use rocket_contrib::templates::Template;
|
|
use serde::Serialize;
|
|
|
|
use crate::utils::{build_json_response, JsonResponse};
|
|
|
|
use peach_lib::dyndns_client::{get_dyndns_subdomain, is_dns_updater_online};
|
|
use peach_lib::network_client;
|
|
use peach_lib::network_client::{AccessPoint, Networks, Scan};
|
|
use peach_lib::oled_client;
|
|
use peach_lib::sbot_client;
|
|
use peach_lib::stats_client;
|
|
use peach_lib::stats_client::{CpuStatPercentages, DiskUsage, LoadAverage, MemStat, Traffic};
|
|
|
|
// status route: useful for checking connectivity from web client
|
|
#[get("/api/v1/ping")]
|
|
pub fn ping_pong() -> Json<JsonResponse> {
|
|
// ping pong
|
|
let status = "success".to_string();
|
|
let msg = "pong!".to_string();
|
|
Json(build_json_response(status, None, Some(msg)))
|
|
}
|
|
|
|
// test route: useful for ad hoc testing
|
|
#[get("/api/v1/test")]
|
|
pub fn test_route() -> Json<JsonResponse> {
|
|
let val = is_dns_updater_online().unwrap();
|
|
let status = "success".to_string();
|
|
let msg = val.to_string();
|
|
Json(build_json_response(status, None, Some(msg)))
|
|
}
|
|
|
|
// status route: check availability of `peach-network` microservice
|
|
#[get("/api/v1/ping/network")]
|
|
pub fn ping_network() -> Json<JsonResponse> {
|
|
match network_client::ping() {
|
|
Ok(_) => {
|
|
debug!("peach-network responded successfully");
|
|
let status = "success".to_string();
|
|
let msg = "peach-network is available.".to_string();
|
|
Json(build_json_response(status, None, Some(msg)))
|
|
}
|
|
Err(_) => {
|
|
warn!("peach-network failed to respond");
|
|
let status = "error".to_string();
|
|
let msg = "peach-network is unavailable.".to_string();
|
|
Json(build_json_response(status, None, Some(msg)))
|
|
}
|
|
}
|
|
}
|
|
|
|
// status route: check availability of `peach-oled` microservice
|
|
#[get("/api/v1/ping/oled")]
|
|
pub fn ping_oled() -> Json<JsonResponse> {
|
|
match oled_client::ping() {
|
|
Ok(_) => {
|
|
debug!("peach-oled responded successfully");
|
|
let status = "success".to_string();
|
|
let msg = "peach-oled is available.".to_string();
|
|
Json(build_json_response(status, None, Some(msg)))
|
|
}
|
|
Err(_) => {
|
|
warn!("peach-oled failed to respond");
|
|
let status = "error".to_string();
|
|
let msg = "peach-oled is unavailable.".to_string();
|
|
Json(build_json_response(status, None, Some(msg)))
|
|
}
|
|
}
|
|
}
|
|
|
|
// status route: check availability of `peach-stats` microservice
|
|
#[get("/api/v1/ping/stats")]
|
|
pub fn ping_stats() -> Json<JsonResponse> {
|
|
match stats_client::ping() {
|
|
Ok(_) => {
|
|
debug!("peach-stats responded successfully");
|
|
let status = "success".to_string();
|
|
let msg = "peach-stats is available.".to_string();
|
|
Json(build_json_response(status, None, Some(msg)))
|
|
}
|
|
Err(_) => {
|
|
warn!("peach-stats failed to respond");
|
|
let status = "error".to_string();
|
|
let msg = "peach-stats is unavailable.".to_string();
|
|
Json(build_json_response(status, None, Some(msg)))
|
|
}
|
|
}
|
|
} |