1use crate::jsonrpc::response::JsonRpcError;
2use thiserror::Error;
3
4#[derive(Debug, Error)]
9pub enum ParseResponseError {
10 #[error(transparent)]
15 SerdeJsonError(#[from] serde_json::Error),
16
17 #[error("JSON-RPC Error")]
21 JsonRpcError(#[from] JsonRpcError),
22}
23
24pub type ParseResponseResult<T> = std::result::Result<T, ParseResponseError>;
25
26#[derive(Debug, Error)]
27pub enum AuthenticationError {
28 #[error(transparent)]
33 SerdeJsonError(#[from] serde_json::Error),
34
35 #[error("UID Parser Error")]
38 UidParseError(String),
39}
40
41pub type AuthenticationResult<T> = std::result::Result<T, AuthenticationError>;
42
43#[derive(Debug, Error)]
47pub enum ClosureError {
48 #[error(transparent)]
54 ClosureError(#[from] Box<dyn std::error::Error>),
55
56 #[error(transparent)]
61 SerdeJsonError(#[from] serde_json::Error),
62
63 #[error("JSON-RPC Error")]
67 JsonRpcError(#[from] JsonRpcError),
68}
69
70impl From<ParseResponseError> for ClosureError {
73 fn from(value: ParseResponseError) -> Self {
74 match value {
75 ParseResponseError::JsonRpcError(err) => Self::JsonRpcError(err),
76 ParseResponseError::SerdeJsonError(err) => Self::SerdeJsonError(err),
77 }
78 }
79}
80
81pub type ClosureResult<T> = std::result::Result<T, ClosureError>;
82
83#[derive(Debug, Error)]
85pub enum ClosureAuthError {
86 #[error(transparent)]
89 ClosureError(#[from] ClosureError),
90
91 #[error("UID Parser Error")]
94 UidParseError(String),
95}
96
97impl From<AuthenticationError> for ClosureAuthError {
99 fn from(value: AuthenticationError) -> Self {
100 match value {
101 AuthenticationError::SerdeJsonError(err) => {
102 Self::ClosureError(ClosureError::SerdeJsonError(err))
103 }
104 AuthenticationError::UidParseError(err) => Self::UidParseError(err),
105 }
106 }
107}
108
109pub type ClosureAuthResult<T> = std::result::Result<T, ClosureAuthError>;
110
111#[derive(Debug, Error)]
112pub enum ReqwestError {
113 #[cfg(any(feature = "async", feature = "blocking"))]
117 #[error(transparent)]
118 ReqwestError(#[from] reqwest::Error),
119
120 #[error(transparent)]
125 SerdeJsonError(#[from] serde_json::Error),
126
127 #[error("JSON-RPC Error")]
131 JsonRpcError(#[from] JsonRpcError),
132}
133
134impl From<ParseResponseError> for ReqwestError {
135 fn from(value: ParseResponseError) -> Self {
136 match value {
137 ParseResponseError::JsonRpcError(err) => Self::JsonRpcError(err),
138 ParseResponseError::SerdeJsonError(err) => Self::SerdeJsonError(err),
139 }
140 }
141}
142
143pub type ReqwestResult<T> = std::result::Result<T, ReqwestError>;
144
145#[derive(Debug, Error)]
146pub enum ReqwestAuthError {
147 #[error(transparent)]
148 ReqwestError(#[from] ReqwestError),
149
150 #[error("UID Parser Error")]
153 UidParseError(String),
154}
155
156impl From<AuthenticationError> for ReqwestAuthError {
158 fn from(value: AuthenticationError) -> Self {
159 match value {
160 AuthenticationError::SerdeJsonError(err) => {
161 Self::ReqwestError(ReqwestError::SerdeJsonError(err))
162 }
163 AuthenticationError::UidParseError(err) => Self::UidParseError(err),
164 }
165 }
166}
167
168pub type ReqwestAuthResult<T> = std::result::Result<T, ReqwestAuthError>;
169
170#[derive(Debug, Error)]
171pub enum Error {
172 #[error(transparent)]
178 ClosureError(#[from] Box<dyn std::error::Error>),
179
180 #[cfg(any(feature = "async", feature = "blocking"))]
184 #[error(transparent)]
185 ReqwestError(#[from] reqwest::Error),
186
187 #[error(transparent)]
192 SerdeJsonError(#[from] serde_json::Error),
193
194 #[error("JSON-RPC Error")]
198 JsonRpcError(#[from] JsonRpcError),
199
200 #[error("UID Parser Error")]
203 UidParseError(String),
204}
205
206impl From<ParseResponseError> for Error {
209 fn from(value: ParseResponseError) -> Self {
210 match value {
211 ParseResponseError::JsonRpcError(err) => Self::JsonRpcError(err),
212 ParseResponseError::SerdeJsonError(err) => Self::SerdeJsonError(err),
213 }
214 }
215}
216
217impl From<AuthenticationError> for Error {
219 fn from(value: AuthenticationError) -> Self {
220 match value {
221 AuthenticationError::SerdeJsonError(err) => Self::SerdeJsonError(err),
222 AuthenticationError::UidParseError(err) => Self::UidParseError(err),
223 }
224 }
225}
226
227impl From<ClosureError> for Error {
228 fn from(value: ClosureError) -> Self {
229 match value {
230 ClosureError::ClosureError(err) => Self::ClosureError(err),
231 ClosureError::JsonRpcError(err) => Self::JsonRpcError(err),
232 ClosureError::SerdeJsonError(err) => Self::SerdeJsonError(err),
233 }
234 }
235}
236
237impl From<ClosureAuthError> for Error {
238 fn from(value: ClosureAuthError) -> Self {
239 match value {
240 ClosureAuthError::ClosureError(err) => err.into(),
241 ClosureAuthError::UidParseError(err) => Self::UidParseError(err),
242 }
243 }
244}
245
246impl From<ReqwestError> for Error {
247 fn from(value: ReqwestError) -> Self {
248 match value {
249 ReqwestError::ReqwestError(err) => Self::ReqwestError(err),
250 ReqwestError::JsonRpcError(err) => Self::JsonRpcError(err),
251 ReqwestError::SerdeJsonError(err) => Self::SerdeJsonError(err),
252 }
253 }
254}
255
256impl From<ReqwestAuthError> for Error {
257 fn from(value: ReqwestAuthError) -> Self {
258 match value {
259 ReqwestAuthError::ReqwestError(err) => err.into(),
260 ReqwestAuthError::UidParseError(err) => Self::UidParseError(err),
261 }
262 }
263}
264
265pub type Result<T> = std::result::Result<T, Error>;