Skip to main content

walker_common/sender/provider/
bearer_token.rs

1use super::{Credentials, TokenProvider};
2use crate::sender::Error;
3use async_trait::async_trait;
4use std::fmt::{Debug, Formatter};
5
6/// A token provider, using an existing bearer token.
7///
8/// [token providers]: TokenProvider#implementors
9#[derive(Clone)]
10pub struct BearerTokenProvider {
11    pub token: String,
12}
13
14impl Debug for BearerTokenProvider {
15    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
16        f.debug_struct("BearerTokenProvider")
17            .field("token", &"***")
18            .finish()
19    }
20}
21
22#[async_trait]
23impl TokenProvider for BearerTokenProvider {
24    async fn provide_access_token(&self) -> Result<Option<Credentials>, Error> {
25        Ok(Some(Credentials::Bearer(self.token.clone())))
26    }
27}