Skip to main content

speedtest/
error.rs

1// File: src\error.rs
2// Author: Hadi Cahyadi <cumulus13@gmail.com>
3// Date: 2026-02-09
4// Description: 
5// License: MIT
6
7use 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>;