From 31cab65f9592998857a801e1067e906ca2e58f14 Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Thu, 20 May 2021 15:56:10 +0300 Subject: extract_query_parameters(): avoid clone and simplify Signe-off-by: Ali MJ Al-Nasrawy --- src/listing.rs | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/src/listing.rs b/src/listing.rs index b2730de..ef4c8c8 100644 --- a/src/listing.rs +++ b/src/listing.rs @@ -27,7 +27,7 @@ mod percent_encode_sets { } /// Query parameters -#[derive(Deserialize)] +#[derive(Deserialize, Default)] pub struct QueryParameters { pub path: Option, pub sort: Option, @@ -383,23 +383,11 @@ pub fn directory_listing( pub fn extract_query_parameters(req: &HttpRequest) -> QueryParameters { match Query::::from_query(req.query_string()) { - Ok(query) => QueryParameters { - sort: query.sort, - order: query.order, - download: query.download, - qrcode: query.qrcode.to_owned(), - path: query.path.clone(), - }, + Ok(Query(query_params)) => query_params, Err(e) => { let err = ContextualError::ParseError("query parameters".to_string(), e.to_string()); errors::log_error_chain(err.to_string()); - QueryParameters { - sort: None, - order: None, - download: None, - qrcode: None, - path: None, - } + QueryParameters::default() } } } -- cgit v1.2.3 From 3c80cc18748d18963e794e06baca8283f6ac4f43 Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Wed, 19 May 2021 23:23:30 +0300 Subject: Simplify custom headers Signed-off-by: Ali MJ Al-Nasrawy --- Cargo.toml | 1 - src/args.rs | 6 ++---- src/main.rs | 15 ++++----------- 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ada8e05..db51a4d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,7 +50,6 @@ qrcodegen = "1" mime = "0.3" httparse = "1" http = "0.2" -bytes = "1" atty = "0.2" rustls = { version = "0.19", optional = true } socket2 = "0.4" 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 { /// Custom header parser (allow multiple headers input) pub fn parse_header(src: &str) -> Result { 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 { } 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 -- cgit v1.2.3 From ff466d5128b655d797924bceb620c37326795bf4 Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Tue, 31 Aug 2021 15:51:33 +0300 Subject: Update Cargo.lock --- Cargo.lock | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4a3b2c2..901e5d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1404,7 +1404,6 @@ dependencies = [ "assert_cmd", "assert_fs", "atty", - "bytes", "bytesize", "chrono", "chrono-humanize", @@ -1849,9 +1848,9 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.28" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" +checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" dependencies = [ "unicode-xid", ] -- cgit v1.2.3