openai_auth/
error.rs

1use thiserror::Error;
2
3/// Error types for OpenAI OAuth authentication
4#[derive(Error, Debug)]
5pub enum OpenAIAuthError {
6    #[error("Failed to create OAuth client: {0}")]
7    ClientCreation(String),
8
9    #[error("Invalid authorization code")]
10    InvalidAuthorizationCode,
11
12    #[error("Token exchange failed: {0}")]
13    TokenExchange(String),
14
15    #[error("Token refresh failed: {0}")]
16    TokenRefresh(String),
17
18    #[error("Token has expired")]
19    TokenExpired,
20
21    #[error("Invalid JWT token: {0}")]
22    InvalidJwt(String),
23
24    #[error("Missing claim in JWT: {0}")]
25    MissingJwtClaim(String),
26
27    #[error("Network error: {0}")]
28    Network(#[from] reqwest::Error),
29
30    #[error("HTTP error: {status}: {body}")]
31    Http { status: u16, body: String },
32
33    #[error("API key exchange failed: {status}: {body}")]
34    ApiKeyExchange { status: u16, body: String },
35
36    #[error("OAuth error: {0}")]
37    OAuth(String),
38
39    #[error("URL parse error: {0}")]
40    UrlParse(#[from] url::ParseError),
41
42    #[cfg(feature = "callback-server")]
43    #[error("Callback server error: {0}")]
44    CallbackServer(String),
45
46    #[cfg(feature = "browser")]
47    #[error("Failed to open browser: {0}")]
48    BrowserLaunch(String),
49
50    #[error("Serialization error: {0}")]
51    Serialization(#[from] serde_json::Error),
52
53    #[error("JWT decode error: {0}")]
54    JwtDecode(#[from] jsonwebtoken::errors::Error),
55
56    #[error("Invalid configuration: {0}")]
57    InvalidConfig(String),
58
59    #[error("Base64 decode error: {0}")]
60    Base64Decode(#[from] base64::DecodeError),
61}
62
63/// Result type alias for OpenAI authentication operations
64pub type Result<T> = std::result::Result<T, OpenAIAuthError>;