peach-workspace/peach-web/src/routes/ping.rs

79 lines
2.7 KiB
Rust
Raw Normal View History

2021-10-28 08:01:31 +00:00
//! Helper routes for pinging services to check that they are active
2021-10-28 12:09:56 +00:00
use log::{debug, warn};
2021-11-03 09:52:02 +00:00
use rocket::get;
2021-11-04 21:30:29 +00:00
use rocket::serde::json::{Value};
2021-10-28 12:09:56 +00:00
2021-10-28 08:01:31 +00:00
use peach_lib::network_client;
use peach_lib::oled_client;
use peach_lib::stats_client;
2021-10-28 12:09:56 +00:00
use crate::utils::build_json_response;
use crate::routes::authentication::Authenticated;
2021-10-28 08:01:31 +00:00
2021-11-03 09:52:02 +00:00
/// Status route: useful for checking connectivity from web client.
2021-10-28 08:01:31 +00:00
#[get("/api/v1/ping")]
pub fn ping_pong(auth: Authenticated) -> Value {
//pub fn ping_pong() -> Value {
2021-10-28 08:01:31 +00:00
// ping pong
let status = "success".to_string();
let msg = "pong!".to_string();
2021-11-04 11:03:40 +00:00
build_json_response(status, None, Some(msg))
2021-10-28 08:01:31 +00:00
}
2021-11-03 09:52:02 +00:00
/// Status route: check availability of `peach-network` microservice.
2021-10-28 08:01:31 +00:00
#[get("/api/v1/ping/network")]
pub fn ping_network(auth: Authenticated) -> Value {
2021-10-28 08:01:31 +00:00
match network_client::ping() {
Ok(_) => {
debug!("peach-network responded successfully");
let status = "success".to_string();
let msg = "peach-network is available.".to_string();
2021-11-04 11:03:40 +00:00
build_json_response(status, None, Some(msg))
2021-10-28 08:01:31 +00:00
}
Err(_) => {
warn!("peach-network failed to respond");
let status = "error".to_string();
let msg = "peach-network is unavailable.".to_string();
2021-11-04 11:03:40 +00:00
build_json_response(status, None, Some(msg))
2021-10-28 08:01:31 +00:00
}
}
}
2021-11-03 09:52:02 +00:00
/// Status route: check availability of `peach-oled` microservice.
2021-10-28 08:01:31 +00:00
#[get("/api/v1/ping/oled")]
pub fn ping_oled(auth: Authenticated) -> Value {
2021-10-28 08:01:31 +00:00
match oled_client::ping() {
Ok(_) => {
debug!("peach-oled responded successfully");
let status = "success".to_string();
let msg = "peach-oled is available.".to_string();
2021-11-04 11:03:40 +00:00
build_json_response(status, None, Some(msg))
2021-10-28 08:01:31 +00:00
}
Err(_) => {
warn!("peach-oled failed to respond");
let status = "error".to_string();
let msg = "peach-oled is unavailable.".to_string();
2021-11-04 11:03:40 +00:00
build_json_response(status, None, Some(msg))
2021-10-28 08:01:31 +00:00
}
}
}
2021-11-03 09:52:02 +00:00
/// Status route: check availability of `peach-stats` microservice.
2021-10-28 08:01:31 +00:00
#[get("/api/v1/ping/stats")]
pub fn ping_stats(auth: Authenticated) -> Value {
2021-10-28 08:01:31 +00:00
match stats_client::ping() {
Ok(_) => {
debug!("peach-stats responded successfully");
let status = "success".to_string();
let msg = "peach-stats is available.".to_string();
2021-11-04 11:03:40 +00:00
build_json_response(status, None, Some(msg))
2021-10-28 08:01:31 +00:00
}
Err(_) => {
warn!("peach-stats failed to respond");
let status = "error".to_string();
let msg = "peach-stats is unavailable.".to_string();
2021-11-04 11:03:40 +00:00
build_json_response(status, None, Some(msg))
2021-10-28 08:01:31 +00:00
}
}
2021-11-03 09:52:02 +00:00
}