cloud_storage_lite/token_provider/
mod.rs1use std::sync::Arc;
4
5use chrono::{DateTime, Utc};
6
7#[cfg(any(test, feature = "oauth-token-provider"))]
8pub mod oauth;
9mod renewing;
10
11pub use renewing::RenewingTokenProvider;
12
13#[cfg_attr(test, mockall::automock)]
15#[async_trait::async_trait]
16pub trait TokenProvider: Send + Sync {
17 async fn get_token(&self) -> anyhow::Result<Arc<Token>>;
19
20 async fn invalidate_token(&self) {}
22}
23
24#[derive(Clone)]
26#[cfg_attr(test, derive(Debug, PartialEq, Eq))]
27pub struct Token {
28 pub token: String,
30
31 pub expiry: DateTime<Utc>,
33}
34
35impl Default for Token {
36 fn default() -> Self {
37 Self {
38 token: Default::default(),
39 expiry: DateTime::from_utc(chrono::NaiveDateTime::from_timestamp(0, 0), Utc),
40 }
41 }
42}
43
44impl AsRef<str> for Token {
45 fn as_ref(&self) -> &str {
46 &self.token
47 }
48}