use crate::auth::provider::AuthProvider;
use crate::error::EveryMapResult;
use async_trait::async_trait;
use reqwest::header::{HeaderValue, AUTHORIZATION};
use reqwest::RequestBuilder;
use zeroize::Zeroize;
#[derive(Zeroize)]
#[zeroize(drop)]
pub struct HeaderAuthProvider {
value: String,
}
impl HeaderAuthProvider {
pub fn new(value: String) -> Self {
Self { value }
}
}
#[async_trait]
impl AuthProvider for HeaderAuthProvider {
async fn apply(&self, request: RequestBuilder) -> EveryMapResult<RequestBuilder> {
let header_value = HeaderValue::from_str(&self.value).map_err(|e| {
crate::error::EveryMapError::AuthError {
provider: "unknown".to_string(),
message: format!("Invalid auth header value: {}", e),
}
})?;
Ok(request.header(AUTHORIZATION, header_value))
}
}