use agent_framework_core::error::Result;
use async_trait::async_trait;
#[async_trait]
pub trait TokenCredential: Send + Sync {
async fn get_token(&self) -> Result<String>;
async fn get_token_for_scope(&self, _scope: &str) -> Result<String> {
self.get_token().await
}
}
#[derive(Debug, Clone)]
pub struct StaticTokenCredential {
token: String,
}
impl StaticTokenCredential {
pub fn new(token: impl Into<String>) -> Self {
Self {
token: token.into(),
}
}
}
#[async_trait]
impl TokenCredential for StaticTokenCredential {
async fn get_token(&self) -> Result<String> {
Ok(self.token.clone())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn static_token_credential_returns_configured_token() {
let cred = StaticTokenCredential::new("my-token");
assert_eq!(cred.get_token().await.unwrap(), "my-token");
}
}