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]]
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",

View file

@ -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"

View file

@ -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<AppState> for AuthenticatedUser {
type Rejection = StatusCode;

View file

@ -26,7 +26,7 @@ pub(super) fn router() -> axum::Router<AppState> {
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<AppState> {
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<AppState> {
.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))

View file

@ -18,7 +18,7 @@ pub(super) fn router() -> axum::Router<AppState> {
.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))

View file

@ -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<SortDirection> {
}
}
#[async_trait]
impl<S, T> FromRequest<S> for FlexiblePayload<T>
where
S: Send + Sync,