summaryrefslogtreecommitdiff
path: root/src/async_lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/async_lib.rs')
-rw-r--r--src/async_lib.rs34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/async_lib.rs b/src/async_lib.rs
index 6bbdd22..55f23c2 100644
--- a/src/async_lib.rs
+++ b/src/async_lib.rs
@@ -1,6 +1,38 @@
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(reqwest::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<reqwest::Error> for HydrusError {
+ fn from(value: reqwest::Error) -> Self {
+ HydrusError::NetworkError(value)
+ }
+}
#[cfg(test)]
mod tests {