#[derive(Debug, thiserror::Error)]
pub enum GoogleApiError {
#[error("OpenSSL error stack `{0}`")]
OpenSSLError(#[from] openssl::error::ErrorStack),
#[error("JWT error `{0}`")]
JwtError(#[from] jwt::Error),
#[error("Reqwest error `{0}`")]
ReqwestError(#[from] reqwest::Error),
#[error("Token retrieval error `{0}`")]
TokenRetrivalError(String),
#[error("Error sending email `{0}`")]
EmailSendError(String),
#[error("Failed to load service account file `{0}`")]
ServiceAccountLoadFailure(std::io::Error),
#[error("Serialization error `{0}`")]
SerdeError(#[from] serde_json::Error),
}
pub type Result<T> = std::result::Result<T, GoogleApiError>;