xcelerate 0.1.3

A high-performance, lightweight Chrome DevTools Protocol (CDP) client for Rust.
Documentation
use thiserror::Error;

#[derive(Debug, Error, uniffi::Error)]
#[uniffi(flat_error)]
pub enum XcelerateError {
    #[error("WebSocket error: {0}")]
    WsError(String),
    
    #[error("JSON error: {0}")]
    SerdeError(String),
    
    #[error("CDP Error {code}: {message}")]
    CdpResponseError { code: i32, message: String },
    
    #[error("HTTP error: {0}")]
    HttpError(String),

    #[error("Target not found: {0}")]
    NotFound(String),
    
    #[error("Internal channel error")]
    InternalError,
}

impl From<tokio_tungstenite::tungstenite::Error> for XcelerateError {
    fn from(e: tokio_tungstenite::tungstenite::Error) -> Self {
        Self::WsError(e.to_string())
    }
}

impl From<serde_json::Error> for XcelerateError {
    fn from(e: serde_json::Error) -> Self {
        Self::SerdeError(e.to_string())
    }
}

impl From<reqwest::Error> for XcelerateError {
    fn from(e: reqwest::Error) -> Self {
        Self::HttpError(e.to_string())
    }
}

pub type XcelerateResult<T> = Result<T, XcelerateError>;