diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2021-04-06 11:11:56 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2021-04-06 11:11:56 +0200 |
commit | 6e868585fefa132812e0d25f2e8d5e107d77c103 (patch) | |
tree | 3f3552f109ce6b594a64ef7411562547ecbd6aa5 | |
parent | f27ff3c73f91e3c5821ed54bbc9b7e6f641dbf53 (diff) |
Convert from failure to thiserror
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | librepology/Cargo.toml | 2 | ||||
-rw-r--r-- | librepology/src/lib.rs | 2 | ||||
-rw-r--r-- | librepology/src/v1/api.rs | 3 | ||||
-rw-r--r-- | librepology/src/v1/error.rs | 22 | ||||
-rw-r--r-- | librepology/src/v1/mod.rs | 1 | ||||
-rw-r--r-- | librepology/src/v1/restapi.rs | 14 | ||||
-rw-r--r-- | librepology/src/v1/stdinapi.rs | 5 |
7 files changed, 37 insertions, 12 deletions
diff --git a/librepology/Cargo.toml b/librepology/Cargo.toml index 51afe45..fcbaa64 100644 --- a/librepology/Cargo.toml +++ b/librepology/Cargo.toml @@ -21,7 +21,7 @@ serde_derive = "1" serde_json = "1" url = "1.7" url_serde = "0.2" -failure = "0.1" +thiserror = "1" log = "0.4" derive_more = "0.14" derive-new = "0.5" diff --git a/librepology/src/lib.rs b/librepology/src/lib.rs index d0904a4..514cac4 100644 --- a/librepology/src/lib.rs +++ b/librepology/src/lib.rs @@ -1,4 +1,4 @@ -extern crate failure; +extern crate thiserror; extern crate serde; extern crate serde_json; extern crate url; diff --git a/librepology/src/v1/api.rs b/librepology/src/v1/api.rs index e192022..3d659df 100644 --- a/librepology/src/v1/api.rs +++ b/librepology/src/v1/api.rs @@ -1,5 +1,4 @@ -use failure::Fallible as Result; - +use crate::v1::error::Result; use crate::v1::types::Problem; use crate::v1::types::Package; diff --git a/librepology/src/v1/error.rs b/librepology/src/v1/error.rs new file mode 100644 index 0000000..79c556e --- /dev/null +++ b/librepology/src/v1/error.rs @@ -0,0 +1,22 @@ +pub type Result<T> = std::result::Result<T, RepologyError>; + +#[derive(thiserror::Error, Debug)] +pub enum RepologyError { + #[error("Borrow mutable error")] + BorrowMutErr(#[from] std::cell::BorrowMutError), + + #[error("UTF8 Error")] + Utf8Error(#[from] std::string::FromUtf8Error), + + #[error("serde_json error")] + SerdeJsonError(#[from] serde_json::Error), + + #[error("IO error")] + IoError(#[from] std::io::Error), + + #[error("curl error")] + CurlError(#[from] curl::Error), + + #[error("unknown error")] + Unknown, +} diff --git a/librepology/src/v1/mod.rs b/librepology/src/v1/mod.rs index 1d5eed6..1d1db8d 100644 --- a/librepology/src/v1/mod.rs +++ b/librepology/src/v1/mod.rs @@ -2,3 +2,4 @@ pub mod restapi; pub mod stdinapi; pub mod api; pub mod types; +pub mod error; diff --git a/librepology/src/v1/restapi.rs b/librepology/src/v1/restapi.rs index 1e8711c..e9a6cd1 100644 --- a/librepology/src/v1/restapi.rs +++ b/librepology/src/v1/restapi.rs @@ -1,9 +1,9 @@ use std::result::Result as RResult; -use failure::Error; -use failure::Fallible as Result; use curl::easy::Easy2; +use crate::v1::error::Result; +use crate::v1::error::RepologyError as Error; use crate::v1::types::{Package, Problem}; use crate::v1::api::Api; @@ -43,19 +43,23 @@ impl Api for RestApi { fn project<N: AsRef<str>>(&self, name: N) -> Result<Vec<Package>> { let url = format!("{}api/v1/project/{}", self.repology, name.as_ref()); trace!("Request: {}", url); - serde_json::from_str(&self.send_request(url)?).map_err(Error::from) + let response = self.send_request(url)?; + serde_json::from_str(&response) + .map_err(Error::from) } fn problems_for_repo<R: AsRef<str>>(&self, repo: R) -> Result<Vec<Problem>> { let url = format!("{}api/v1/repository/{}/problems", self.repology, repo.as_ref()); trace!("Request: {}", url); - serde_json::from_str(&self.send_request(url)?).map_err(Error::from) + let response = self.send_request(url)?; + serde_json::from_str(&response).map_err(Error::from) } fn problems_for_maintainer<M: AsRef<str>>(&self, maintainer: M) -> Result<Vec<Problem>> { let url = format!("{}api/v1/maintainer/{}/problems", self.repology, maintainer.as_ref()); trace!("Request: {}", url); - serde_json::from_str(&self.send_request(url)?).map_err(Error::from) + let response = self.send_request(url)?; + serde_json::from_str(&response).map_err(Error::from) } } diff --git a/librepology/src/v1/stdinapi.rs b/librepology/src/v1/stdinapi.rs index 61bc093..6c0d38b 100644 --- a/librepology/src/v1/stdinapi.rs +++ b/librepology/src/v1/stdinapi.rs @@ -3,9 +3,8 @@ use std::cell::RefCell; use std::ops::Deref; use std::ops::DerefMut; -use failure::Fallible as Result; -use failure::Error; - +use crate::v1::error::Result; +use crate::v1::error::RepologyError as Error; use crate::v1::types::Problem; use crate::v1::types::Package; use crate::v1::api::Api; |