federation-api: Make EventTemplate non-exhaustive

This commit is contained in:
Jonas Platte 2020-09-17 22:09:51 +02:00
parent 2b01a8211a
commit 2112ae00c6
No known key found for this signature in database
GPG Key ID: CC154DE0E30B7C67

View File

@ -39,9 +39,28 @@ ruma_api! {
} }
} }
impl<'a> Request<'a> {
/// Creates a new `Request` with:
/// * the room ID that is about to be left.
/// * the user ID the leave event will be for.
pub fn new(room_id: &'a RoomId, user_id: &'a UserId) -> Self {
Self { room_id, user_id }
}
}
impl Response {
/// Creates a new `Response` with:
/// * the version of the room where the server is trying to leave.
/// * an unsigned template event.
pub fn new(room_version: Option<RoomVersionId>, event: EventTemplate) -> Self {
Self { room_version, event }
}
}
/// An unsigned template event. Note that events have a different format depending on the room /// An unsigned template event. Note that events have a different format depending on the room
/// version - check the room version specification for precise event formats. /// version - check the room version specification for precise event formats.
#[derive(Clone, Debug, Serialize, Deserialize)] #[derive(Clone, Debug, Serialize, Deserialize)]
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
pub struct EventTemplate { pub struct EventTemplate {
/// The user ID of the leaving member. /// The user ID of the leaving member.
pub sender: UserId, pub sender: UserId,
@ -64,20 +83,17 @@ pub struct EventTemplate {
pub content: Raw<MemberEventContent>, pub content: Raw<MemberEventContent>,
} }
impl<'a> Request<'a> { impl EventTemplate {
/// Creates a new `Request` with: /// Creates a new `EventTemplate` with the given sender, origin, timestamp, state key and
/// * the room ID that is about to be left. /// content.
/// * the user ID the leave event will be for. pub fn new(
pub fn new(room_id: &'a RoomId, user_id: &'a UserId) -> Self { sender: UserId,
Self { room_id, user_id } origin: ServerNameBox,
} origin_server_ts: SystemTime,
} event_type: EventType,
state_key: String,
impl Response { content: Raw<MemberEventContent>,
/// Creates a new `Response` with: ) -> Self {
/// * the version of the room where the server is trying to leave. Self { sender, origin, origin_server_ts, event_type, state_key, content }
/// * an unsigned template event.
pub fn new(room_version: Option<RoomVersionId>, event: EventTemplate) -> Self {
Self { room_version, event }
} }
} }