rraw/error/
http_error.rs

1use reqwest::StatusCode;
2use thiserror::Error;
3
4pub trait IntoResult {
5    fn into_result(self) -> Result<(), HTTPError>;
6}
7
8impl IntoResult for StatusCode {
9    fn into_result(self) -> Result<(), HTTPError> {
10        if self.is_success() {
11            Ok(())
12        } else {
13            Err(HTTPError::from(self))
14        }
15    }
16}
17
18#[derive(Error, Debug, Eq, PartialEq)]
19pub enum HTTPError {
20    #[error("HTTP Error Code '{0}'")]
21    Other(StatusCode),
22    #[error("The requested value is not found")]
23    NotFound,
24}
25
26impl From<StatusCode> for HTTPError {
27    fn from(err: StatusCode) -> HTTPError {
28        match err {
29            StatusCode::NOT_FOUND => HTTPError::NotFound,
30            value => HTTPError::Other(value),
31        }
32    }
33}