diff --git a/Cargo.lock b/Cargo.lock index d26636f..da83491 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -270,14 +270,14 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.7.9" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ - "async-trait", "axum-core", "axum-macros", "bytes", + "form_urlencoded", "futures-util", "http", "http-body", @@ -290,8 +290,7 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", + "serde_core", "serde_json", "serde_path_to_error", "serde_urlencoded", @@ -305,19 +304,17 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ - "async-trait", "bytes", - "futures-util", + "futures-core", "http", "http-body", "http-body-util", "mime", "pin-project-lite", - "rustversion", "sync_wrapper", "tower-layer", "tower-service", @@ -326,9 +323,9 @@ dependencies = [ [[package]] name = "axum-macros" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" +checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", @@ -783,7 +780,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -1516,9 +1513,9 @@ dependencies = [ [[package]] name = "matchit" -version = "0.7.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "md-5" @@ -1946,7 +1943,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -2171,7 +2168,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -2759,7 +2756,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -2947,11 +2944,10 @@ dependencies = [ [[package]] name = "tower-cookies" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd0118512cf0b3768f7fcccf0bef1ae41d68f2b45edc1e77432b36c97c56c6d" +checksum = "151b5a3e3c45df17466454bb74e9ecedecc955269bdedbf4d150dfa393b55a36" dependencies = [ - "async-trait", "axum-core", "cookie", "futures-util", diff --git a/Cargo.toml b/Cargo.toml index 4945f20..122a353 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ edition = "2024" [dependencies] anyhow = "1.0" async-trait = "0.1" -axum = { version = "0.7", features = ["macros"] } +axum = { version = "0.8", features = ["macros"] } askama = "0.15" base64 = "0.22" chrono = { version = "0.4", features = ["serde", "clock"] } @@ -32,7 +32,7 @@ tokio = { version = "1.38", features = ["rt-multi-thread", "macros", "signal"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "fmt"] } tower = "0.5" -tower-cookies = "0.10" +tower-cookies = "0.11" tower-http = { version = "0.6", features = ["compression-gzip", "limit", "set-header", "trace"] } slug = "0.1.6" url = "2" diff --git a/src/application/auth.rs b/src/application/auth.rs index 3061b34..30808c2 100644 --- a/src/application/auth.rs +++ b/src/application/auth.rs @@ -1,5 +1,4 @@ use axum::{ - async_trait, extract::{FromRequestParts, Request}, http::{StatusCode, header, request::Parts}, }; @@ -16,7 +15,6 @@ const SESSION_COOKIE_NAME: &str = "brewlog_session"; #[derive(Debug, Clone)] pub struct AuthenticatedUser(pub User); -#[async_trait] impl FromRequestParts for AuthenticatedUser { type Rejection = StatusCode; diff --git a/src/application/routes/api/mod.rs b/src/application/routes/api/mod.rs index ab93110..d7002a1 100644 --- a/src/application/routes/api/mod.rs +++ b/src/application/routes/api/mod.rs @@ -26,7 +26,7 @@ pub(super) fn router() -> axum::Router { get(roasters::list_roasters).post(roasters::create_roaster), ) .route( - "/roasters/:id", + "/roasters/{id}", get(roasters::get_roaster) .put(roasters::update_roaster) .delete(roasters::delete_roaster), @@ -36,33 +36,33 @@ pub(super) fn router() -> axum::Router { get(roasts::list_roasts).post(roasts::create_roast), ) .route( - "/roasts/:id", + "/roasts/{id}", get(roasts::get_roast) .put(roasts::update_roast) .delete(roasts::delete_roast), ) .route("/bags", get(bags::list_bags).post(bags::create_bag)) .route( - "/bags/:id", + "/bags/{id}", get(bags::get_bag) .put(bags::update_bag) .delete(bags::delete_bag), ) .route("/gear", get(gear::list_gear).post(gear::create_gear)) .route( - "/gear/:id", + "/gear/{id}", get(gear::get_gear) .put(gear::update_gear) .delete(gear::delete_gear), ) .route("/brews", get(brews::list_brews).post(brews::create_brew)) .route( - "/brews/:id", + "/brews/{id}", get(brews::get_brew).delete(brews::delete_brew), ) .route("/cafes", get(cafes::list_cafes).post(cafes::create_cafe)) .route( - "/cafes/:id", + "/cafes/{id}", get(cafes::get_cafe) .put(cafes::update_cafe) .delete(cafes::delete_cafe), @@ -74,15 +74,15 @@ pub(super) fn router() -> axum::Router { .route("/scan", post(scan::submit_scan)) .route("/check-in", post(checkin::submit_checkin)) .route("/cups", get(cups::list_cups).post(cups::create_cup)) - .route("/cups/:id", get(cups::get_cup).delete(cups::delete_cup)) + .route("/cups/{id}", get(cups::get_cup).delete(cups::delete_cup)) .route( "/tokens", post(tokens::create_token).get(tokens::list_tokens), ) - .route("/tokens/:id/revoke", post(tokens::revoke_token)) + .route("/tokens/{id}/revoke", post(tokens::revoke_token)) .route("/passkeys", get(account::list_passkeys)) .route( - "/passkeys/:id", + "/passkeys/{id}", axum::routing::delete(account::delete_passkey), ) .route("/backup", get(backup::export_backup)) diff --git a/src/application/routes/app/mod.rs b/src/application/routes/app/mod.rs index c6043f6..3e98e39 100644 --- a/src/application/routes/app/mod.rs +++ b/src/application/routes/app/mod.rs @@ -18,7 +18,7 @@ pub(super) fn router() -> axum::Router { .route("/login", get(auth::login_page)) .route("/logout", post(auth::logout)) .route("/account", get(account::account_page)) - .route("/register/:token", get(webauthn::register_page)) + .route("/register/{token}", get(webauthn::register_page)) .route("/auth/cli-callback", get(webauthn::cli_callback_page)) .route("/data", get(data::data_page)) .route("/add", get(add::add_page)) diff --git a/src/application/routes/support.rs b/src/application/routes/support.rs index 4599128..7ae408c 100644 --- a/src/application/routes/support.rs +++ b/src/application/routes/support.rs @@ -1,5 +1,4 @@ use askama::Template; -use axum::async_trait; use axum::extract::{Form, FromRequest, Json as JsonPayload, Request}; use axum::http::{HeaderMap, HeaderValue, header::CONTENT_TYPE}; use axum::response::{Html, IntoResponse, Response}; @@ -165,7 +164,6 @@ fn parse_direction(value: &str) -> Option { } } -#[async_trait] impl FromRequest for FlexiblePayload where S: Send + Sync,