From 4b268170d7cce0588a6d962cce4c41bda63c7b5b Mon Sep 17 00:00:00 2001 From: Taylor Vann Date: Sun, 6 Jul 2025 22:10:46 -0700 Subject: [PATCH 1/6] spotted lazy names --- response/src/response_paths.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/response/src/response_paths.rs b/response/src/response_paths.rs index c35ca27..d9c6405 100644 --- a/response/src/response_paths.rs +++ b/response/src/response_paths.rs @@ -33,28 +33,28 @@ pub async fn get_filepath(directory: &PathBuf, filepath: &PathBuf) -> Option sdf, + let metadata = match fs::metadata(&target_path).await { + Ok(md) => md, _ => return None, }; // if file bail early - if mtdt.is_file() { + if metadata.is_file() { return Some(target_path); } // if directory try an index.html file - if mtdt.is_dir() { + if metadata.is_dir() { target_path.push("index.html"); - } - - let mtdt = match fs::metadata(&target_path).await { - Ok(sdf) => sdf, - _ => return None, - }; - - if mtdt.is_file() { - return Some(target_path); + + let metadata = match fs::metadata(&target_path).await { + Ok(md) => md, + _ => return None, + }; + + if metadata.is_file() { + return Some(target_path); + } } None From 788e0838f558729bff286ddea34a2d58ccdf1a64 Mon Sep 17 00:00:00 2001 From: Taylor Vann Date: Sun, 6 Jul 2025 22:11:00 -0700 Subject: [PATCH 2/6] format --- response/src/response_paths.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/response/src/response_paths.rs b/response/src/response_paths.rs index d9c6405..be7bbe8 100644 --- a/response/src/response_paths.rs +++ b/response/src/response_paths.rs @@ -46,7 +46,7 @@ pub async fn get_filepath(directory: &PathBuf, filepath: &PathBuf) -> Option md, _ => return None, From 9bbabf2f7ee9bc35add1b12e0a2ae2c5651a8fd0 Mon Sep 17 00:00:00 2001 From: Taylor Vann Date: Sun, 6 Jul 2025 22:35:53 -0700 Subject: [PATCH 3/6] even more lazy names found --- response/src/response_paths.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/response/src/response_paths.rs b/response/src/response_paths.rs index be7bbe8..36ec21b 100644 --- a/response/src/response_paths.rs +++ b/response/src/response_paths.rs @@ -47,12 +47,12 @@ pub async fn get_filepath(directory: &PathBuf, filepath: &PathBuf) -> Option md, _ => return None, }; - if metadata.is_file() { + if updated_metadata.is_file() { return Some(target_path); } } From e3ee149ab7e47fd10826ffe067d59b4904a65247 Mon Sep 17 00:00:00 2001 From: Taylor Vann Date: Sun, 6 Jul 2025 23:44:22 -0700 Subject: [PATCH 4/6] more naming nits --- response/src/get_response.rs | 18 ++++++++---------- response/src/head_response.rs | 2 +- response/src/response_paths.rs | 4 ++-- response/src/responses.rs | 8 ++++---- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/response/src/get_response.rs b/response/src/get_response.rs index ea03ea7..5b4206e 100644 --- a/response/src/get_response.rs +++ b/response/src/get_response.rs @@ -11,12 +11,10 @@ use tokio_util::io::ReaderStream; use crate::content_type::get_content_type; use crate::last_resort_response::build_last_resort_response; use crate::range_response::build_range_response; -use crate::response_paths::{ - add_extension, get_encodings, get_filepath, get_path_from_request_url, -}; +use crate::response_paths::{add_extension, get_encodings, get_path, get_path_from_request_url}; use crate::type_flyweight::{BoxedResponse, ResponseParams, NOT_FOUND_404}; -pub async fn build_get_response( +pub async fn build_response( req: Request, res_params: ResponseParams, ) -> Result { @@ -26,10 +24,10 @@ pub async fn build_get_response( } // fallback to file response - build_file_response(req, &res_params).await + fallback_to_get_response(req, &res_params).await } -async fn build_file_response( +async fn fallback_to_get_response( req: Request, res_params: &ResponseParams, ) -> Result { @@ -62,7 +60,7 @@ async fn build_req_path_response( _ => return None, }; - build_response(&filepath, StatusCode::OK, &encodings).await + build_get_response(&filepath, StatusCode::OK, &encodings).await } async fn build_not_found_response( @@ -76,15 +74,15 @@ async fn build_not_found_response( }; // file starts with directory - let filepath_404 = match get_filepath(directory, fallback).await { + let filepath_404 = match get_path(directory, fallback).await { Some(fb) => fb, _ => return None, }; - build_response(&filepath_404, StatusCode::NOT_FOUND, &encodings).await + build_get_response(&filepath_404, StatusCode::NOT_FOUND, &encodings).await } -async fn build_response( +async fn build_get_response( filepath: &PathBuf, status_code: StatusCode, encodings: &Option>, diff --git a/response/src/head_response.rs b/response/src/head_response.rs index 9abdcb9..a1a168a 100644 --- a/response/src/head_response.rs +++ b/response/src/head_response.rs @@ -11,7 +11,7 @@ use crate::last_resort_response::build_last_resort_response; use crate::response_paths::{add_extension, get_encodings, get_path_from_request_url}; use crate::type_flyweight::{BoxedResponse, ResponseParams, NOT_FOUND_404}; -pub async fn build_head_response( +pub async fn build_response( req: Request, res_params: ResponseParams, ) -> Result { diff --git a/response/src/response_paths.rs b/response/src/response_paths.rs index 36ec21b..1b62bb3 100644 --- a/response/src/response_paths.rs +++ b/response/src/response_paths.rs @@ -19,10 +19,10 @@ pub async fn get_path_from_request_url( _ => uri_path, }; - get_filepath(directory, &PathBuf::from(stripped)).await + get_path(directory, &PathBuf::from(stripped)).await } -pub async fn get_filepath(directory: &PathBuf, filepath: &PathBuf) -> Option { +pub async fn get_path(directory: &PathBuf, filepath: &PathBuf) -> Option { let mut target_path = match path::absolute(directory.join(&filepath)) { Ok(pb) => pb, _ => return None, diff --git a/response/src/responses.rs b/response/src/responses.rs index b29c275..7513620 100644 --- a/response/src/responses.rs +++ b/response/src/responses.rs @@ -3,8 +3,8 @@ use hyper::http::Request; use hyper::Method; use hyper::StatusCode; -use crate::get_response::build_get_response; -use crate::head_response::build_head_response; +use crate::get_response; +use crate::head_response; use crate::last_resort_response::build_last_resort_response; use crate::type_flyweight::{BoxedResponse, ResponseParams}; @@ -15,8 +15,8 @@ pub async fn build_response( res_params: ResponseParams, ) -> Result { match req.method() { - &Method::GET => build_get_response(req, res_params).await, - &Method::HEAD => build_head_response(req, res_params).await, + &Method::GET => get_response::build_response(req, res_params).await, + &Method::HEAD => head_response::build_response(req, res_params).await, _ => build_last_resort_response(StatusCode::METHOD_NOT_ALLOWED, METHOD_NOT_ALLOWED_405), } } From 32c79cb28807a407ff48252085e9dacbf2b1462e Mon Sep 17 00:00:00 2001 From: Taylor Vann Date: Mon, 7 Jul 2025 01:11:55 -0700 Subject: [PATCH 5/6] all constants in flyweight regardless of usage --- response/src/get_response.rs | 13 ++----------- response/src/range_response.rs | 8 ++++---- response/src/responses.rs | 4 +--- response/src/type_flyweight.rs | 4 +++- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/response/src/get_response.rs b/response/src/get_response.rs index 5b4206e..247c4a3 100644 --- a/response/src/get_response.rs +++ b/response/src/get_response.rs @@ -10,7 +10,7 @@ use tokio_util::io::ReaderStream; use crate::content_type::get_content_type; use crate::last_resort_response::build_last_resort_response; -use crate::range_response::build_range_response; +use crate::range_response; use crate::response_paths::{add_extension, get_encodings, get_path, get_path_from_request_url}; use crate::type_flyweight::{BoxedResponse, ResponseParams, NOT_FOUND_404}; @@ -19,23 +19,14 @@ pub async fn build_response( res_params: ResponseParams, ) -> Result { // check for range request - if let Some(res) = build_range_response(&req, &res_params).await { + if let Some(res) = range_response::build_response(&req, &res_params).await { return res; } // fallback to file response - fallback_to_get_response(req, &res_params).await -} - -async fn fallback_to_get_response( - req: Request, - res_params: &ResponseParams, -) -> Result { - // request file let encodings = get_encodings(&req, &res_params.available_encodings); // serve file - // if get_path_from_request_url, build response if let Some(res) = build_req_path_response(&req, &res_params.directory, &encodings).await { return res; }; diff --git a/response/src/range_response.rs b/response/src/range_response.rs index f0dfcbc..4e58ee9 100644 --- a/response/src/range_response.rs +++ b/response/src/range_response.rs @@ -13,7 +13,9 @@ use tokio_util::io::ReaderStream; use crate::content_type::get_content_type; use crate::last_resort_response::build_last_resort_response; use crate::response_paths::{add_extension, get_encodings, get_path_from_request_url}; -use crate::type_flyweight::{BoxedResponse, ResponseParams, BAD_REQUEST_400, NOT_FOUND_404}; +use crate::type_flyweight::{ + BoxedResponse, ResponseParams, BAD_REQUEST_400, NOT_FOUND_404, RANGE_NOT_SATISFIABLE_416, +}; // Range: =- // Range: =- @@ -22,9 +24,7 @@ use crate::type_flyweight::{BoxedResponse, ResponseParams, BAD_REQUEST_400, NOT_ // multi range requests require an entirely different strategy // Range: =-, …, - -pub const RANGE_NOT_SATISFIABLE_416: &str = "416 range not satisfiable"; - -pub async fn build_range_response( +pub async fn build_response( req: &Request, res_params: &ResponseParams, ) -> Option> { diff --git a/response/src/responses.rs b/response/src/responses.rs index 7513620..22cf50f 100644 --- a/response/src/responses.rs +++ b/response/src/responses.rs @@ -6,9 +6,7 @@ use hyper::StatusCode; use crate::get_response; use crate::head_response; use crate::last_resort_response::build_last_resort_response; -use crate::type_flyweight::{BoxedResponse, ResponseParams}; - -pub const METHOD_NOT_ALLOWED_405: &str = "405 method not allowed"; +use crate::type_flyweight::{BoxedResponse, ResponseParams, METHOD_NOT_ALLOWED_405}; pub async fn build_response( req: Request, diff --git a/response/src/type_flyweight.rs b/response/src/type_flyweight.rs index 5456639..3c96087 100644 --- a/response/src/type_flyweight.rs +++ b/response/src/type_flyweight.rs @@ -8,8 +8,10 @@ use crate::available_encodings::AvailableEncodings; pub type BoxedResponse = Response>; -pub const NOT_FOUND_404: &str = "404 not found"; pub const BAD_REQUEST_400: &str = "400 bad request"; +pub const NOT_FOUND_404: &str = "404 not found"; +pub const METHOD_NOT_ALLOWED_405: &str = "405 method not allowed"; +pub const RANGE_NOT_SATISFIABLE_416: &str = "416 range not satisfiable"; #[derive(Clone, Debug)] pub struct ResponseParams { From 0eb29e4b795a4681ce6b44280d7cbcfc5b5fc5f7 Mon Sep 17 00:00:00 2001 From: Taylor Vann Date: Mon, 7 Jul 2025 01:28:38 -0700 Subject: [PATCH 6/6] last_resort_response also exports a build_response --- response/src/get_response.rs | 4 ++-- response/src/head_response.rs | 4 ++-- response/src/last_resort_response.rs | 2 +- response/src/range_response.rs | 12 ++++++------ response/src/responses.rs | 7 +++++-- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/response/src/get_response.rs b/response/src/get_response.rs index 247c4a3..fec230f 100644 --- a/response/src/get_response.rs +++ b/response/src/get_response.rs @@ -9,7 +9,7 @@ use tokio::fs; use tokio_util::io::ReaderStream; use crate::content_type::get_content_type; -use crate::last_resort_response::build_last_resort_response; +use crate::last_resort_response; use crate::range_response; use crate::response_paths::{add_extension, get_encodings, get_path, get_path_from_request_url}; use crate::type_flyweight::{BoxedResponse, ResponseParams, NOT_FOUND_404}; @@ -38,7 +38,7 @@ pub async fn build_response( return res; }; - build_last_resort_response(StatusCode::NOT_FOUND, NOT_FOUND_404) + last_resort_response::build_response(StatusCode::NOT_FOUND, NOT_FOUND_404) } async fn build_req_path_response( diff --git a/response/src/head_response.rs b/response/src/head_response.rs index a1a168a..c1485ab 100644 --- a/response/src/head_response.rs +++ b/response/src/head_response.rs @@ -7,7 +7,7 @@ use std::path::PathBuf; use tokio::fs; use crate::content_type::get_content_type; -use crate::last_resort_response::build_last_resort_response; +use crate::last_resort_response; use crate::response_paths::{add_extension, get_encodings, get_path_from_request_url}; use crate::type_flyweight::{BoxedResponse, ResponseParams, NOT_FOUND_404}; @@ -31,7 +31,7 @@ pub async fn build_response( } }; - build_last_resort_response(StatusCode::NOT_FOUND, NOT_FOUND_404) + last_resort_response::build_response(StatusCode::NOT_FOUND, NOT_FOUND_404) } async fn compose_encoded_response( diff --git a/response/src/last_resort_response.rs b/response/src/last_resort_response.rs index e576b38..bc1a1ac 100644 --- a/response/src/last_resort_response.rs +++ b/response/src/last_resort_response.rs @@ -7,7 +7,7 @@ use hyper::StatusCode; use crate::content_type::HTML; use crate::type_flyweight::BoxedResponse; -pub fn build_last_resort_response( +pub fn build_response( status_code: StatusCode, body: &'static str, ) -> Result { diff --git a/response/src/range_response.rs b/response/src/range_response.rs index 4e58ee9..967aff6 100644 --- a/response/src/range_response.rs +++ b/response/src/range_response.rs @@ -11,7 +11,7 @@ use tokio::io::AsyncSeekExt; use tokio_util::io::ReaderStream; use crate::content_type::get_content_type; -use crate::last_resort_response::build_last_resort_response; +use crate::last_resort_response; use crate::response_paths::{add_extension, get_encodings, get_path_from_request_url}; use crate::type_flyweight::{ BoxedResponse, ResponseParams, BAD_REQUEST_400, NOT_FOUND_404, RANGE_NOT_SATISFIABLE_416, @@ -43,13 +43,13 @@ pub async fn build_response( } }; - return Some(build_last_resort_response( + return Some(last_resort_response::build_response( StatusCode::RANGE_NOT_SATISFIABLE, RANGE_NOT_SATISFIABLE_416, )); } - Some(build_last_resort_response( + Some(last_resort_response::build_response( StatusCode::NOT_FOUND, NOT_FOUND_404, )) @@ -207,10 +207,10 @@ async fn compose_single_range_response( _ => return None, }; - let (start, end) = match get_start_end(ranges, size) { + let (start, end) = match get_start_and_end(ranges, size) { Some(se) => se, _ => { - return Some(build_last_resort_response( + return Some(last_resort_response::build_response( StatusCode::BAD_REQUEST, BAD_REQUEST_400, )) @@ -242,7 +242,7 @@ async fn compose_single_range_response( return Some(builder.body(boxed_body)); } -fn get_start_end( +fn get_start_and_end( ranges: &Vec<(Option, Option)>, size: usize, ) -> Option<(usize, usize)> { diff --git a/response/src/responses.rs b/response/src/responses.rs index 22cf50f..052fbfb 100644 --- a/response/src/responses.rs +++ b/response/src/responses.rs @@ -5,7 +5,7 @@ use hyper::StatusCode; use crate::get_response; use crate::head_response; -use crate::last_resort_response::build_last_resort_response; +use crate::last_resort_response; use crate::type_flyweight::{BoxedResponse, ResponseParams, METHOD_NOT_ALLOWED_405}; pub async fn build_response( @@ -15,6 +15,9 @@ pub async fn build_response( match req.method() { &Method::GET => get_response::build_response(req, res_params).await, &Method::HEAD => head_response::build_response(req, res_params).await, - _ => build_last_resort_response(StatusCode::METHOD_NOT_ALLOWED, METHOD_NOT_ALLOWED_405), + _ => last_resort_response::build_response( + StatusCode::METHOD_NOT_ALLOWED, + METHOD_NOT_ALLOWED_405, + ), } }