From 0e538dd9572de0e2165f484a84332962b1dee959 Mon Sep 17 00:00:00 2001
From: Jose Quintana <1700322+joseluisq@users.noreply.github.com>
Date: Wed, 16 Nov 2022 23:33:22 +0100
Subject: [PATCH] refactor: http-related extension traits (#160)
https://rust-lang.github.io/rfcs/0445-extension-trait-conventions.html
---
src/compression.rs | 4 ++--
src/directory_listing.rs | 5 ++---
src/error_page.rs | 4 ++--
src/exts/http.rs | 36 ++++++++++++++++++++++++++++++++++++
src/exts/mod.rs | 3 +++
src/handler.rs | 12 +++++++-----
src/lib.rs | 1 +
src/static_files.rs | 97 +++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------
8 files changed, 100 insertions(+), 62 deletions(-)
create mode 100644 src/exts/http.rs
create mode 100644 src/exts/mod.rs
diff --git a/src/compression.rs b/src/compression.rs
index 54e0212..a85b6ff 100644
--- a/src/compression.rs
+++ b/src/compression.rs
@@ -14,7 +14,7 @@ use std::pin::Pin;
use std::task::{Context, Poll};
use tokio_util::io::{ReaderStream, StreamReader};
-use crate::Result;
+use crate::{exts::http::MethodExt, Result};
/// Contains a fixed list of common text-based MIME types in order to apply compression.
pub const TEXT_MIME_TYPES: [&str; 24] = [
@@ -62,7 +62,7 @@ pub fn auto(
resp: Response
,
) -> Result> {
// Skip compression for HEAD and OPTIONS request methods
- if method == Method::HEAD || method == Method::OPTIONS {
+ if method.is_head() || method.is_options() {
return Ok(resp);
}
diff --git a/src/directory_listing.rs b/src/directory_listing.rs
index 788e9a0..052b576 100644
--- a/src/directory_listing.rs
+++ b/src/directory_listing.rs
@@ -13,7 +13,7 @@ use std::path::Path;
use std::time::{SystemTime, UNIX_EPOCH};
use structopt::clap::arg_enum;
-use crate::Result;
+use crate::{exts::http::MethodExt, Result};
arg_enum! {
#[derive(Debug, Serialize, Deserialize, Clone)]
@@ -36,8 +36,6 @@ pub fn auto_index<'a>(
dir_listing_order: u8,
dir_listing_format: &'a DirListFmt,
) -> impl Future