1use thiserror::Error;
8
9#[derive(Error, Debug)]
10pub enum SpeedtestError {
11 #[error("Configuration retrieval error: {0}")]
12 ConfigRetrieval(String),
13
14 #[error("Servers retrieval error: {0}")]
15 ServersRetrieval(String),
16
17 #[error("Invalid server ID type: {0}")]
18 InvalidServerIdType(String),
19
20 #[error("No matched servers found")]
21 NoMatchedServers,
22
23 #[error("Speedtest mini server connection failure: {0}")]
24 MiniConnectFailure(String),
25
26 #[error("Invalid speedtest mini server: {0}")]
27 InvalidMiniServer(String),
28
29 #[error("Share results connection failure: {0}")]
30 ShareResultsConnectFailure(String),
31
32 #[error("Share results submit failure: {0}")]
33 ShareResultsSubmitFailure(String),
34
35 #[error("Upload timeout")]
36 UploadTimeout,
37
38 #[error("Best server failure: {0}")]
39 BestServerFailure(String),
40
41 #[error("Missing best server")]
42 MissingBestServer,
43
44 #[error("CLI error: {0}")]
45 CliError(String),
46
47 #[error("HTTP error: {0}")]
48 Http(#[from] reqwest::Error),
49
50 #[error("XML parse error: {0}")]
51 XmlParse(#[from] quick_xml::DeError),
52
53 #[error("JSON error: {0}")]
54 Json(#[from] serde_json::Error),
55
56 #[error("IO error: {0}")]
57 Io(#[from] std::io::Error),
58
59 #[error("URL parse error: {0}")]
60 UrlParse(#[from] url::ParseError),
61
62 #[error("CSV error: {0}")]
63 Csv(#[from] csv::Error),
64
65 #[error("Unknown error: {0}")]
66 Unknown(String),
67}
68
69pub type Result<T> = std::result::Result<T, SpeedtestError>;