diff --git a/Cargo.lock b/Cargo.lock index fcf5b28..9f864a9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -73,11 +73,12 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "axum" -version = "0.3.4" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4e96976b2022b23b2199168ff9b281e9ddc1aa795607d5cb7146868ca5c101" +checksum = "310a147401c66e79fc78636e4db63ac68cd6acb9ece056de806ea173a15bce32" dependencies = [ "async-trait", + "axum-core", "bitflags", "bytes", "futures-util", @@ -86,6 +87,7 @@ dependencies = [ "http-body", "hyper", "matchit", + "memchr", "mime", "percent-encoding", "pin-project-lite", @@ -96,11 +98,25 @@ dependencies = [ "tokio", "tokio-util", "tower", - "tower-http", + "tower-http 0.2.0", "tower-layer", "tower-service", ] +[[package]] +name = "axum-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca6c0b218388a7ed6a8d25e94f7dea5498daaa4fd8c711fb3ff166041b06fda" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", +] + [[package]] name = "base64" version = "0.13.0" @@ -653,6 +669,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range-header" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" + [[package]] name = "httparse" version = "1.5.1" @@ -1012,7 +1034,7 @@ dependencies = [ "signal-hook", "signal-hook-tokio", "tokio", - "tower-http", + "tower-http 0.1.2", "tracing", "tracing-subscriber", ] @@ -1731,6 +1753,24 @@ dependencies = [ "tower-service", ] +[[package]] +name = "tower-http" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ee603d6e665ecc7e0f8d479eedb4626bd4726f0ee6119cee5b3a6bf184cac0" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "pin-project-lite", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.1" diff --git a/server/Cargo.toml b/server/Cargo.toml index 5b5729c..307d5d8 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] omegaupload-common = { path = "../common" } anyhow = "1" -axum = { version = "0.3", features = ["http2", "headers"] } +axum = { version = "0.4", features = ["http2", "headers"] } bincode = "1" # We don't care about which version (We want to match with axum), we just need # to enable the feature diff --git a/server/src/main.rs b/server/src/main.rs index 1029b55..b33a824 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -22,12 +22,12 @@ use std::time::Duration; use anyhow::Result; use axum::body::Bytes; -use axum::error_handling::HandleErrorExt; +use axum::error_handling::HandleError; use axum::extract::{Extension, Path, TypedHeader}; use axum::http::header::EXPIRES; use axum::http::StatusCode; use axum::response::Html; -use axum::routing::{get, post, service_method_routing}; +use axum::routing::{get, get_service, post}; use axum::{AddExtensionLayer, Router}; use chrono::Utc; use futures::stream::StreamExt; @@ -83,8 +83,9 @@ async fn main() -> Result<()> { let signals_handle = signals.handle(); let signals_task = tokio::spawn(handle_signals(signals, Arc::clone(&db))); - let root_service = service_method_routing::get(ServeDir::new("static")) - .handle_error(|_| Ok::<_, Infallible>(StatusCode::NOT_FOUND)); + let root_service = HandleError::new(get_service(ServeDir::new("static")), |_| async { + Ok::<_, Infallible>(StatusCode::NOT_FOUND) + }); axum::Server::bind(&"0.0.0.0:8080".parse()?) .serve({