torrust_tracker/servers/health_check_api/
resources.rs

1use std::net::SocketAddr;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Copy, Clone, Serialize, Deserialize, Debug, PartialEq, Eq)]
6pub enum Status {
7    Ok,
8    Error,
9    None,
10}
11
12#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Eq)]
13pub struct CheckReport {
14    pub binding: SocketAddr,
15    pub info: String,
16    pub result: Result<String, String>,
17}
18
19impl CheckReport {
20    #[must_use]
21    pub fn pass(&self) -> bool {
22        self.result.is_ok()
23    }
24    #[must_use]
25    pub fn fail(&self) -> bool {
26        self.result.is_err()
27    }
28}
29
30#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Eq)]
31pub struct Report {
32    pub status: Status,
33    pub message: String,
34    pub details: Vec<CheckReport>,
35}
36
37impl Report {
38    #[must_use]
39    pub fn none() -> Report {
40        Self {
41            status: Status::None,
42            message: String::new(),
43            details: Vec::default(),
44        }
45    }
46
47    #[must_use]
48    pub fn ok(details: Vec<CheckReport>) -> Report {
49        Self {
50            status: Status::Ok,
51            message: String::new(),
52            details,
53        }
54    }
55
56    #[must_use]
57    pub fn error(message: String, details: Vec<CheckReport>) -> Report {
58        Self {
59            status: Status::Error,
60            message,
61            details,
62        }
63    }
64}