refactor: Fix errors in api/client/backup.rs

This commit is contained in:
Ginger
2026-04-28 09:16:51 -04:00
parent 7f30f8419b
commit c89ecd7b63
+18 -23
View File
@@ -3,7 +3,7 @@ use std::cmp::Ordering;
use axum::extract::State; use axum::extract::State;
use conduwuit::{Err, Result, err}; use conduwuit::{Err, Result, err};
use conduwuit_service::Services; use conduwuit_service::Services;
use futures::{FutureExt, future::try_join}; use futures::FutureExt;
use ruma::{ use ruma::{
UInt, UserId, UInt, UserId,
api::client::backup::{ api::client::backup::{
@@ -60,9 +60,9 @@ pub(crate) async fn get_latest_backup_info_route(
.await .await
.map_err(|_| err!(Request(NotFound("Key backup does not exist."))))?; .map_err(|_| err!(Request(NotFound("Key backup does not exist."))))?;
let (count, etag) = get_count_etag(&services, body.sender_user(), &version).await?; let (count, etag) = get_count_etag(&services, body.sender_user(), &version).await;
Ok(get_latest_backup_info::v3::Response { algorithm, count, etag, version }) Ok(get_latest_backup_info::v3::Response::new(algorithm, count, etag, version))
} }
/// # `GET /_matrix/client/v3/room_keys/version/{version}` /// # `GET /_matrix/client/v3/room_keys/version/{version}`
@@ -80,14 +80,9 @@ pub(crate) async fn get_backup_info_route(
err!(Request(NotFound("Key backup does not exist at version {:?}", body.version))) err!(Request(NotFound("Key backup does not exist at version {:?}", body.version)))
})?; })?;
let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await;
Ok(get_backup_info::v3::Response { Ok(get_backup_info::v3::Response::new(algorithm, count, etag, body.version.clone()))
algorithm,
count,
etag,
version: body.version.clone(),
})
} }
/// # `DELETE /_matrix/client/r0/room_keys/version/{version}` /// # `DELETE /_matrix/client/r0/room_keys/version/{version}`
@@ -140,9 +135,9 @@ pub(crate) async fn add_backup_keys_route(
} }
} }
let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await;
Ok(add_backup_keys::v3::Response { count, etag }) Ok(add_backup_keys::v3::Response::new(etag, count))
} }
/// # `PUT /_matrix/client/r0/room_keys/keys/{roomId}` /// # `PUT /_matrix/client/r0/room_keys/keys/{roomId}`
@@ -175,9 +170,9 @@ pub(crate) async fn add_backup_keys_for_room_route(
.await?; .await?;
} }
let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await;
Ok(add_backup_keys_for_room::v3::Response { count, etag }) Ok(add_backup_keys_for_room::v3::Response::new(etag, count))
} }
/// # `PUT /_matrix/client/r0/room_keys/keys/{roomId}/{sessionId}` /// # `PUT /_matrix/client/r0/room_keys/keys/{roomId}/{sessionId}`
@@ -275,9 +270,9 @@ pub(crate) async fn add_backup_keys_for_session_route(
.await?; .await?;
} }
let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await;
Ok(add_backup_keys_for_session::v3::Response { count, etag }) Ok(add_backup_keys_for_session::v3::Response::new(etag, count))
} }
/// # `GET /_matrix/client/r0/room_keys/keys` /// # `GET /_matrix/client/r0/room_keys/keys`
@@ -340,7 +335,7 @@ pub(crate) async fn delete_backup_keys_route(
.delete_all_keys(body.sender_user(), &body.version) .delete_all_keys(body.sender_user(), &body.version)
.await; .await;
let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await;
Ok(delete_backup_keys::v3::Response::new(etag, count)) Ok(delete_backup_keys::v3::Response::new(etag, count))
} }
@@ -357,7 +352,7 @@ pub(crate) async fn delete_backup_keys_for_room_route(
.delete_room_keys(body.sender_user(), &body.version, &body.room_id) .delete_room_keys(body.sender_user(), &body.version, &body.room_id)
.await; .await;
let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await;
Ok(delete_backup_keys_for_room::v3::Response::new(etag, count)) Ok(delete_backup_keys_for_room::v3::Response::new(etag, count))
} }
@@ -374,7 +369,7 @@ pub(crate) async fn delete_backup_keys_for_session_route(
.delete_room_key(body.sender_user(), &body.version, &body.room_id, &body.session_id) .delete_room_key(body.sender_user(), &body.version, &body.room_id, &body.session_id)
.await; .await;
let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await;
Ok(delete_backup_keys_for_session::v3::Response::new(etag, count)) Ok(delete_backup_keys_for_session::v3::Response::new(etag, count))
} }
@@ -383,13 +378,13 @@ async fn get_count_etag(
services: &Services, services: &Services,
sender_user: &UserId, sender_user: &UserId,
version: &str, version: &str,
) -> Result<(UInt, String)> { ) -> (UInt, String) {
let count = services let count = services
.key_backups .key_backups
.count_keys(sender_user, version) .count_keys(sender_user, version)
.map(TryInto::try_into); .then(async |keys| UInt::try_from(keys).expect("number of keys should fit into a UInt"));
let etag = services.key_backups.get_etag(sender_user, version).map(Ok); let etag = services.key_backups.get_etag(sender_user, version);
Ok(try_join(count, etag).await?) futures::join!(count, etag)
} }