use thiserror::Error;
pub type Result<T> = std::result::Result<T, FyersError>;
#[derive(Debug, Error)]
pub enum FyersError {
#[error("missing required configuration: {field}")]
MissingConfig {
field: &'static str,
},
#[error("invalid URL: {0}")]
Url(#[from] url::ParseError),
#[error("HTTP client error: {0}")]
HttpClient(#[from] reqwest::Error),
#[error("JSON error: {0}")]
Json(#[from] serde_json::Error),
#[error("broker error: HTTP {status}, code {code:?}, s {s:?}, message {message:?}")]
Broker {
status: reqwest::StatusCode,
retry_after: Option<Box<str>>,
retry_after_ms: Option<Box<str>>,
code: Option<i64>,
s: Option<Box<str>>,
message: Option<Box<str>>,
body: Box<str>,
},
#[error("WebSocket error: {0}")]
WebSocket(#[source] Box<tokio_tungstenite::tungstenite::Error>),
#[error("validation error: {0}")]
Validation(String),
}
impl From<tokio_tungstenite::tungstenite::Error> for FyersError {
fn from(error: tokio_tungstenite::tungstenite::Error) -> Self {
Self::WebSocket(Box::new(error))
}
}