1use indicatif::style::TemplateError;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
5pub enum Error {
6 #[error("Rdf parsing error: `{0}`")]
7 InvalidRdf(String),
8 #[error("Invalid result: `{0}`")]
9 InvalidResult(String),
10 #[error("Settings error: `{0}`")]
11 InvalidSettingsField(String),
12 #[error("Io Error: `{0}`")]
13 InvalidIO(String),
14 #[error("Request error: `{0}`")]
15 InvalidRequest(String),
16 #[error("Progress bar template error: `{0}`")]
17 InvalidProgressBarTemplate(String),
18 #[error("SQLITE error: `{0}`")]
19 InvalidSQLITE(String),
20 #[error("UTF8 error: `{0}`")]
21 InvalidUTF8String(String),
22 #[error("Invalid Cache: `{0}`")]
23 InvalidCacheLocation(String),
24 #[error("Invalid URl: `{0}`")]
25 InvalidUrl(String),
26 #[error("Invalid Query: `{0}`")]
27 InvalidQuery(String),
28}
29
30impl std::convert::From<url::ParseError> for Error {
31 fn from(err: url::ParseError) -> Self {
32 Error::InvalidUrl(err.to_string())
33 }
34}
35
36impl std::convert::From<reqwest::Error> for Error {
37 fn from(err: reqwest::Error) -> Self {
38 Error::InvalidRequest(err.to_string())
39 }
40}
41
42impl std::convert::From<std::io::Error> for Error {
43 fn from(err: std::io::Error) -> Self {
44 Error::InvalidIO(err.to_string())
45 }
46}
47
48impl std::convert::From<TemplateError> for Error {
49 fn from(err: TemplateError) -> Self {
50 Error::InvalidProgressBarTemplate(err.to_string())
51 }
52}
53
54impl std::convert::From<rusqlite::Error> for Error {
55 fn from(err: rusqlite::Error) -> Self {
56 Error::InvalidSQLITE(err.to_string())
57 }
58}
59
60impl std::convert::From<quick_xml::Error> for Error {
61 fn from(err: quick_xml::Error) -> Self {
62 Error::InvalidRdf(format!("fastxml error: {}", err.to_string()).to_string())
63 }
64}
65
66impl std::convert::From<std::str::Utf8Error> for Error {
67 fn from(err: std::str::Utf8Error) -> Self {
68 Error::InvalidUTF8String(err.to_string())
69 }
70}
71
72impl std::convert::From<quick_xml::events::attributes::AttrError> for Error {
73 fn from(err: quick_xml::events::attributes::AttrError) -> Self {
74 Error::InvalidRdf(format!("fastxml attribute error: {}", err.to_string()).to_string())
75 }
76}
77
78