aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAli MJ Al-Nasrawy <alimjalnasrawy@gmail.com>2021-05-19 20:23:30 +0000
committerAli MJ Al-Nasrawy <alimjalnasrawy@gmail.com>2021-08-31 12:48:18 +0000
commit3c80cc18748d18963e794e06baca8283f6ac4f43 (patch)
treec23637322264d740a3ace028268bcfbb75398a60 /src
parentextract_query_parameters(): avoid clone and simplify (diff)
downloadminiserve-3c80cc18748d18963e794e06baca8283f6ac4f43.tar.gz
miniserve-3c80cc18748d18963e794e06baca8283f6ac4f43.zip
Simplify custom headers
Signed-off-by: Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/args.rs6
-rw-r--r--src/main.rs15
2 files changed, 6 insertions, 15 deletions
diff --git a/src/args.rs b/src/args.rs
index 5467573..ff8d92b 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -1,4 +1,3 @@
-use bytes::Bytes;
use clap::{Clap, ValueHint};
use clap_generate::Shell;
use http::header::{HeaderMap, HeaderName, HeaderValue};
@@ -212,15 +211,14 @@ fn parse_auth(src: &str) -> Result<auth::RequiredAuth, ContextualError> {
/// Custom header parser (allow multiple headers input)
pub fn parse_header(src: &str) -> Result<HeaderMap, httparse::Error> {
let mut headers = [httparse::EMPTY_HEADER; 1];
- let mut header = src.to_string();
- header.push('\n');
+ let header = format!("{}\n", src);
httparse::parse_headers(header.as_bytes(), &mut headers)?;
let mut header_map = HeaderMap::new();
if let Some(h) = headers.first() {
if h.name != httparse::EMPTY_HEADER.name {
header_map.insert(
- HeaderName::from_bytes(&Bytes::copy_from_slice(h.name.as_bytes())).unwrap(),
+ HeaderName::from_bytes(h.name.as_bytes()).unwrap(),
HeaderValue::from_bytes(h.value).unwrap(),
);
}
diff --git a/src/main.rs b/src/main.rs
index e5cc596..4ea1154 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -275,17 +275,10 @@ fn create_tcp_listener(addr: SocketAddr) -> io::Result<TcpListener> {
}
fn configure_header(conf: &MiniserveConfig) -> middleware::DefaultHeaders {
- let headers = conf.clone().header;
-
- let mut default_headers = middleware::DefaultHeaders::new();
- for header in headers {
- for (header_name, header_value) in header.into_iter() {
- if let Some(header_name) = header_name {
- default_headers = default_headers.header(&header_name, header_value);
- }
- }
- }
- default_headers
+ conf.header.iter().flatten().fold(
+ middleware::DefaultHeaders::new(),
+ |headers, (header_name, header_value)| headers.header(header_name, header_value),
+ )
}
/// Configures the Actix application