add interface to get file metadata w/ admin command

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-08-26 22:15:42 +00:00
parent e7b2c14280
commit 7b0e830f4c
3 changed files with 27 additions and 2 deletions

View file

@ -257,3 +257,11 @@ pub(super) async fn delete_all_from_server(
"Deleted {deleted_count} total files.",
)))
}
#[admin_command]
pub(super) async fn get_file_info(&self, mxc: OwnedMxcUri) -> Result<RoomMessageEventContent> {
let mxc: Mxc<'_> = mxc.as_str().try_into()?;
let metadata = self.services.media.get_metadata(&mxc);
Ok(RoomMessageEventContent::notice_markdown(format!("```\n{metadata:#?}\n```")))
}

View file

@ -2,7 +2,7 @@ mod commands;
use clap::Subcommand;
use conduit::Result;
use ruma::{EventId, MxcUri, ServerName};
use ruma::{EventId, MxcUri, OwnedMxcUri, ServerName};
use crate::admin_command_dispatch;
@ -55,4 +55,9 @@ pub(super) enum MediaCommand {
#[arg(short, long)]
force: bool,
},
GetFileInfo {
/// The MXC URL to lookup info for.
mxc: OwnedMxcUri,
},
}