object_storage/oss/util/
headers.rs1use reqwest::header::{
2 HeaderMap, HeaderName, HeaderValue, AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, DATE, HOST,
3};
4
5pub async fn construct_headers(
7 content_md5: Option<&str>,
8 contest_length: Option<&str>,
9 contest_type: Option<&str>,
10 host: &str,
11 date: &str,
12 authorization: &str,
13) -> HeaderMap {
14 let mut headers = HeaderMap::new();
15 insert_header_if_present(&mut headers, CONTENT_LENGTH, contest_length).await;
16 insert_header_if_present(&mut headers, CONTENT_TYPE, contest_type).await;
17 insert_header_if_present(
18 &mut headers,
19 HeaderName::from_static("content-md5"),
20 content_md5,
21 )
22 .await;
23 insert_header(&mut headers, AUTHORIZATION, authorization);
24 insert_header(&mut headers, HOST, host);
25 insert_header(&mut headers, DATE, date);
26 headers
27}
28
29async fn insert_header_if_present(
30 headers: &mut HeaderMap,
31 header_name: HeaderName,
32 header_value: Option<&str>,
33) {
34 if let Some(header_value) = header_value {
35 insert_header(headers, header_name, header_value);
36 }
37}
38
39fn insert_header(headers: &mut HeaderMap, header_name: HeaderName, header_value: &str) {
40 headers.insert(header_name, HeaderValue::from_str(header_value).unwrap());
41}