//! Helper routes for pinging services to check that they are active use log::{debug, warn}; use rocket::get; use rocket::serde::json::{Value}; use peach_lib::network_client; use peach_lib::oled_client; use peach_lib::stats_client; use crate::utils::build_json_response; use crate::routes::authentication::Authenticated; /// Status route: useful for checking connectivity from web client. #[get("/api/v1/ping")] pub fn ping_pong(auth: Authenticated) -> Value { //pub fn ping_pong() -> Value { // ping pong let status = "success".to_string(); let msg = "pong!".to_string(); build_json_response(status, None, Some(msg)) } /// Status route: check availability of `peach-network` microservice. #[get("/api/v1/ping/network")] pub fn ping_network(auth: Authenticated) -> Value { match network_client::ping() { Ok(_) => { debug!("peach-network responded successfully"); let status = "success".to_string(); let msg = "peach-network is available.".to_string(); 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(); build_json_response(status, None, Some(msg)) } } } /// Status route: check availability of `peach-oled` microservice. #[get("/api/v1/ping/oled")] pub fn ping_oled(auth: Authenticated) -> Value { match oled_client::ping() { Ok(_) => { debug!("peach-oled responded successfully"); let status = "success".to_string(); let msg = "peach-oled is available.".to_string(); 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(); build_json_response(status, None, Some(msg)) } } } /// Status route: check availability of `peach-stats` microservice. #[get("/api/v1/ping/stats")] pub fn ping_stats(auth: Authenticated) -> Value { match stats_client::ping() { Ok(_) => { debug!("peach-stats responded successfully"); let status = "success".to_string(); let msg = "peach-stats is available.".to_string(); 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(); build_json_response(status, None, Some(msg)) } } }