drogue_client/openid/provider/
access_token.rs

1use crate::{
2    error::ClientError,
3    openid::{Credentials, TokenProvider},
4};
5use async_trait::async_trait;
6use std::fmt::{Debug, Formatter};
7
8/// A token provider, using user access tokens (not OAuth2 access tokens).
9///
10/// If you want to directly use an OAuth2 access token, you can pass the access token as a String,
11/// as `TokenProvider` is implemented for `String`. Also see: [token providers]
12///
13/// [token providers]: TokenProvider#implementors
14#[derive(Clone)]
15pub struct AccessTokenProvider {
16    pub user: String,
17    pub token: String,
18}
19
20impl Debug for AccessTokenProvider {
21    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
22        f.debug_struct("AccessTokenProvider")
23            .field("user", &self.user)
24            .field("token", &"***")
25            .finish()
26    }
27}
28
29#[async_trait]
30impl TokenProvider for AccessTokenProvider {
31    async fn provide_access_token(&self) -> Result<Option<Credentials>, ClientError> {
32        Ok(Some(Credentials::Basic(
33            self.user.clone(),
34            Some(self.token.clone()),
35        )))
36    }
37}