cipherstash-client 0.12.5

The official CipherStash SDK
Documentation
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
    }
}