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}