everymap_core/auth/
header.rs1use crate::auth::provider::AuthProvider;
2use crate::error::EveryMapResult;
3use async_trait::async_trait;
4use reqwest::header::{HeaderValue, AUTHORIZATION};
5use reqwest::RequestBuilder;
6use zeroize::Zeroize;
7
8#[derive(Zeroize)]
12#[zeroize(drop)]
13pub struct HeaderAuthProvider {
14 value: String,
15}
16
17impl HeaderAuthProvider {
18 pub fn new(value: String) -> Self {
23 Self { value }
24 }
25}
26
27#[async_trait]
28impl AuthProvider for HeaderAuthProvider {
29 async fn apply(&self, request: RequestBuilder) -> EveryMapResult<RequestBuilder> {
30 let header_value = HeaderValue::from_str(&self.value).map_err(|e| {
31 crate::error::EveryMapError::AuthError {
32 provider: "unknown".to_string(),
33 message: format!("Invalid auth header value: {}", e),
34 }
35 })?;
36 Ok(request.header(AUTHORIZATION, header_value))
37 }
38}