1pub mod info;
10
11pub mod probe {
13 use serde::{Deserialize, Serialize};
14
15 #[derive(Clone, Debug, Deserialize, Serialize)]
16 #[serde(deny_unknown_fields)]
17 pub struct Request {
18 pub custom_server: String,
19 }
20
21 #[derive(Clone, Debug, Deserialize, Serialize)]
22 #[serde(rename_all = "snake_case")]
23 pub enum Response {
24 Updating,
25 NoUpdate,
26 TryAgain(i64),
27 }
28}
29
30pub mod local_install {
32 use serde::{Deserialize, Serialize};
33
34 #[derive(Deserialize, Clone, Debug, Serialize)]
35 #[serde(deny_unknown_fields)]
36 pub struct Request {
37 pub file: std::path::PathBuf,
38 }
39}
40
41pub mod remote_install {
43 use serde::{Deserialize, Serialize};
44
45 #[derive(Deserialize, Clone, Debug, Serialize)]
46 #[serde(deny_unknown_fields)]
47 pub struct Request {
48 pub url: String,
49 }
50}
51
52pub mod state {
54 use serde::{Deserialize, Serialize};
55
56 #[derive(Clone, Debug, Deserialize, Serialize)]
57 #[serde(rename_all = "lowercase")]
58 pub enum Response {
59 Park,
60 EntryPoint,
61 Poll,
62 Probe,
63 Validation,
64 Download,
65 Install,
66 Reboot,
67 DirectDownload,
68 PrepareLocalInstall,
69 Error,
70 }
71}
72
73pub mod abort_download {
85 use serde::{Deserialize, Serialize};
86
87 #[derive(Clone, Debug, Deserialize, Serialize)]
88 #[serde(deny_unknown_fields)]
89 pub struct Response {
90 pub message: String,
91 }
92
93 #[derive(Clone, Debug, Deserialize, Serialize)]
94 #[serde(deny_unknown_fields)]
95 pub struct Refused {
96 pub error: String,
97 }
98}
99
100pub mod log {
102 use serde::{Deserialize, Serialize};
103 use std::collections::HashMap;
104
105 #[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
106 #[serde(rename_all = "lowercase")]
107 pub enum Level {
108 #[serde(alias = "crit")]
112 Critical,
113 #[serde(alias = "erro")]
114 Error,
115 #[serde(alias = "warn")]
116 Warning,
117 #[serde(alias = "info")]
118 Info,
119 #[serde(alias = "debg")]
120 Debug,
121 #[serde(alias = "trce")]
122 Trace,
123 }
124
125 #[derive(Clone, Debug, Deserialize, Serialize)]
126 #[serde(deny_unknown_fields)]
127 pub struct Log {
128 pub entries: Vec<Entry>,
129 }
130
131 #[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
132 #[serde(deny_unknown_fields)]
133 pub struct Entry {
134 level: Level,
135 message: String,
136 time: String,
137 data: HashMap<String, String>,
138 }
139
140 impl core::fmt::Display for Log {
141 fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> {
142 for entry in &self.entries {
143 writeln!(f, "{}", entry)?;
144 }
145 Ok(())
146 }
147 }
148
149 impl core::fmt::Display for Entry {
150 fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> {
151 let level = match self.level {
152 Level::Critical => "CRIT",
153 Level::Error => "ERRO",
154 Level::Warning => "WARN",
155 Level::Info => "INFO",
156 Level::Debug => "DEBG",
157 Level::Trace => "TRCE",
158 };
159
160 write!(
161 f,
162 "{timestamp} {level} {msg}",
163 timestamp = self.time,
164 level = level,
165 msg = self.message
166 )?;
167 Ok(())
168 }
169 }
170}