use reqwest::StatusCode;
use serde_json::Value;
use tokio_tungstenite::tungstenite;
pub type ClientResult<T> = Result<T, ClientError>;
#[derive(thiserror::Error, Debug)]
pub enum ClientError {
#[error(transparent)]
UrlParse(#[from] url::ParseError),
#[error(transparent)]
Reqwest(#[from] reqwest::Error),
#[error(transparent)]
Tungstenite(#[from] tungstenite::Error),
#[error(transparent)]
SerdeJson(#[from] serde_json::Error),
#[error("set websocket scheme failed")]
SetWsScheme,
#[error(transparent)]
Api(#[from] ApiError),
}
#[derive(thiserror::Error, Debug)]
#[error("api error")]
pub struct ApiError {
pub status: StatusCode,
pub body: ApiBody,
}
#[derive(Debug)]
pub enum ApiBody {
Json(Value),
Text(String),
}