tetrio_api/http/
error.rs

1use std::fmt::{Debug, Display};
2
3
4#[derive(Debug)]
5pub enum Error<HttpError: Debug + Send + Sync, CachingError: Debug + Send + Sync> {
6    HttpError(HttpError),
7    CachingError(CachingError),
8    CacheConversionError(serde_json::Error),
9    RequestParsingError(http::Error),
10    InvalidHeaderValue(http::header::InvalidHeaderValue),
11    ParsingError(serde_path_to_error::Error<serde_json::Error>),
12    ConversionError(serde_path_to_error::Error<serde_json::Error>),
13    SerdeError(serde_json::Error),
14}
15
16
17
18impl<HttpError: StdError + Debug + Send + Sync, CachingError: StdError + Debug + Send + Sync> Display for Error<HttpError, CachingError> {
19    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20        match &self {
21            Error::InvalidHeaderValue(error) => write!(f, "InvalidHeaderValue: {error}"),
22            Error::RequestParsingError(error) => write!(f, "RequestParsingError: {}", error),
23            Error::CacheConversionError(error) => write!(f, "Couldn't convert cache entry: {}", error),
24            Error::ParsingError(error) => {
25                write!(f, "ParsingError: Path: {}, error: {}", error.path(), error.inner())
26            },
27            Error::ConversionError(error)=> write!(f, "Couldn't convert cache entry: path: {}, error: {}", error.path(), error.inner()),
28            Error::HttpError(error) => write!(f, "HttpError: {error}"),
29            Error::CachingError(error) => write!(f, "CachingError: {error}"),
30            Error::SerdeError(error) => write!(f, "SerdeError: {error}"),
31        }
32    }
33}
34
35use std::error::Error as StdError;
36
37
38impl<HttpError: StdError + Debug + Send + Sync, CachingError: StdError + Debug + Send + Sync> StdError for Error<HttpError, CachingError> {}
39
40pub trait ErrorTrait {
41    type Error;
42}