news_flash/feed_api/
error.rs1use crate::error::FeedParserError;
2
3use super::portal::PortalError;
4use semver::Version;
5use thiserror::Error;
6use tokio::sync::AcquireError;
7
8#[derive(Error, Debug)]
9pub enum FeedApiError {
10 #[error("Error reading config file")]
11 Config(#[from] serde_json::error::Error),
12 #[error("Error parsing Url")]
13 Url(#[from] url::ParseError),
14 #[error("Error parsing Json file")]
15 Json { source: serde_json::Error, json: String },
16 #[error("Network Error")]
17 Network(#[from] reqwest::Error),
18 #[error("Error during portal callback")]
19 Portal(#[from] PortalError),
20 #[error("IO Error")]
21 IO(#[from] std::io::Error),
22 #[error("API Error: {message}")]
23 Api { message: String },
24 #[error("API Limit Reached")]
25 ApiLimit,
26 #[error("Auth required/failed")]
27 Auth,
28 #[error("Not logged in")]
29 Login,
30 #[error("Error loading resource")]
31 Resource,
32 #[error("Feature unsupported by implementation")]
33 Unsupported,
34 #[error("Error parsing feed url")]
35 ParseFeed(#[from] FeedParserError),
36 #[error("Error de/encrypting data")]
37 Encryption,
38 #[error("Couldn't acquire download permit from semaphore")]
39 Semaphore(#[from] AcquireError),
40 #[error("Version not supported")]
41 UnsupportedVersion { min_supported: Version, found: Option<Version> },
42 #[error("Unknown Error")]
43 Unknown,
44}