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}