use std::collections::HashMap;
use crate::internals::proto::Headers as HeaderProto;
#[derive(Clone, Default)]
pub(crate) struct Headers {
added: HashMap<String, String>,
removed: Vec<String>,
}
impl Headers {
pub(crate) fn add(&mut self, name: impl Into<String>, value: impl Into<String>) {
self.added.insert(name.into().to_lowercase(), value.into());
}
pub(crate) fn remove(&mut self, name: impl Into<String>) {
self.removed.push(name.into().to_lowercase());
}
pub(crate) fn has_entries(&self) -> bool {
!self.added.is_empty() || !self.removed.is_empty()
}
}
impl From<Headers> for HeaderProto {
fn from(headers: Headers) -> Self {
HeaderProto {
add: headers
.added
.iter()
.map(|a| format!("{}:{}", a.0, a.1))
.collect(),
remove: headers.removed,
add_parsed: HashMap::new(), }
}
}