don't automatically wrap in RumaResponse

This allows us to use the `ruma_route` convenience function even when we
need to add our own hacks into the responses, thus making us less
reliant on Ruma.
This commit is contained in:
Charles Hall 2024-05-18 18:31:36 -07:00
parent 87ac0e2a38
commit 230ebd3884
No known key found for this signature in database
GPG key ID: 7B8E0645816E07CF
35 changed files with 438 additions and 405 deletions

View file

@ -31,7 +31,7 @@ use tracing::{info, warn};
use crate::{
api::client_server::invite_helper, service::pdu::PduBuilder, services,
Error, Result, Ruma,
Error, Result, Ruma, RumaResponse,
};
/// # `POST /_matrix/client/r0/createRoom`
@ -53,7 +53,7 @@ use crate::{
#[allow(clippy::too_many_lines)]
pub(crate) async fn create_room_route(
body: Ruma<create_room::v3::Request>,
) -> Result<create_room::v3::Response> {
) -> Result<RumaResponse<create_room::v3::Response>> {
use create_room::v3::RoomPreset;
let sender_user = body.sender_user.as_ref().expect("user is authenticated");
@ -538,7 +538,7 @@ pub(crate) async fn create_room_route(
info!("{} created a room", sender_user);
Ok(create_room::v3::Response::new(room_id))
Ok(RumaResponse(create_room::v3::Response::new(room_id)))
}
/// # `GET /_matrix/client/r0/rooms/{roomId}/event/{eventId}`
@ -549,7 +549,7 @@ pub(crate) async fn create_room_route(
/// visibility)
pub(crate) async fn get_room_event_route(
body: Ruma<get_room_event::v3::Request>,
) -> Result<get_room_event::v3::Response> {
) -> Result<RumaResponse<get_room_event::v3::Response>> {
let sender_user = body.sender_user.as_ref().expect("user is authenticated");
let event = services().rooms.timeline.get_pdu(&body.event_id)?.ok_or_else(
@ -573,9 +573,9 @@ pub(crate) async fn get_room_event_route(
let mut event = (*event).clone();
event.add_age()?;
Ok(get_room_event::v3::Response {
Ok(RumaResponse(get_room_event::v3::Response {
event: event.to_room_event(),
})
}))
}
/// # `GET /_matrix/client/r0/rooms/{roomId}/aliases`
@ -586,7 +586,7 @@ pub(crate) async fn get_room_event_route(
/// user to call it if `history_visibility` is world readable
pub(crate) async fn get_room_aliases_route(
body: Ruma<aliases::v3::Request>,
) -> Result<aliases::v3::Response> {
) -> Result<RumaResponse<aliases::v3::Response>> {
let sender_user = body.sender_user.as_ref().expect("user is authenticated");
if !services().rooms.state_cache.is_joined(sender_user, &body.room_id)? {
@ -596,14 +596,14 @@ pub(crate) async fn get_room_aliases_route(
));
}
Ok(aliases::v3::Response {
Ok(RumaResponse(aliases::v3::Response {
aliases: services()
.rooms
.alias
.local_aliases_for_room(&body.room_id)
.filter_map(Result::ok)
.collect(),
})
}))
}
/// # `POST /_matrix/client/r0/rooms/{roomId}/upgrade`
@ -619,7 +619,7 @@ pub(crate) async fn get_room_aliases_route(
#[allow(clippy::too_many_lines)]
pub(crate) async fn upgrade_room_route(
body: Ruma<upgrade_room::v3::Request>,
) -> Result<upgrade_room::v3::Response> {
) -> Result<RumaResponse<upgrade_room::v3::Response>> {
let sender_user = body.sender_user.as_ref().expect("user is authenticated");
if !services().globals.supported_room_versions().contains(&body.new_version)
@ -914,7 +914,7 @@ pub(crate) async fn upgrade_room_route(
drop(state_lock);
// Return the replacement room id
Ok(upgrade_room::v3::Response {
Ok(RumaResponse(upgrade_room::v3::Response {
replacement_room,
})
}))
}