use crate::jsonrpc::ErrorObject;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("no available server")]
NoAvailableServer,
#[error("method not found")]
NotFound,
#[error("{0}")]
Rpc(ErrorObject),
#[error("HTTP {status} during {method}: {body}")]
Http {
status: u16,
method: String,
body: String,
},
#[error("transport error: {0}")]
Transport(#[from] rsurl::Error),
#[error("json error: {0}")]
Json(#[from] serde_json::Error),
#[error("{0}")]
Other(String),
}
impl Error {
pub fn is_rpc_error(&self) -> bool {
matches!(self, Error::Rpc(_))
}
pub fn as_rpc_error(&self) -> Option<&ErrorObject> {
match self {
Error::Rpc(eo) => Some(eo),
_ => None,
}
}
}