build(deps): bump axum from 0.7.9 to 0.8.8 (#6)

* build(deps): bump axum from 0.7.9 to 0.8.8

Bumps [axum](https://github.com/tokio-rs/axum) from 0.7.9 to 0.8.8.
- [Release notes](https://github.com/tokio-rs/axum/releases)
- [Changelog](https://github.com/tokio-rs/axum/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/axum/compare/axum-v0.7.9...axum-v0.8.8)

---
updated-dependencies:
- dependency-name: axum
  dependency-version: 0.8.8
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(deps): adapt code for axum 0.8 and tower-cookies 0.11

- Bump tower-cookies 0.10 → 0.11 (requires axum-core 0.5 / axum 0.8)
- Remove axum::async_trait usage (axum 0.8 uses native async traits)
- Migrate route path params from :param to {param} syntax

* fix(deps): correct axum and tower version constraints

Dependabot updated the lockfile for axum 0.8 but left the Cargo.toml
constraint at "0.7", causing CI to resolve back to 0.7.9. It also
incorrectly downgraded tower from "0.5" to "0.4", creating a duplicate
tower version in the lockfile and trait mismatches with axum 0.8.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jon Seager <jon@sgrs.uk>
This commit is contained in:
dependabot[bot] 2026-02-06 19:04:14 +00:00 committed by GitHub
parent 2fff8e8124
commit c0d6e588f6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 29 additions and 37 deletions

38
Cargo.lock generated
View file

@ -270,14 +270,14 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]] [[package]]
name = "axum" name = "axum"
version = "0.7.9" version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8"
dependencies = [ dependencies = [
"async-trait",
"axum-core", "axum-core",
"axum-macros", "axum-macros",
"bytes", "bytes",
"form_urlencoded",
"futures-util", "futures-util",
"http", "http",
"http-body", "http-body",
@ -290,8 +290,7 @@ dependencies = [
"mime", "mime",
"percent-encoding", "percent-encoding",
"pin-project-lite", "pin-project-lite",
"rustversion", "serde_core",
"serde",
"serde_json", "serde_json",
"serde_path_to_error", "serde_path_to_error",
"serde_urlencoded", "serde_urlencoded",
@ -305,19 +304,17 @@ dependencies = [
[[package]] [[package]]
name = "axum-core" name = "axum-core"
version = "0.4.5" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1"
dependencies = [ dependencies = [
"async-trait",
"bytes", "bytes",
"futures-util", "futures-core",
"http", "http",
"http-body", "http-body",
"http-body-util", "http-body-util",
"mime", "mime",
"pin-project-lite", "pin-project-lite",
"rustversion",
"sync_wrapper", "sync_wrapper",
"tower-layer", "tower-layer",
"tower-service", "tower-service",
@ -326,9 +323,9 @@ dependencies = [
[[package]] [[package]]
name = "axum-macros" name = "axum-macros"
version = "0.4.2" version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -783,7 +780,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [ dependencies = [
"libc", "libc",
"windows-sys 0.61.2", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
@ -1516,9 +1513,9 @@ dependencies = [
[[package]] [[package]]
name = "matchit" name = "matchit"
version = "0.7.3" version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
[[package]] [[package]]
name = "md-5" name = "md-5"
@ -1946,7 +1943,7 @@ dependencies = [
"once_cell", "once_cell",
"socket2", "socket2",
"tracing", "tracing",
"windows-sys 0.60.2", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
@ -2171,7 +2168,7 @@ dependencies = [
"errno", "errno",
"libc", "libc",
"linux-raw-sys", "linux-raw-sys",
"windows-sys 0.61.2", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
@ -2759,7 +2756,7 @@ dependencies = [
"getrandom 0.3.4", "getrandom 0.3.4",
"once_cell", "once_cell",
"rustix", "rustix",
"windows-sys 0.61.2", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
@ -2947,11 +2944,10 @@ dependencies = [
[[package]] [[package]]
name = "tower-cookies" name = "tower-cookies"
version = "0.10.0" version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fd0118512cf0b3768f7fcccf0bef1ae41d68f2b45edc1e77432b36c97c56c6d" checksum = "151b5a3e3c45df17466454bb74e9ecedecc955269bdedbf4d150dfa393b55a36"
dependencies = [ dependencies = [
"async-trait",
"axum-core", "axum-core",
"cookie", "cookie",
"futures-util", "futures-util",

View file

@ -6,7 +6,7 @@ edition = "2024"
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
async-trait = "0.1" async-trait = "0.1"
axum = { version = "0.7", features = ["macros"] } axum = { version = "0.8", features = ["macros"] }
askama = "0.15" askama = "0.15"
base64 = "0.22" base64 = "0.22"
chrono = { version = "0.4", features = ["serde", "clock"] } 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 = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "fmt"] } tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "fmt"] }
tower = "0.5" tower = "0.5"
tower-cookies = "0.10" tower-cookies = "0.11"
tower-http = { version = "0.6", features = ["compression-gzip", "limit", "set-header", "trace"] } tower-http = { version = "0.6", features = ["compression-gzip", "limit", "set-header", "trace"] }
slug = "0.1.6" slug = "0.1.6"
url = "2" url = "2"

View file

@ -1,5 +1,4 @@
use axum::{ use axum::{
async_trait,
extract::{FromRequestParts, Request}, extract::{FromRequestParts, Request},
http::{StatusCode, header, request::Parts}, http::{StatusCode, header, request::Parts},
}; };
@ -16,7 +15,6 @@ const SESSION_COOKIE_NAME: &str = "brewlog_session";
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct AuthenticatedUser(pub User); pub struct AuthenticatedUser(pub User);
#[async_trait]
impl FromRequestParts<AppState> for AuthenticatedUser { impl FromRequestParts<AppState> for AuthenticatedUser {
type Rejection = StatusCode; type Rejection = StatusCode;

View file

@ -26,7 +26,7 @@ pub(super) fn router() -> axum::Router<AppState> {
get(roasters::list_roasters).post(roasters::create_roaster), get(roasters::list_roasters).post(roasters::create_roaster),
) )
.route( .route(
"/roasters/:id", "/roasters/{id}",
get(roasters::get_roaster) get(roasters::get_roaster)
.put(roasters::update_roaster) .put(roasters::update_roaster)
.delete(roasters::delete_roaster), .delete(roasters::delete_roaster),
@ -36,33 +36,33 @@ pub(super) fn router() -> axum::Router<AppState> {
get(roasts::list_roasts).post(roasts::create_roast), get(roasts::list_roasts).post(roasts::create_roast),
) )
.route( .route(
"/roasts/:id", "/roasts/{id}",
get(roasts::get_roast) get(roasts::get_roast)
.put(roasts::update_roast) .put(roasts::update_roast)
.delete(roasts::delete_roast), .delete(roasts::delete_roast),
) )
.route("/bags", get(bags::list_bags).post(bags::create_bag)) .route("/bags", get(bags::list_bags).post(bags::create_bag))
.route( .route(
"/bags/:id", "/bags/{id}",
get(bags::get_bag) get(bags::get_bag)
.put(bags::update_bag) .put(bags::update_bag)
.delete(bags::delete_bag), .delete(bags::delete_bag),
) )
.route("/gear", get(gear::list_gear).post(gear::create_gear)) .route("/gear", get(gear::list_gear).post(gear::create_gear))
.route( .route(
"/gear/:id", "/gear/{id}",
get(gear::get_gear) get(gear::get_gear)
.put(gear::update_gear) .put(gear::update_gear)
.delete(gear::delete_gear), .delete(gear::delete_gear),
) )
.route("/brews", get(brews::list_brews).post(brews::create_brew)) .route("/brews", get(brews::list_brews).post(brews::create_brew))
.route( .route(
"/brews/:id", "/brews/{id}",
get(brews::get_brew).delete(brews::delete_brew), get(brews::get_brew).delete(brews::delete_brew),
) )
.route("/cafes", get(cafes::list_cafes).post(cafes::create_cafe)) .route("/cafes", get(cafes::list_cafes).post(cafes::create_cafe))
.route( .route(
"/cafes/:id", "/cafes/{id}",
get(cafes::get_cafe) get(cafes::get_cafe)
.put(cafes::update_cafe) .put(cafes::update_cafe)
.delete(cafes::delete_cafe), .delete(cafes::delete_cafe),
@ -74,15 +74,15 @@ pub(super) fn router() -> axum::Router<AppState> {
.route("/scan", post(scan::submit_scan)) .route("/scan", post(scan::submit_scan))
.route("/check-in", post(checkin::submit_checkin)) .route("/check-in", post(checkin::submit_checkin))
.route("/cups", get(cups::list_cups).post(cups::create_cup)) .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( .route(
"/tokens", "/tokens",
post(tokens::create_token).get(tokens::list_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", get(account::list_passkeys))
.route( .route(
"/passkeys/:id", "/passkeys/{id}",
axum::routing::delete(account::delete_passkey), axum::routing::delete(account::delete_passkey),
) )
.route("/backup", get(backup::export_backup)) .route("/backup", get(backup::export_backup))

View file

@ -18,7 +18,7 @@ pub(super) fn router() -> axum::Router<AppState> {
.route("/login", get(auth::login_page)) .route("/login", get(auth::login_page))
.route("/logout", post(auth::logout)) .route("/logout", post(auth::logout))
.route("/account", get(account::account_page)) .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("/auth/cli-callback", get(webauthn::cli_callback_page))
.route("/data", get(data::data_page)) .route("/data", get(data::data_page))
.route("/add", get(add::add_page)) .route("/add", get(add::add_page))

View file

@ -1,5 +1,4 @@
use askama::Template; use askama::Template;
use axum::async_trait;
use axum::extract::{Form, FromRequest, Json as JsonPayload, Request}; use axum::extract::{Form, FromRequest, Json as JsonPayload, Request};
use axum::http::{HeaderMap, HeaderValue, header::CONTENT_TYPE}; use axum::http::{HeaderMap, HeaderValue, header::CONTENT_TYPE};
use axum::response::{Html, IntoResponse, Response}; use axum::response::{Html, IntoResponse, Response};
@ -165,7 +164,6 @@ fn parse_direction(value: &str) -> Option<SortDirection> {
} }
} }
#[async_trait]
impl<S, T> FromRequest<S> for FlexiblePayload<T> impl<S, T> FromRequest<S> for FlexiblePayload<T>
where where
S: Send + Sync, S: Send + Sync,