chore: Migrate to axum 0.8

Co-authored-by: dasha_uwu
This commit is contained in:
Jade Ellis 2025-04-28 22:39:32 +01:00 committed by timedout
parent 31e2195e56
commit 46907e3dce
No known key found for this signature in database
GPG key ID: 0FA334385D0B689F
5 changed files with 904 additions and 1054 deletions

1910
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -84,7 +84,7 @@ version = "1.3.1"
version = "1.11.1" version = "1.11.1"
[workspace.dependencies.axum] [workspace.dependencies.axum]
version = "0.7.9" version = "0.8.3"
default-features = false default-features = false
features = [ features = [
"form", "form",
@ -97,7 +97,7 @@ features = [
] ]
[workspace.dependencies.axum-extra] [workspace.dependencies.axum-extra]
version = "0.9.6" version = "0.10.1"
default-features = false default-features = false
features = ["typed-header", "tracing"] features = ["typed-header", "tracing"]
@ -110,7 +110,7 @@ default-features = false
version = "0.7" version = "0.7"
[workspace.dependencies.axum-client-ip] [workspace.dependencies.axum-client-ip]
version = "0.6.1" version = "0.7"
[workspace.dependencies.tower] [workspace.dependencies.tower]
version = "0.5.2" version = "0.5.2"
@ -118,7 +118,7 @@ default-features = false
features = ["util"] features = ["util"]
[workspace.dependencies.tower-http] [workspace.dependencies.tower-http]
version = "0.6.2" version = "0.6.8"
default-features = false default-features = false
features = [ features = [
"add-extension", "add-extension",
@ -342,7 +342,8 @@ version = "0.1.2"
# Used for matrix spec type definitions and helpers # Used for matrix spec type definitions and helpers
[workspace.dependencies.ruma] [workspace.dependencies.ruma]
git = "https://forgejo.ellis.link/continuwuation/ruwuma" git = "https://forgejo.ellis.link/continuwuation/ruwuma"
rev = "b496b7f38d517149361a882e75d3fd4faf210441" #branch = "conduwuit-changes"
rev = "3126cb5eea991ec40590e54d8c9d75637650641a"
features = [ features = [
"compat", "compat",
"rand", "rand",

View file

@ -122,23 +122,23 @@ pub fn build(router: Router<State>, server: &Server) -> Router<State> {
// Ruma doesn't have support for multiple paths for a single endpoint yet, and these routes // Ruma doesn't have support for multiple paths for a single endpoint yet, and these routes
// share one Ruma request / response type pair with {get,send}_state_event_for_key_route // share one Ruma request / response type pair with {get,send}_state_event_for_key_route
.route( .route(
"/_matrix/client/r0/rooms/:room_id/state/:event_type", "/_matrix/client/r0/rooms/{room_id}/state/{event_type}",
get(client::get_state_events_for_empty_key_route) get(client::get_state_events_for_empty_key_route)
.put(client::send_state_event_for_empty_key_route), .put(client::send_state_event_for_empty_key_route),
) )
.route( .route(
"/_matrix/client/v3/rooms/:room_id/state/:event_type", "/_matrix/client/v3/rooms/{room_id}/state/{event_type}",
get(client::get_state_events_for_empty_key_route) get(client::get_state_events_for_empty_key_route)
.put(client::send_state_event_for_empty_key_route), .put(client::send_state_event_for_empty_key_route),
) )
// These two endpoints allow trailing slashes // These two endpoints allow trailing slashes
.route( .route(
"/_matrix/client/r0/rooms/:room_id/state/:event_type/", "/_matrix/client/r0/rooms/{room_id}/state/{event_type}/",
get(client::get_state_events_for_empty_key_route) get(client::get_state_events_for_empty_key_route)
.put(client::send_state_event_for_empty_key_route), .put(client::send_state_event_for_empty_key_route),
) )
.route( .route(
"/_matrix/client/v3/rooms/:room_id/state/:event_type/", "/_matrix/client/v3/rooms/{room_id}/state/{event_type}/",
get(client::get_state_events_for_empty_key_route) get(client::get_state_events_for_empty_key_route)
.put(client::send_state_event_for_empty_key_route), .put(client::send_state_event_for_empty_key_route),
) )
@ -177,7 +177,7 @@ pub fn build(router: Router<State>, server: &Server) -> Router<State> {
.ruma_route(&client::get_mutual_rooms_route) .ruma_route(&client::get_mutual_rooms_route)
.ruma_route(&client::get_room_summary) .ruma_route(&client::get_room_summary)
.route( .route(
"/_matrix/client/unstable/im.nheko.summary/rooms/:room_id_or_alias/summary", "/_matrix/client/unstable/im.nheko.summary/rooms/{room_id_or_alias}/summary",
get(client::get_room_summary_legacy) get(client::get_room_summary_legacy)
) )
.ruma_route(&client::get_suspended_status) .ruma_route(&client::get_suspended_status)
@ -196,7 +196,7 @@ pub fn build(router: Router<State>, server: &Server) -> Router<State> {
.ruma_route(&server::get_server_version_route) .ruma_route(&server::get_server_version_route)
.route("/_matrix/key/v2/server", get(server::get_server_keys_route)) .route("/_matrix/key/v2/server", get(server::get_server_keys_route))
.route( .route(
"/_matrix/key/v2/server/:key_id", "/_matrix/key/v2/server/{key_id}",
get(server::get_server_keys_deprecated_route), get(server::get_server_keys_deprecated_route),
) )
.ruma_route(&server::get_public_rooms_route) .ruma_route(&server::get_public_rooms_route)
@ -232,9 +232,9 @@ pub fn build(router: Router<State>, server: &Server) -> Router<State> {
.route("/_continuwuity/local_user_count", get(client::conduwuit_local_user_count)); .route("/_continuwuity/local_user_count", get(client::conduwuit_local_user_count));
} else { } else {
router = router router = router
.route("/_matrix/federation/*path", any(federation_disabled)) .route("/_matrix/federation/{*path}", any(federation_disabled))
.route("/.well-known/matrix/server", any(federation_disabled)) .route("/.well-known/matrix/server", any(federation_disabled))
.route("/_matrix/key/*path", any(federation_disabled)) .route("/_matrix/key/{*path}", any(federation_disabled))
.route("/_conduwuit/local_user_count", any(federation_disabled)) .route("/_conduwuit/local_user_count", any(federation_disabled))
.route("/_continuwuity/local_user_count", any(federation_disabled)); .route("/_continuwuity/local_user_count", any(federation_disabled));
} }
@ -253,27 +253,27 @@ pub fn build(router: Router<State>, server: &Server) -> Router<State> {
get(client::get_media_preview_legacy_legacy_route), get(client::get_media_preview_legacy_legacy_route),
) )
.route( .route(
"/_matrix/media/v1/download/:server_name/:media_id", "/_matrix/media/v1/download/{server_name}/{media_id}",
get(client::get_content_legacy_legacy_route), get(client::get_content_legacy_legacy_route),
) )
.route( .route(
"/_matrix/media/v1/download/:server_name/:media_id/:file_name", "/_matrix/media/v1/download/{server_name}/{media_id}/{file_name}",
get(client::get_content_as_filename_legacy_legacy_route), get(client::get_content_as_filename_legacy_legacy_route),
) )
.route( .route(
"/_matrix/media/v1/thumbnail/:server_name/:media_id", "/_matrix/media/v1/thumbnail/{server_name}/{media_id}",
get(client::get_content_thumbnail_legacy_legacy_route), get(client::get_content_thumbnail_legacy_legacy_route),
); );
} else { } else {
router = router router = router
.route("/_matrix/media/v1/*path", any(legacy_media_disabled)) .route("/_matrix/media/v1/{*path}", any(legacy_media_disabled))
.route("/_matrix/media/v3/config", any(legacy_media_disabled)) .route("/_matrix/media/v3/config", any(legacy_media_disabled))
.route("/_matrix/media/v3/download/*path", any(legacy_media_disabled)) .route("/_matrix/media/v3/download/{*path}", any(legacy_media_disabled))
.route("/_matrix/media/v3/thumbnail/*path", any(legacy_media_disabled)) .route("/_matrix/media/v3/thumbnail/{*path}", any(legacy_media_disabled))
.route("/_matrix/media/v3/preview_url", any(redirect_legacy_preview)) .route("/_matrix/media/v3/preview_url", any(redirect_legacy_preview))
.route("/_matrix/media/r0/config", any(legacy_media_disabled)) .route("/_matrix/media/r0/config", any(legacy_media_disabled))
.route("/_matrix/media/r0/download/*path", any(legacy_media_disabled)) .route("/_matrix/media/r0/download/{*path}", any(legacy_media_disabled))
.route("/_matrix/media/r0/thumbnail/*path", any(legacy_media_disabled)) .route("/_matrix/media/r0/thumbnail/{*path}", any(legacy_media_disabled))
.route("/_matrix/media/r0/preview_url", any(redirect_legacy_preview)); .route("/_matrix/media/r0/preview_url", any(redirect_legacy_preview));
} }

View file

@ -1,6 +1,5 @@
use std::{mem, ops::Deref}; use std::{mem, ops::Deref};
use async_trait::async_trait;
use axum::{body::Body, extract::FromRequest}; use axum::{body::Body, extract::FromRequest};
use bytes::{BufMut, Bytes, BytesMut}; use bytes::{BufMut, Bytes, BytesMut};
use conduwuit::{Error, Result, debug, debug_warn, err, trace, utils::string::EMPTY}; use conduwuit::{Error, Result, debug, debug_warn, err, trace, utils::string::EMPTY};
@ -79,7 +78,6 @@ where
fn deref(&self) -> &Self::Target { &self.body } fn deref(&self) -> &Self::Target { &self.body }
} }
#[async_trait]
impl<T> FromRequest<State, Body> for Args<T> impl<T> FromRequest<State, Body> for Args<T>
where where
T: IncomingRequest + Send + Sync + 'static, T: IncomingRequest + Send + Sync + 'static,

View file

@ -54,7 +54,8 @@ pub(super) async fn auth(
json_body: Option<&CanonicalJsonValue>, json_body: Option<&CanonicalJsonValue>,
metadata: &Metadata, metadata: &Metadata,
) -> Result<Auth> { ) -> Result<Auth> {
let bearer: Option<TypedHeader<Authorization<Bearer>>> = request.parts.extract().await?; let bearer: Option<TypedHeader<Authorization<Bearer>>> =
request.parts.extract().await.unwrap_or(None);
let token = match &bearer { let token = match &bearer {
| Some(TypedHeader(Authorization(bearer))) => Some(bearer.token()), | Some(TypedHeader(Authorization(bearer))) => Some(bearer.token()),
| None => request.query.access_token.as_deref(), | None => request.query.access_token.as_deref(),