torrust_tracker/servers/health_check_api/
resources.rs1use 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}