use crate::core::{
config::Config,
constants::{CUSTOM_REQUEST_ID, USER_AGENT_HEADER},
req_option::RequestOption,
utils::user_agent,
};
use reqwest::RequestBuilder;
pub struct HeaderBuilder;
impl HeaderBuilder {
pub fn build_headers(
mut req_builder: RequestBuilder,
config: &Config,
option: &RequestOption,
) -> RequestBuilder {
if !option.request_id.is_empty() {
req_builder = req_builder.header(CUSTOM_REQUEST_ID, &option.request_id);
}
for (key, value) in &option.header {
req_builder = req_builder.header(key, value);
}
for (key, value) in &config.header {
req_builder = req_builder.header(key, value);
}
req_builder = req_builder.header(USER_AGENT_HEADER, user_agent());
req_builder
}
pub fn add_header(req_builder: RequestBuilder, key: &str, value: &str) -> RequestBuilder {
req_builder.header(key, value)
}
pub fn add_headers(
mut req_builder: RequestBuilder,
headers: &[(String, String)],
) -> RequestBuilder {
for (key, value) in headers {
req_builder = req_builder.header(key, value);
}
req_builder
}
}