summaryrefslogtreecommitdiffstats
path: root/src/client/games/response.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/games/response.rs')
-rw-r--r--src/client/games/response.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/client/games/response.rs b/src/client/games/response.rs
index 73080dd..d9883f7 100644
--- a/src/client/games/response.rs
+++ b/src/client/games/response.rs
@@ -141,3 +141,25 @@ pub fn parse_roulette_response(response: &str) -> Result<RouletteResult, String>
141 bets, 141 bets,
142 }) 142 })
143} 143}
144
145pub fn parse_blackjack_response(
146 response: &str,
147) -> Result<crate::blackjack::BlackjackState, String> {
148 let response = response.trim();
149 if response.is_empty() {
150 return Err("No response from server".to_string());
151 }
152 if let Some(message) = response.strip_prefix("ERROR") {
153 let message = message.trim();
154 return Err(if message.is_empty() {
155 "Server error".to_string()
156 } else {
157 message.to_string()
158 });
159 }
160
161 let raw = response
162 .strip_prefix("BLACKJACK_STATE ")
163 .ok_or_else(|| format!("Unexpected server response: {response}"))?;
164 serde_json::from_str(raw).map_err(|error| format!("Invalid blackjack state: {error}"))
165}