use serde::{Deserialize, Serialize};
use crate::credentials::TokenExpiry;
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ServiceToken {
pub(crate) access_token: String,
pub(crate) expiry: u64,
}
impl ServiceToken {
pub fn new(access_token: &str, expiry: u64) -> Self {
Self {
access_token: access_token.to_string(),
expiry,
}
}
pub fn access_token(&self) -> String {
self.access_token.to_string()
}
pub fn as_header(&self) -> String {
format!("Bearer {}", self.access_token)
}
}
impl TokenExpiry<'_> for ServiceToken {
fn expires_at_secs(&self) -> u64 {
self.expiry
}
}