diff --git a/phono-server/src/cli.rs b/phono-server/src/cli.rs index 471a597..5dea7ed 100644 --- a/phono-server/src/cli.rs +++ b/phono-server/src/cli.rs @@ -1,12 +1,5 @@ -use std::net::SocketAddr; - use anyhow::Result; -use axum::{ - ServiceExt, - extract::Request, - http::{HeaderValue, header::CONTENT_SECURITY_POLICY}, - middleware::map_request, -}; +use axum::http::{HeaderValue, header::CONTENT_SECURITY_POLICY}; use chrono::{TimeDelta, Utc}; use clap::{Parser, Subcommand}; use tokio::time::sleep; @@ -15,7 +8,7 @@ use tower_http::{ compression::CompressionLayer, set_header::response::SetResponseHeaderLayer, trace::TraceLayer, }; -use crate::{app::App, middleware::lowercase_uri_path, routes::new_router, worker::run_worker}; +use crate::{app::App, routes::new_router, worker::run_worker}; #[derive(Parser)] #[command(version, about, long_about = None)] @@ -37,20 +30,18 @@ pub enum Commands { Serve, /// Run background worker Worker(WorkerArgs), - // TODO: add a low-frequency worker task exclusively for self-healing - // mechanisms like Governor::reset_all() } pub async fn serve_command(state: App) -> Result<()> { - let router = ServiceBuilder::new() - .layer(map_request(lowercase_uri_path)) - .layer(TraceLayer::new_for_http()) - .layer(CompressionLayer::new()) - .layer(SetResponseHeaderLayer::if_not_present( - CONTENT_SECURITY_POLICY, - HeaderValue::from_static("frame-ancestors 'none'"), - )) - .service(new_router(state.clone())); + let router = new_router(state.clone()).layer( + ServiceBuilder::new() + .layer(TraceLayer::new_for_http()) + .layer(CompressionLayer::new()) + .layer(SetResponseHeaderLayer::if_not_present( + CONTENT_SECURITY_POLICY, + HeaderValue::from_static("frame-ancestors 'none'"), + )), + ); let listener = tokio::net::TcpListener::bind((state.settings.host.clone(), state.settings.port)) @@ -63,12 +54,9 @@ pub async fn serve_command(state: App) -> Result<()> { state.settings.root_path ); - axum::serve( - listener, - ServiceExt::::into_make_service_with_connect_info::(router), - ) - .await - .map_err(Into::into) + axum::serve(listener, router).await?; + + Ok(()) } pub async fn worker_command(args: &WorkerArgs, state: App) -> Result<()> { diff --git a/phono-server/src/main.rs b/phono-server/src/main.rs index d58ffe4..5471964 100644 --- a/phono-server/src/main.rs +++ b/phono-server/src/main.rs @@ -31,7 +31,6 @@ mod cli; mod errors; mod extractors; mod field_info; -mod middleware; mod navigator; mod presentation_form; mod roles; diff --git a/phono-server/src/middleware.rs b/phono-server/src/middleware.rs deleted file mode 100644 index a61079a..0000000 --- a/phono-server/src/middleware.rs +++ /dev/null @@ -1,17 +0,0 @@ -use axum::http::Request; - -/// Pass to axum::middleware::map_request() to transform the entire URI path -/// (but not search query) to lowercase. -pub async fn lowercase_uri_path(mut request: Request) -> Request { - let path = request.uri().path().to_lowercase(); - let path_and_query = match request.uri().query() { - Some(query) => format!("{}?{}", path, query), - None => path, - }; - let builder = - axum::http::uri::Builder::from(request.uri().clone()).path_and_query(path_and_query); - *request.uri_mut() = builder - .build() - .expect("lowercasing URI path should not break it"); - request -} diff --git a/phono-server/src/routes/mod.rs b/phono-server/src/routes/mod.rs index 04c235c..8e057e3 100644 --- a/phono-server/src/routes/mod.rs +++ b/phono-server/src/routes/mod.rs @@ -19,8 +19,7 @@ use tower_http::{ set_header::SetResponseHeaderLayer, }; -use crate::auth; -use crate::{app::App, settings::Settings}; +use crate::{app::App, auth, settings::Settings}; mod forms; mod relations_single;