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