use reqwest::header::{AUTHORIZATION, HeaderMap, HeaderName, HeaderValue};
#[derive(Clone)]
pub(crate) struct ApiKey(String);
impl ApiKey {
pub(crate) fn new(key: String) -> Self {
ApiKey(key)
}
pub(crate) fn header_value(&self) -> HeaderValue {
let mut value = HeaderValue::from_str(&format!("Bearer {}", self.0))
.unwrap_or_else(|_| HeaderValue::from_static("Bearer"));
value.set_sensitive(true);
value
}
}
impl std::fmt::Debug for ApiKey {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str("ApiKey(***redacted***)")
}
}
pub(crate) fn apply_authorization(headers: &mut HeaderMap, key: &ApiKey) {
headers.remove(AUTHORIZATION);
headers.insert(AUTHORIZATION, key.header_value());
}
pub(crate) fn remove_header_ci(headers: &mut HeaderMap, name: &str) {
if let Ok(parsed) = name.parse::<HeaderName>() {
headers.remove(parsed);
}
}