aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorboastful-squirrel <boastful.squirrel@gmail.com>2019-05-03 17:32:51 +0000
committerboastful-squirrel <boastful.squirrel@gmail.com>2019-05-03 17:32:51 +0000
commita73a74283f64986ff6a0b6da4c234a828bc52522 (patch)
tree04e54430bfd8ac2f16e5c5faf59effdffcbfbfb2 /src
parentMerge branch 'master' into themed-errors (diff)
downloadminiserve-a73a74283f64986ff6a0b6da4c234a828bc52522.tar.gz
miniserve-a73a74283f64986ff6a0b6da4c234a828bc52522.zip
Return QueryParameters struct instead of tuple
Diffstat (limited to '')
-rw-r--r--src/args.rs2
-rw-r--r--src/auth.rs2
-rw-r--r--src/file_upload.rs22
-rw-r--r--src/listing.rs50
-rw-r--r--src/main.rs12
5 files changed, 44 insertions, 44 deletions
diff --git a/src/args.rs b/src/args.rs
index 5671425..6a9bf83 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -161,7 +161,7 @@ pub fn parse_args() -> crate::MiniserveConfig {
}
}
-#[cfg_attr(rustfmt, rustfmt_skip)]
+#[rustfmt::skip]
#[cfg(test)]
mod tests {
use super::*;
diff --git a/src/auth.rs b/src/auth.rs
index c3cbd54..f2e5fcf 100644
--- a/src/auth.rs
+++ b/src/auth.rs
@@ -168,7 +168,7 @@ fn build_unauthorized_response(
.into_string()
}
-#[cfg_attr(rustfmt, rustfmt_skip)]
+#[rustfmt::skip]
#[cfg(test)]
mod tests {
use super::*;
diff --git a/src/file_upload.rs b/src/file_upload.rs
index 36b2401..537c90c 100644
--- a/src/file_upload.rs
+++ b/src/file_upload.rs
@@ -127,9 +127,9 @@ pub fn upload_file(
"/".to_string()
};
- let (sort_method, sort_order, _, color_scheme, path) = listing::extract_query_parameters(req);
- let color_scheme = color_scheme.unwrap_or(default_color_scheme);
- let upload_path = match path {
+ let query_params = listing::extract_query_parameters(req);
+ let color_scheme = query_params.theme.unwrap_or(default_color_scheme);
+ let upload_path = match query_params.path.clone() {
Some(path) => match path.strip_prefix(Component::RootDir) {
Ok(stripped_path) => stripped_path.to_owned(),
Err(_) => path.clone(),
@@ -142,8 +142,8 @@ pub fn upload_file(
&err.to_string(),
StatusCode::BAD_REQUEST,
&return_path,
- sort_method,
- sort_order,
+ query_params.sort,
+ query_params.order,
color_scheme,
default_color_scheme,
));
@@ -161,8 +161,8 @@ pub fn upload_file(
&err.to_string(),
StatusCode::INTERNAL_SERVER_ERROR,
&return_path,
- sort_method,
- sort_order,
+ query_params.sort,
+ query_params.order,
color_scheme,
default_color_scheme,
));
@@ -180,8 +180,8 @@ pub fn upload_file(
&err.to_string(),
StatusCode::BAD_REQUEST,
&return_path,
- sort_method,
- sort_order,
+ query_params.sort,
+ query_params.order,
color_scheme,
default_color_scheme,
));
@@ -204,8 +204,8 @@ pub fn upload_file(
&e.to_string(),
StatusCode::INTERNAL_SERVER_ERROR,
&return_path,
- sort_method,
- sort_order,
+ query_params.sort,
+ query_params.order,
color_scheme,
default_color_scheme,
),
diff --git a/src/listing.rs b/src/listing.rs
index b3c21ae..49802bc 100644
--- a/src/listing.rs
+++ b/src/listing.rs
@@ -145,7 +145,7 @@ pub fn directory_listing<S>(
Err(_) => base.to_path_buf(),
};
- let (sort_method, sort_order, download, color_scheme, _) = extract_query_parameters(req);
+ let query_params = extract_query_parameters(req);
let mut entries: Vec<Entry> = Vec::new();
@@ -203,7 +203,7 @@ pub fn directory_listing<S>(
}
}
- if let Some(sorting_method) = sort_method {
+ if let Some(sorting_method) = query_params.sort {
match sorting_method {
SortingMethod::Name => entries
.sort_by(|e1, e2| alphanumeric_sort::compare_str(e1.name.clone(), e2.name.clone())),
@@ -227,15 +227,15 @@ pub fn directory_listing<S>(
entries.sort_by(|e1, e2| alphanumeric_sort::compare_str(e1.name.clone(), e2.name.clone()))
}
- if let Some(sorting_order) = sort_order {
+ if let Some(sorting_order) = query_params.order {
if let SortingOrder::Descending = sorting_order {
entries.reverse()
}
}
- let color_scheme = color_scheme.unwrap_or_else(|| default_color_scheme);
+ let color_scheme = query_params.theme.unwrap_or(default_color_scheme);
- if let Some(compression_method) = &download {
+ if let Some(compression_method) = &query_params.download {
log::info!(
"Creating an archive ({extension}) of {path}...",
extension = compression_method.extension(),
@@ -264,8 +264,8 @@ pub fn directory_listing<S>(
&err.to_string(),
StatusCode::INTERNAL_SERVER_ERROR,
serve_path,
- sort_method,
- sort_order,
+ query_params.sort,
+ query_params.order,
color_scheme,
default_color_scheme,
false,
@@ -284,8 +284,8 @@ pub fn directory_listing<S>(
entries,
is_root,
page_parent,
- sort_method,
- sort_order,
+ query_params.sort,
+ query_params.order,
default_color_scheme,
color_scheme,
file_upload,
@@ -297,27 +297,25 @@ pub fn directory_listing<S>(
}
}
-pub fn extract_query_parameters<S>(
- req: &HttpRequest<S>,
-) -> (
- Option<SortingMethod>,
- Option<SortingOrder>,
- Option<CompressionMethod>,
- Option<ColorScheme>,
- Option<PathBuf>,
-) {
+pub fn extract_query_parameters<S>(req: &HttpRequest<S>) -> QueryParameters {
match Query::<QueryParameters>::extract(req) {
- Ok(query) => (
- query.sort,
- query.order,
- query.download.clone(),
- query.theme,
- query.path.clone(),
- ),
+ Ok(query) => QueryParameters {
+ sort: query.sort,
+ order: query.order,
+ download: query.download.clone(),
+ theme: query.theme,
+ path: query.path.clone(),
+ },
Err(e) => {
let err = ContextualError::ParseError("query parameters".to_string(), e.to_string());
errors::log_error_chain(err.to_string());
- (None, None, None, None, None)
+ QueryParameters {
+ sort: None,
+ order: None,
+ download: None,
+ theme: None,
+ path: None,
+ }
}
}
}
diff --git a/src/main.rs b/src/main.rs
index 07827c0..bcfda09 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -83,7 +83,9 @@ fn run() -> Result<(), ContextualError> {
&& miniserve_config
.path
.symlink_metadata()
- .map_err(|e| ContextualError::IOError("Failed to retrieve symlink's metadata".to_string(), e))?
+ .map_err(|e| {
+ ContextualError::IOError("Failed to retrieve symlink's metadata".to_string(), e)
+ })?
.file_type()
.is_symlink()
{
@@ -285,8 +287,8 @@ fn error_404(req: &HttpRequest<crate::MiniserveConfig>) -> Result<HttpResponse,
None => "/".to_string(),
};
- let (sort_method, sort_order, _, color_scheme, _) = listing::extract_query_parameters(req);
- let color_scheme = color_scheme.unwrap_or(default_color_scheme);
+ let query_params = listing::extract_query_parameters(req);
+ let color_scheme = query_params.theme.unwrap_or(default_color_scheme);
errors::log_error_chain(err_404.to_string());
@@ -295,8 +297,8 @@ fn error_404(req: &HttpRequest<crate::MiniserveConfig>) -> Result<HttpResponse,
&err_404.to_string(),
StatusCode::NOT_FOUND,
&return_address,
- sort_method,
- sort_order,
+ query_params.sort,
+ query_params.order,
color_scheme,
default_color_scheme,
false,