wolframe_spotify_canvas/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4#[non_exhaustive]
5pub enum CanvasError {
6    #[error("Network error: {0}")]
7    Network(#[from] reqwest::Error),
8
9    #[error("Failed to serialize/deserialize JSON: {0}")]
10    Json(#[from] serde_json::Error),
11
12    #[error("Missing access token. Please provide a valid access token.")]
13    MissingAccessToken,
14
15    #[error("Spotify API error: {status} - {message}")]
16    SpotifyApi { status: u16, message: String },
17
18    #[error("Rate limited, retry after {retry_after:?}ms")]
19    RateLimited { retry_after: Option<u64> },
20
21    #[error("Token expired, refresh required")]
22    TokenExpired,
23
24    #[error("Canvas not found for track: {0}")]
25    NotFound(String),
26
27    #[error("Token fetch failed: {0}")]
28    TokenFetchFailed(String),
29
30    #[error("Hash outdated, update DEFAULT_CANVAS_HASH")]
31    HashOutdated,
32
33    #[error("Invalid input: {0}")]
34    InvalidInput(String),
35}
36
37pub type Result<T> = std::result::Result<T, CanvasError>;