1use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum PolestarError {
8 #[error("Authentication failed: {0}")]
10 AuthError(String),
11
12 #[error("Invalid username or password")]
14 InvalidCredentials,
15
16 #[error("Token expired")]
18 TokenExpired,
19
20 #[error("OIDC configuration unavailable: {0}")]
22 OidcConfigError(String),
23
24 #[error("API request failed: {0}")]
26 ApiError(String),
27
28 #[error("Network error: {0}")]
30 NetworkError(#[from] reqwest::Error),
31
32 #[error("JSON parsing error: {0}")]
34 ParseError(#[from] serde_json::Error),
35
36 #[error("Invalid VIN: {0}")]
38 InvalidVin(String),
39
40 #[error("Rate limit exceeded")]
42 RateLimitExceeded,
43
44 #[error("GraphQL error: {0}")]
46 GraphQLError(String),
47}
48
49pub type Result<T> = std::result::Result<T, PolestarError>;