1use thiserror::Error;
2
3#[derive(Debug, Error, uniffi::Error)]
4#[uniffi(flat_error)]
5pub enum XcelerateError {
6 #[error("WebSocket error: {0}")]
7 WsError(String),
8
9 #[error("JSON error: {0}")]
10 SerdeError(String),
11
12 #[error("CDP Error {code}: {message}")]
13 CdpResponseError { code: i32, message: String },
14
15 #[error("HTTP error: {0}")]
16 HttpError(String),
17
18 #[error("Target not found: {0}")]
19 NotFound(String),
20
21 #[error("Internal channel error")]
22 InternalError,
23}
24
25impl From<tokio_tungstenite::tungstenite::Error> for XcelerateError {
26 fn from(e: tokio_tungstenite::tungstenite::Error) -> Self {
27 Self::WsError(e.to_string())
28 }
29}
30
31impl From<serde_json::Error> for XcelerateError {
32 fn from(e: serde_json::Error) -> Self {
33 Self::SerdeError(e.to_string())
34 }
35}
36
37impl From<reqwest::Error> for XcelerateError {
38 fn from(e: reqwest::Error) -> Self {
39 Self::HttpError(e.to_string())
40 }
41}
42
43pub type XcelerateResult<T> = Result<T, XcelerateError>;