use crate::jsonrpc::response::JsonRpcError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum ParseResponseError {
#[error(transparent)]
SerdeJsonError(#[from] serde_json::Error),
#[error("JSON-RPC Error")]
JsonRpcError(#[from] JsonRpcError),
}
pub type ParseResponseResult<T> = std::result::Result<T, ParseResponseError>;
#[derive(Debug, Error)]
pub enum AuthenticationError {
#[error(transparent)]
SerdeJsonError(#[from] serde_json::Error),
#[error("UID Parser Error")]
UidParseError(String),
}
pub type AuthenticationResult<T> = std::result::Result<T, AuthenticationError>;
#[derive(Debug, Error)]
pub enum ClosureError {
#[error(transparent)]
ClosureError(#[from] Box<dyn std::error::Error>),
#[error(transparent)]
SerdeJsonError(#[from] serde_json::Error),
#[error("JSON-RPC Error")]
JsonRpcError(#[from] JsonRpcError),
}
impl From<ParseResponseError> for ClosureError {
fn from(value: ParseResponseError) -> Self {
match value {
ParseResponseError::JsonRpcError(err) => Self::JsonRpcError(err),
ParseResponseError::SerdeJsonError(err) => Self::SerdeJsonError(err),
}
}
}
pub type ClosureResult<T> = std::result::Result<T, ClosureError>;
#[derive(Debug, Error)]
pub enum ClosureAuthError {
#[error(transparent)]
ClosureError(#[from] ClosureError),
#[error("UID Parser Error")]
UidParseError(String),
}
impl From<AuthenticationError> for ClosureAuthError {
fn from(value: AuthenticationError) -> Self {
match value {
AuthenticationError::SerdeJsonError(err) => {
Self::ClosureError(ClosureError::SerdeJsonError(err))
}
AuthenticationError::UidParseError(err) => Self::UidParseError(err),
}
}
}
pub type ClosureAuthResult<T> = std::result::Result<T, ClosureAuthError>;
#[derive(Debug, Error)]
pub enum ReqwestError {
#[cfg(any(feature = "async", feature = "blocking"))]
#[error(transparent)]
ReqwestError(#[from] reqwest::Error),
#[error(transparent)]
SerdeJsonError(#[from] serde_json::Error),
#[error("JSON-RPC Error")]
JsonRpcError(#[from] JsonRpcError),
}
impl From<ParseResponseError> for ReqwestError {
fn from(value: ParseResponseError) -> Self {
match value {
ParseResponseError::JsonRpcError(err) => Self::JsonRpcError(err),
ParseResponseError::SerdeJsonError(err) => Self::SerdeJsonError(err),
}
}
}
pub type ReqwestResult<T> = std::result::Result<T, ReqwestError>;
#[derive(Debug, Error)]
pub enum ReqwestAuthError {
#[error(transparent)]
ReqwestError(#[from] ReqwestError),
#[error("UID Parser Error")]
UidParseError(String),
}
impl From<AuthenticationError> for ReqwestAuthError {
fn from(value: AuthenticationError) -> Self {
match value {
AuthenticationError::SerdeJsonError(err) => {
Self::ReqwestError(ReqwestError::SerdeJsonError(err))
}
AuthenticationError::UidParseError(err) => Self::UidParseError(err),
}
}
}
pub type ReqwestAuthResult<T> = std::result::Result<T, ReqwestAuthError>;
#[derive(Debug, Error)]
pub enum Error {
#[error(transparent)]
ClosureError(#[from] Box<dyn std::error::Error>),
#[cfg(any(feature = "async", feature = "blocking"))]
#[error(transparent)]
ReqwestError(#[from] reqwest::Error),
#[error(transparent)]
SerdeJsonError(#[from] serde_json::Error),
#[error("JSON-RPC Error")]
JsonRpcError(#[from] JsonRpcError),
#[error("UID Parser Error")]
UidParseError(String),
}
impl From<ParseResponseError> for Error {
fn from(value: ParseResponseError) -> Self {
match value {
ParseResponseError::JsonRpcError(err) => Self::JsonRpcError(err),
ParseResponseError::SerdeJsonError(err) => Self::SerdeJsonError(err),
}
}
}
impl From<AuthenticationError> for Error {
fn from(value: AuthenticationError) -> Self {
match value {
AuthenticationError::SerdeJsonError(err) => Self::SerdeJsonError(err),
AuthenticationError::UidParseError(err) => Self::UidParseError(err),
}
}
}
impl From<ClosureError> for Error {
fn from(value: ClosureError) -> Self {
match value {
ClosureError::ClosureError(err) => Self::ClosureError(err),
ClosureError::JsonRpcError(err) => Self::JsonRpcError(err),
ClosureError::SerdeJsonError(err) => Self::SerdeJsonError(err),
}
}
}
impl From<ClosureAuthError> for Error {
fn from(value: ClosureAuthError) -> Self {
match value {
ClosureAuthError::ClosureError(err) => err.into(),
ClosureAuthError::UidParseError(err) => Self::UidParseError(err),
}
}
}
impl From<ReqwestError> for Error {
fn from(value: ReqwestError) -> Self {
match value {
ReqwestError::ReqwestError(err) => Self::ReqwestError(err),
ReqwestError::JsonRpcError(err) => Self::JsonRpcError(err),
ReqwestError::SerdeJsonError(err) => Self::SerdeJsonError(err),
}
}
}
impl From<ReqwestAuthError> for Error {
fn from(value: ReqwestAuthError) -> Self {
match value {
ReqwestAuthError::ReqwestError(err) => err.into(),
ReqwestAuthError::UidParseError(err) => Self::UidParseError(err),
}
}
}
pub type Result<T> = std::result::Result<T, Error>;