summaryrefslogtreecommitdiffstats
path: root/src/client/games/response.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/client/games/response.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/client/games/response.rs b/src/client/games/response.rs
index 88df459..060ad44 100644
--- a/src/client/games/response.rs
+++ b/src/client/games/response.rs
@@ -184,3 +184,23 @@ pub fn parse_crash_response(response: &str) -> Result<crate::crash::CrashState,
184 .ok_or_else(|| format!("Unexpected server response: {response}"))?; 184 .ok_or_else(|| format!("Unexpected server response: {response}"))?;
185 serde_json::from_str(raw).map_err(|error| format!("Invalid crash state: {error}")) 185 serde_json::from_str(raw).map_err(|error| format!("Invalid crash state: {error}"))
186} 186}
187
188pub fn parse_history_response(response: &str) -> Result<Vec<crate::history::PlayRecord>, String> {
189 let response = response.trim();
190 if response.is_empty() {
191 return Err("No response from server".to_string());
192 }
193 if let Some(message) = response.strip_prefix("ERROR") {
194 let message = message.trim();
195 return Err(if message.is_empty() {
196 "Server error".to_string()
197 } else {
198 message.to_string()
199 });
200 }
201
202 let raw = response
203 .strip_prefix("HISTORY ")
204 .ok_or_else(|| format!("Unexpected server response: {response}"))?;
205 serde_json::from_str(raw).map_err(|error| format!("Invalid history: {error}"))
206}