wolframe_spotify_canvas/
error.rs1use 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>;