diff options
Diffstat (limited to 'src/client/games/response.rs')
| -rw-r--r-- | src/client/games/response.rs | 22 |
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 | |||
| 145 | pub 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 | } | ||
