Abstract Pdu filter matching into trait Event.

Abstract Pdu unsigned accessors into trait Event.

Abstract Pdu relation related into trait Event.

Abstract PDU content into trait Event.

Move event_id utils from pdu to event.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-04-27 09:34:07 +00:00
parent 222e89f6fe
commit af7dfb31bc
56 changed files with 666 additions and 492 deletions

View File

@@ -8,7 +8,7 @@ use ruma::{
};
use tuwunel_core::{
Err, Result, debug_error, err, info,
matrix::pdu::{PduBuilder, gen_event_id_canonical_json},
matrix::{event::gen_event_id_canonical_json, pdu::PduBuilder},
};
use tuwunel_service::Services;

View File

@@ -26,7 +26,8 @@ use tuwunel_core::{
Err, Result, debug, debug_info, debug_warn, err, error, info,
matrix::{
StateKey,
pdu::{PduBuilder, PduEvent, gen_event_id, gen_event_id_canonical_json},
event::{gen_event_id, gen_event_id_canonical_json},
pdu::{PduBuilder, PduEvent},
state_res,
},
result::FlatOk,

View File

@@ -18,7 +18,10 @@ use ruma::{
};
use tuwunel_core::{
Err, Result, debug, debug_info, debug_warn, err, info,
matrix::pdu::{PduBuilder, PduEvent, gen_event_id},
matrix::{
event::{Event, gen_event_id},
pdu::{PduBuilder, PduEvent},
},
result::FlatOk,
trace,
utils::{self, shuffle, stream::IterStream},

View File

@@ -15,7 +15,7 @@ use ruma::{
};
use tuwunel_core::{
Err, Result, debug_info, debug_warn, err,
matrix::pdu::{PduBuilder, gen_event_id},
matrix::{event::gen_event_id, pdu::PduBuilder},
utils::{self, FutureBoolExt, future::ReadyEqExt},
warn,
};

View File

@@ -1,5 +1,5 @@
use axum::extract::State;
use futures::{StreamExt, future::join};
use futures::{FutureExt, StreamExt, future::join};
use ruma::{
api::client::membership::{
get_member_events::{self, v3::MembershipEventFilter},
@@ -11,8 +11,8 @@ use ruma::{
},
};
use tuwunel_core::{
Err, Event, Result, at,
matrix::pdu::PduEvent,
Err, Result, at,
matrix::Event,
utils::{
future::TryExtExt,
stream::{BroadbandExt, ReadyExt},
@@ -55,6 +55,7 @@ pub(crate) async fn get_member_events_route(
.ready_filter_map(|pdu| membership_filter(pdu, membership, not_membership))
.map(Event::into_format)
.collect()
.boxed()
.await,
})
}
@@ -98,11 +99,11 @@ pub(crate) async fn joined_members_route(
})
}
fn membership_filter(
pdu: PduEvent,
fn membership_filter<Pdu: Event>(
pdu: Pdu,
for_membership: Option<&MembershipEventFilter>,
not_membership: Option<&MembershipEventFilter>,
) -> Option<PduEvent> {
) -> Option<impl Event> {
let membership_state_filter = match for_membership {
| Some(MembershipEventFilter::Ban) => MembershipState::Ban,
| Some(MembershipEventFilter::Invite) => MembershipState::Invite,