abs_data/
error_code.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum ErrorCode {
5    #[error("HTTP status error: {0}")]
6    Http(reqwest::StatusCode),
7
8    #[error("HTTP request error: {0}")]
9    Reqwest(#[from] reqwest::Error),
10
11    #[error("Deserialization error: {0}")]
12    Serde(#[from] serde::de::value::Error),
13
14    #[error("JSON slice deserialization error: {0} in '{1}'")]
15    JsonSliceDeserialization(serde_json::Error, Box<str>),
16
17    #[error("Empty response body")]
18    HttpEmptyResponse,
19
20    #[error("Missing expected optional field")]
21    MissingExpectedOptionalField(Box<str>),
22
23    #[error("Missing expected value on field")]
24    MissingExpectedValueOnField(Box<str>),
25
26    #[error("Url parse error: {0}")]
27    UrlParse(#[from] url::ParseError),
28
29    #[error("URL cannot be a base")]
30    UrlCannotBeABase,
31
32    #[error("Data key length cannot be larger than {0}")]
33    DataKeyLengthIncorrect(usize),
34
35    #[error("Data key contains non number: {0}")]
36    DataKeyContainsNonNumber(Box<str>),
37
38    #[error("Data key contains invalid dimensions: {0}")]
39    DataKeyContainsInvalidDimensions(Box<str>),
40
41    #[error("UTF-8 decode error: {0}")]
42    Utf8Decode(#[from] std::str::Utf8Error),
43
44    #[error("Hashmap contains no keys or values")]
45    HashMapNoKeyValuesFound,
46
47    #[error("Version string unknown character: {0}")]
48    VersionStringContainsUnknownChar(#[from] std::num::ParseIntError),
49
50    #[error("Version string length not exactly three: {0}")]
51    VersionStringNotCorrectLength(usize),
52
53    #[error("Custom error: {0}")]
54    Custom(Box<str>),
55}