1use std::collections::HashMap;
2
3use reqwest::header::HeaderMap;
4
5pub fn merge_headers(
7 existing: Vec<(String, String)>,
8 new_headers: &[(String, String)],
9) -> Vec<(String, String)> {
10 let mut merged: HashMap<String, String> = existing.into_iter().collect();
11 for (key, value) in new_headers.iter() {
12 if merged.contains_key(key) {
13 if value.is_empty() {
14 merged.remove(key);
15 } else {
16 merged.entry(key.clone()).and_modify(|v| *v = value.clone());
17 }
18 } else {
19 merged.insert(key.clone(), value.clone());
20 }
21 }
22 merged.into_iter().collect()
23}
24
25pub fn build_header_map(headers: &[(String, String)]) -> HeaderMap {
27 let mut header_map = HeaderMap::new();
28 for (key, value) in headers {
29 if let Ok(header_name) = key.parse::<reqwest::header::HeaderName>() {
30 if let Ok(header_value) = value.parse() {
31 header_map.insert(header_name, header_value);
32 }
33 }
34 }
35 header_map
36}