diff options
Diffstat (limited to 'src/sync_lib.rs')
| -rw-r--r-- | src/sync_lib.rs | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/sync_lib.rs b/src/sync_lib.rs index fd28c4c..368e5b7 100644 --- a/src/sync_lib.rs +++ b/src/sync_lib.rs @@ -1,3 +1,35 @@ pub mod client; pub mod traits; -pub mod types; + +use thiserror::Error; + +/// Error wrapper +#[derive(Error, Debug)] +pub enum HydrusError { + #[error("failed to connect to Hydrus")] + NetworkError(ureq::Error), + #[error("failed to encode/Deserialize data")] + DeserializeError(serde_json::Error), + #[error("io error")] + IOError(std::io::Error), + #[error("api or session key needed")] + KeyNotSupplied, +} + +impl From<serde_json::Error> for HydrusError { + fn from(value: serde_json::Error) -> Self { + HydrusError::DeserializeError(value) + } +} + +impl From<std::io::Error> for HydrusError { + fn from(value: std::io::Error) -> Self { + HydrusError::IOError(value) + } +} + +impl From<ureq::Error> for HydrusError { + fn from(value: ureq::Error) -> Self { + HydrusError::NetworkError(value) + } +} |
