tmf_client/common/
tmf_error.rs

1//! Error Module
2
3use thiserror::Error;
4
5/// TMF Error
6#[derive(Debug, Error)]
7pub enum TMFError {
8    /// NoConnection Error when making a request to the TMF API
9    #[error("TMFError: {0}")]
10    NoConnection(String),
11    /// Unknown Error when making a request to the TMF API
12    #[error("TMFError: {0}")]
13    Unknown(String),
14    /// Serialization Error when serializing or deserializing a TMF object
15    #[error("TMFError: {0}")]
16    Serialization(String),
17}
18
19impl From<&str> for TMFError {
20    fn from(value: &str) -> Self {
21        TMFError::Unknown(value.to_string())
22    }
23}
24
25impl From<reqwest::Error> for TMFError {
26    fn from(value: reqwest::Error) -> Self {
27        TMFError::NoConnection(value.to_string())
28    }
29}
30
31impl From<TMFError> for String {
32    fn from(value: TMFError) -> Self {
33        value.to_string()
34    }
35}
36
37impl From<serde_json::Error> for TMFError {
38    fn from(value: serde_json::Error) -> Self {
39        TMFError::Serialization(value.to_string())
40    }
41}
42
43impl From<std::io::Error> for TMFError {
44    fn from(value: std::io::Error) -> Self {
45        TMFError::NoConnection(value.to_string())
46    }
47}
48
49#[cfg(test)]
50mod tests {
51    use super::*;
52    #[test]
53    fn test_error_from_str() {
54        let err = TMFError::from("ThisIsAnError");
55
56        assert_eq!(err.to_string(), "TMFError: ThisIsAnError".to_string());
57    }
58
59    #[test]
60    fn test_string_from_error() {
61        let err = TMFError::from("ThisIsAnError");
62
63        let s: String = err.into();
64        assert_eq!(s, "TMFError: ThisIsAnError".to_string());
65    }
66}