mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-11-15 13:16:56 +00:00
feat: Move get-remote-pdu to graph command, simplify
This commit is contained in:
4 files changed
+36
-168
No files matched your search
+33
-1
@@ -2,7 +2,7 @@ use clap::Subcommand;
|
||||
use conduwuit::{Err, Event, Result, err, utils::stream::BroadbandExt};
|
||||
use conduwuit_macros::admin_command_dispatch;
|
||||
use futures::StreamExt;
|
||||
use ruma::{OwnedEventId, OwnedRoomId, OwnedRoomOrAliasId};
|
||||
use ruma::{OwnedEventId, OwnedRoomId, OwnedRoomOrAliasId, OwnedServerName};
|
||||
|
||||
#[admin_command_dispatch]
|
||||
#[derive(Debug, Subcommand)]
|
||||
@@ -18,6 +18,12 @@ pub enum GraphCommand {
|
||||
event_id: OwnedEventId,
|
||||
},
|
||||
|
||||
/// Fetches a PDU over federation. Does not store the result.
|
||||
FetchPDU {
|
||||
event_id: OwnedEventId,
|
||||
server_name: OwnedServerName,
|
||||
},
|
||||
|
||||
/// Yields the first PDU we became aware of in a room.
|
||||
/// This is always the room's create event for local rooms, or the first
|
||||
/// membership event that introduced us to the remote room.
|
||||
@@ -120,6 +126,32 @@ impl crate::Context<'_> {
|
||||
.await
|
||||
}
|
||||
|
||||
pub(super) async fn fetch_pdu(
|
||||
&self,
|
||||
event_id: OwnedEventId,
|
||||
server: OwnedServerName,
|
||||
) -> Result {
|
||||
let response = self
|
||||
.services
|
||||
.sending
|
||||
.send_federation_request(
|
||||
&server,
|
||||
ruma::api::federation::event::get_event::v1::Request::new(event_id.clone()),
|
||||
)
|
||||
.await?;
|
||||
let (real_event_id, room_id, pdu_json) = self
|
||||
.services
|
||||
.rooms
|
||||
.event_handler
|
||||
.parse_incoming_pdu(&response.pdu, None)
|
||||
.await?;
|
||||
self.write_str(&format!(
|
||||
"Event ID: {real_event_id}\nRoom ID: {room_id}\nPDU:\n```json\n{}\n```",
|
||||
serde_json::to_string_pretty(&pdu_json)?
|
||||
))
|
||||
.await
|
||||
}
|
||||
|
||||
pub(super) async fn first_pdu_in_room(&self, room_id: OwnedRoomId) -> Result {
|
||||
self.bail_restricted()?;
|
||||
|
||||
|
||||
Reference in new issue
Block a user