diff --git a/src/event_auth.rs b/src/event_auth.rs index 747e4289..abf00573 100644 --- a/src/event_auth.rs +++ b/src/event_auth.rs @@ -234,7 +234,7 @@ pub fn auth_check( // synapse has an `event: &StateEvent` param but it's never used /// Can this room federate based on its m.room.create event. -fn can_federate(auth_events: &StateMap) -> bool { +pub fn can_federate(auth_events: &StateMap) -> bool { let creation_event = auth_events.get(&(EventType::RoomCreate, Some("".into()))); if let Some(ev) = creation_event { if let Some(fed) = ev.content().get("m.federate") { @@ -248,7 +248,7 @@ fn can_federate(auth_events: &StateMap) -> bool { } /// Dose the user who sent this member event have required power levels to do so. -fn is_membership_change_allowed( +pub fn is_membership_change_allowed( event: &StateEvent, auth_events: &StateMap, ) -> Option { @@ -429,7 +429,7 @@ fn is_membership_change_allowed( /// Is the event's sender in the room that they sent the event to. /// /// A return value of None is not a failure -fn check_event_sender_in_room( +pub fn check_event_sender_in_room( event: &StateEvent, auth_events: &StateMap, ) -> Option { @@ -444,7 +444,7 @@ fn check_event_sender_in_room( } /// Is the user allowed to send a specific event. -fn can_send_event(event: &StateEvent, auth_events: &StateMap) -> Option { +pub fn can_send_event(event: &StateEvent, auth_events: &StateMap) -> Option { let ple = auth_events.get(&(EventType::RoomPowerLevels, Some("".into()))); let send_level = get_send_level(event.kind(), event.state_key(), ple); @@ -470,7 +470,7 @@ fn can_send_event(event: &StateEvent, auth_events: &StateMap) -> Opt } /// Confirm that the event sender has the required power levels. -fn check_power_levels( +pub fn check_power_levels( room_version: &RoomVersionId, power_event: &StateEvent, auth_events: &StateMap, @@ -614,7 +614,7 @@ fn get_deserialize_levels( } /// Does the event redacting come from a user with enough power to redact the given event. -fn check_redaction( +pub fn check_redaction( room_version: &RoomVersionId, redaction_event: &StateEvent, auth_events: &StateMap, @@ -644,7 +644,7 @@ fn check_redaction( /// Check that the member event matches `state`. /// /// This function returns false instead of failing when deserialization fails. -fn check_membership(member_event: Option<&StateEvent>, state: MembershipState) -> bool { +pub fn check_membership(member_event: Option<&StateEvent>, state: MembershipState) -> bool { if let Some(event) = member_event { if let Ok(content) = serde_json::from_value::(event.content().clone()) @@ -658,7 +658,7 @@ fn check_membership(member_event: Option<&StateEvent>, state: MembershipState) - } } -fn get_named_level(auth_events: &StateMap, name: &str, default: i64) -> i64 { +pub fn get_named_level(auth_events: &StateMap, name: &str, default: i64) -> i64 { let power_level_event = auth_events.get(&(EventType::RoomPowerLevels, Some("".into()))); if let Some(pl) = power_level_event { // TODO do this the right way and deserialize @@ -672,7 +672,7 @@ fn get_named_level(auth_events: &StateMap, name: &str, default: i64) } } -fn get_user_power_level(user_id: &UserId, auth_events: &StateMap) -> i64 { +pub fn get_user_power_level(user_id: &UserId, auth_events: &StateMap) -> i64 { if let Some(pl) = auth_events.get(&(EventType::RoomPowerLevels, Some("".into()))) { if let Ok(content) = pl.deserialize_content::() { @@ -703,7 +703,7 @@ fn get_user_power_level(user_id: &UserId, auth_events: &StateMap) -> } } -fn get_send_level( +pub fn get_send_level( e_type: EventType, state_key: Option, power_lvl: Option<&StateEvent>, @@ -733,6 +733,7 @@ fn get_send_level( } } -fn verify_third_party_invite(_event: &StateEvent, _auth_events: &StateMap) -> bool { +/// TODO this is unimplemented +pub fn verify_third_party_invite(_event: &StateEvent, _auth_events: &StateMap) -> bool { unimplemented!("impl third party invites") } diff --git a/src/lib.rs b/src/lib.rs index 2a1e1c6c..23571777 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,8 +13,8 @@ use ruma::{ }; mod error; -mod event_auth; -mod room_version; +pub mod event_auth; +pub mod room_version; mod state_event; mod state_store;