1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use crate::Error;
use chrono::{DateTime, Utc};
use oauth2::AccessToken;
use std::fmt::Debug;
#[derive(Debug, Clone)]
pub struct TokenResponse {
pub token: AccessToken,
pub expires_on: DateTime<Utc>,
}
impl TokenResponse {
pub fn new(token: AccessToken, expires_on: DateTime<Utc>) -> Self {
Self { token, expires_on }
}
}
#[async_trait::async_trait]
pub trait TokenCredential: Send + Sync {
async fn get_token(&self, resource: &str) -> Result<TokenResponse, Error>;
}