Skip to main content

news_flash/feed_api/
error.rs

1use 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}