File size: 1,084 Bytes
bbb1195 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TokenData {
pub access_token: String,
pub refresh_token: String,
pub expires_in: i64,
pub expiry_timestamp: i64,
pub token_type: String,
pub email: Option<String>,
/// Google Cloud project ID for API requests
#[serde(skip_serializing_if = "Option::is_none")]
pub project_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub session_id: Option<String>,
}
impl TokenData {
pub fn new(
access_token: String,
refresh_token: String,
expires_in: i64,
email: Option<String>,
project_id: Option<String>,
session_id: Option<String>,
) -> Self {
let expiry_timestamp = chrono::Utc::now().timestamp() + expires_in;
Self {
access_token,
refresh_token,
expires_in,
expiry_timestamp,
token_type: "Bearer".to_string(),
email,
project_id,
session_id,
}
}
}
|