gcloud_auth/
error.rs

1use serde::Deserialize;
2
3#[derive(thiserror::Error, Debug)]
4pub enum Error {
5    #[error("scopes is required if the audience is none")]
6    ScopeOrAudienceRequired,
7
8    #[error("unsupported account {0}")]
9    UnsupportedAccountType(String),
10
11    #[error("refresh token is required for user account credentials")]
12    RefreshTokenIsRequired,
13
14    #[error("json error: {0}")]
15    JsonError(#[from] serde_json::Error),
16
17    #[error("jwt error: {0}")]
18    JwtError(#[from] jsonwebtoken::errors::Error),
19
20    #[error("http error: {0}")]
21    HttpError(#[from] reqwest::Error),
22
23    #[error("GOOGLE_APPLICATION_CREDENTIALS or default credentials is required: {0}")]
24    CredentialsIOError(#[from] std::io::Error),
25
26    #[error("os env error: {0}")]
27    VarError(#[from] std::env::VarError),
28
29    #[error("user home directory not found")]
30    NoHomeDirectoryFound,
31
32    #[error("Server responded with error status is {0}")]
33    DeserializeError(String),
34
35    #[error("Private Key is required")]
36    NoPrivateKeyFound,
37
38    #[error("No Credentials File Found")]
39    NoCredentialsFileFound,
40
41    #[error("invalid authentication token")]
42    InvalidToken,
43
44    #[error(transparent)]
45    TimeParse(#[from] time::error::Parse),
46
47    #[cfg(feature = "external-account")]
48    #[error("external account error : {0}")]
49    ExternalAccountSource(#[from] crate::token_source::external_account_source::error::Error),
50
51    #[error("unexpected impersonation token response : status={0}, detail={1}")]
52    UnexpectedImpersonateTokenResponse(u16, String),
53
54    #[error("No target_audience Found in the private claims")]
55    NoTargetAudienceFound,
56
57    #[error("Unexpected token response: status={status}, error={error}, description={error_description}")]
58    TokenErrorResponse {
59        status: u16,
60        error: String,
61        error_description: String,
62    },
63}
64
65#[derive(Debug, Deserialize)]
66pub(crate) struct TokenErrorResponse {
67    pub(crate) error: String,
68    pub(crate) error_description: String,
69}