use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("HTTP {status}: {body}")]
Http {
status: u16,
body: String,
},
#[error("JSON error: {0}")]
Serde(#[from] serde_json::Error),
#[cfg(feature = "async-client")]
#[error("transport error: {0}")]
Transport(Box<reqwest::Error>),
#[cfg(feature = "async-client")]
#[error("SSE error: {0}")]
Sse(Box<reqwest_eventsource::Error>),
#[cfg(feature = "server")]
#[error("server lifecycle error: {0}")]
Server(String),
}
#[cfg(feature = "async-client")]
impl From<reqwest::Error> for Error {
fn from(err: reqwest::Error) -> Self {
Error::Transport(Box::new(err))
}
}
#[cfg(feature = "async-client")]
impl From<reqwest_eventsource::Error> for Error {
fn from(err: reqwest_eventsource::Error) -> Self {
Error::Sse(Box::new(err))
}
}
pub type Result<T> = std::result::Result<T, Error>;