cipherstash-client 0.34.1-alpha.3

The official CipherStash SDK
Documentation
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 {
    /// Create a new ServiceToken with a given expiry.
    /// Federating a 3rd party token via CTS will return a ServiceToken. along with the expiry.
    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
    }
}