summaryrefslogtreecommitdiffstats
path: root/src/client/games/response.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/client/games/response.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/client/games/response.rs b/src/client/games/response.rs
index d9883f7..71e1fed 100644
--- a/src/client/games/response.rs
+++ b/src/client/games/response.rs
@@ -163,3 +163,24 @@ pub fn parse_blackjack_response(
163 .ok_or_else(|| format!("Unexpected server response: {response}"))?; 163 .ok_or_else(|| format!("Unexpected server response: {response}"))?;
164 serde_json::from_str(raw).map_err(|error| format!("Invalid blackjack state: {error}")) 164 serde_json::from_str(raw).map_err(|error| format!("Invalid blackjack state: {error}"))
165} 165}
166
167pub fn parse_crash_response(response: &str) -> Result<crate::crash::CrashState, String> {
168 let response = response.trim();
169 if response.is_empty() {
170 return Err("No response from server".to_string());
171 }
172 if let Some(message) = response.strip_prefix("ERROR") {
173 let message = message.trim();
174 return Err(if message.is_empty() {
175 "Server error".to_string()
176 } else {
177 message.to_string()
178 });
179 }
180
181 let raw = ["CRASH_START ", "CRASH_STATE ", "CRASH_BUSTED "]
182 .iter()
183 .find_map(|prefix| response.strip_prefix(prefix))
184 .ok_or_else(|| format!("Unexpected server response: {response}"))?;
185 serde_json::from_str(raw).map_err(|error| format!("Invalid crash state: {error}"))
186}