improvement: /event route

next
Timo Kösters 2021-04-07 15:56:57 +02:00
parent d0cdbe2e2b
commit f3f95a73d0
No known key found for this signature in database
GPG Key ID: 24DA7517711A2BA4
2 changed files with 29 additions and 0 deletions

View File

@ -164,6 +164,7 @@ fn setup_rocket() -> (rocket::Rocket, Config) {
server_server::get_public_rooms_route, server_server::get_public_rooms_route,
server_server::get_public_rooms_filtered_route, server_server::get_public_rooms_filtered_route,
server_server::send_transaction_message_route, server_server::send_transaction_message_route,
server_server::get_event_route,
server_server::get_missing_events_route, server_server::get_missing_events_route,
server_server::get_room_state_ids_route, server_server::get_room_state_ids_route,
server_server::get_profile_information_route, server_server::get_profile_information_route,

View File

@ -1388,6 +1388,34 @@ pub(crate) fn append_incoming_pdu(
Ok(()) Ok(())
} }
#[cfg_attr(
feature = "conduit_bin",
get("/_matrix/federation/v1/event/<_>", data = "<body>")
)]
#[tracing::instrument(skip(db, body))]
pub fn get_event_route<'a>(
db: State<'a, Database>,
body: Ruma<get_event::v1::Request<'_>>,
) -> ConduitResult<get_event::v1::Response> {
if !db.globals.allow_federation() {
return Err(Error::bad_config("Federation is disabled."));
}
Ok(get_event::v1::Response {
origin: db.globals.server_name().to_owned(),
origin_server_ts: SystemTime::now(),
pdu: PduEvent::convert_to_outgoing_federation_event(
serde_json::from_value(
db.rooms
.get_pdu_json(&body.event_id)?
.ok_or(Error::BadRequest(ErrorKind::NotFound, "Event not found."))?,
)
.map_err(|_| Error::bad_database("Invalid pdu in database."))?,
),
}
.into())
}
#[cfg_attr( #[cfg_attr(
feature = "conduit_bin", feature = "conduit_bin",
post("/_matrix/federation/v1/get_missing_events/<_>", data = "<body>") post("/_matrix/federation/v1/get_missing_events/<_>", data = "<body>")