summaryrefslogtreecommitdiff
path: root/src/sync_lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/sync_lib.rs')
-rw-r--r--src/sync_lib.rs34
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)
+ }
+}