use std::sync::Arc;
use crate::credentials::subject_token::{self, SubjectToken};
use crate::errors::CredentialsError;
#[derive(Debug, Clone)]
pub(crate) struct ProgrammaticSourcedCredentials {
subject_token_provider: Arc<dyn subject_token::dynamic::SubjectTokenProvider>,
}
impl ProgrammaticSourcedCredentials {
pub(crate) fn new(
subject_token_provider: Arc<dyn subject_token::dynamic::SubjectTokenProvider>,
) -> Self {
Self {
subject_token_provider,
}
}
}
#[async_trait::async_trait]
impl subject_token::dynamic::SubjectTokenProvider for ProgrammaticSourcedCredentials {
async fn subject_token(&self) -> Result<SubjectToken, CredentialsError> {
return self.subject_token_provider.subject_token().await;
}
}