improve debug get-room-state; use RoomOrAliasId

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-06-23 03:12:12 +00:00
parent f127987c7a
commit b28d216e00
2 changed files with 7 additions and 9 deletions

View file

@ -13,7 +13,7 @@ use conduit::{
use ruma::{ use ruma::{
api::{client::error::ErrorKind, federation::event::get_room_state}, api::{client::error::ErrorKind, federation::event::get_room_state},
events::room::message::RoomMessageEventContent, events::room::message::RoomMessageEventContent,
CanonicalJsonObject, EventId, RoomId, RoomVersionId, ServerName, CanonicalJsonObject, EventId, OwnedRoomOrAliasId, RoomId, RoomVersionId, ServerName,
}; };
use service::{rooms::event_handler::parse_incoming_pdu, sending::resolve::resolve_actual_dest, services, PduEvent}; use service::{rooms::event_handler::parse_incoming_pdu, sending::resolve::resolve_actual_dest, services, PduEvent};
use tokio::sync::RwLock; use tokio::sync::RwLock;
@ -236,7 +236,8 @@ pub(super) async fn get_remote_pdu(
} }
} }
pub(super) async fn get_room_state(_body: Vec<&str>, room_id: Box<RoomId>) -> Result<RoomMessageEventContent> { pub(super) async fn get_room_state(_body: Vec<&str>, room: OwnedRoomOrAliasId) -> Result<RoomMessageEventContent> {
let room_id = services().rooms.alias.resolve(&room).await?;
let room_state = services() let room_state = services()
.rooms .rooms
.state_accessor .state_accessor
@ -252,17 +253,14 @@ pub(super) async fn get_room_state(_body: Vec<&str>, room_id: Box<RoomId>) -> Re
)); ));
} }
let json_text = serde_json::to_string_pretty(&room_state).map_err(|e| { let json = serde_json::to_string_pretty(&room_state).map_err(|e| {
warn!("Failed converting room state vector in our database to pretty JSON: {e}"); warn!("Failed converting room state vector in our database to pretty JSON: {e}");
Error::bad_database( Error::bad_database(
"Failed to convert room state events to pretty JSON, possible invalid room state events in our database", "Failed to convert room state events to pretty JSON, possible invalid room state events in our database",
) )
})?; })?;
Ok(RoomMessageEventContent::notice_markdown(format!( Ok(RoomMessageEventContent::notice_markdown(format!("```json\n{json}\n```")))
"{}\n```json\n{}\n```",
"Found full room state", json_text
)))
} }
pub(super) async fn ping(_body: Vec<&str>, server: Box<ServerName>) -> Result<RoomMessageEventContent> { pub(super) async fn ping(_body: Vec<&str>, server: Box<ServerName>) -> Result<RoomMessageEventContent> {

View file

@ -2,7 +2,7 @@ mod commands;
use clap::Subcommand; use clap::Subcommand;
use conduit::Result; use conduit::Result;
use ruma::{events::room::message::RoomMessageEventContent, EventId, RoomId, ServerName}; use ruma::{events::room::message::RoomMessageEventContent, EventId, OwnedRoomOrAliasId, RoomId, ServerName};
use self::commands::*; use self::commands::*;
@ -71,7 +71,7 @@ pub(super) enum DebugCommand {
/// Of course the check is still done on the actual client API. /// Of course the check is still done on the actual client API.
GetRoomState { GetRoomState {
/// Room ID /// Room ID
room_id: Box<RoomId>, room_id: OwnedRoomOrAliasId,
}, },
/// - Sends a federation request to the remote server's /// - Sends a federation request to the remote server's