Declare more state event content structs without ruma_event!

This commit is contained in:
Jonas Platte 2020-05-24 00:03:39 +02:00
parent eceef3b96d
commit 1377487b6c
No known key found for this signature in database
GPG Key ID: 7D261D771D915378
5 changed files with 88 additions and 107 deletions

View File

@ -1,16 +1,15 @@
//! Types for the *m.room.encryption* event.
use js_int::UInt;
use ruma_events_macros::ruma_event;
use ruma_events_macros::{FromRaw, StateEventContent};
use serde::Serialize;
use crate::Algorithm;
ruma_event! {
/// Defines how messages sent in this room should be encrypted.
EncryptionEvent {
kind: StateEvent,
event_type: "m.room.encryption",
content: {
/// Defines how messages sent in this room should be encrypted.
#[derive(Clone, Debug, Serialize, FromRaw, StateEventContent)]
#[ruma_event(type = "m.room.encryption")]
pub struct EncryptionEventContent {
/// The encryption algorithm to be used to encrypt messages sent in this room.
///
/// Must be `m.megolm.v1.aes-sha2`.
@ -25,6 +24,4 @@ ruma_event! {
///
/// 100 is the recommended default.
pub rotation_period_msgs: Option<UInt>,
},
}
}

View File

@ -1,22 +1,18 @@
//! Types for the *m.room.guest_access* event.
use ruma_events_macros::ruma_event;
use ruma_events_macros::{FromRaw, StateEventContent};
use serde::{Deserialize, Serialize};
use strum::{Display, EnumString};
ruma_event! {
/// Controls whether guest users are allowed to join rooms.
///
/// This event controls whether guest users are allowed to join rooms. If this event is absent,
/// servers should act as if it is present and has the value `GuestAccess::Forbidden`.
GuestAccessEvent {
kind: StateEvent,
event_type: "m.room.guest_access",
content: {
/// Controls whether guest users are allowed to join rooms.
///
/// This event controls whether guest users are allowed to join rooms. If this event is absent,
/// servers should act as if it is present and has the value `GuestAccess::Forbidden`.
#[derive(Clone, Debug, Serialize, FromRaw, StateEventContent)]
#[ruma_event(type = "m.room.guest_access")]
pub struct GuestAccessEventContent {
/// A policy for guest user access to a room.
pub guest_access: GuestAccess,
},
}
}
/// A policy for guest user access to a room.

View File

@ -1,20 +1,16 @@
//! Types for the *m.room.history_visibility* event.
use ruma_events_macros::ruma_event;
use ruma_events_macros::{FromRaw, StateEventContent};
use serde::{Deserialize, Serialize};
use strum::{Display, EnumString};
ruma_event! {
/// This event controls whether a member of a room can see the events that happened in a room
/// from before they joined.
HistoryVisibilityEvent {
kind: StateEvent,
event_type: "m.room.history_visibility",
content: {
/// This event controls whether a member of a room can see the events that happened in a room
/// from before they joined.
#[derive(Clone, Debug, Serialize, FromRaw, StateEventContent)]
#[ruma_event(type = "m.room.history_visibility")]
pub struct HistoryVisibilityEventContent {
/// Who can see the room history.
pub history_visibility: HistoryVisibility,
},
}
}
/// Who can see a room's history.

View File

@ -1,19 +1,15 @@
//! Types for the *m.room.join_rules* event.
use ruma_events_macros::ruma_event;
use ruma_events_macros::{FromRaw, StateEventContent};
use serde::{Deserialize, Serialize};
use strum::{Display, EnumString};
ruma_event! {
/// Describes how users are allowed to join the room.
JoinRulesEvent {
kind: StateEvent,
event_type: "m.room.join_rules",
content: {
/// Describes how users are allowed to join the room.
#[derive(Clone, Debug, Serialize, FromRaw, StateEventContent)]
#[ruma_event(type = "m.room.join_rules")]
pub struct JoinRulesEventContent {
/// The type of rules used for users wishing to join this room.
pub join_rule: JoinRule,
},
}
}
/// The rule used for users wishing to join this room.

View File

@ -2,41 +2,39 @@
use std::collections::BTreeMap;
use ruma_events_macros::ruma_event;
use ruma_events_macros::{FromRaw, StateEventContent};
use ruma_identifiers::UserId;
use serde::{Deserialize, Serialize};
use strum::{Display, EnumString};
ruma_event! {
/// The current membership state of a user in the room.
///
/// Adjusts the membership state for a user in a room. It is preferable to use the membership
/// APIs (`/rooms/<room id>/invite` etc) when performing membership actions rather than
/// adjusting the state directly as there are a restricted set of valid transformations. For
/// example, user A cannot force user B to join a room, and trying to force this state change
/// directly will fail.
///
/// The `third_party_invite` property will be set if this invite is an *invite* event and is the
/// successor of an *m.room.third_party_invite* event, and absent otherwise.
///
/// This event may also include an `invite_room_state` key inside the event's unsigned data. If
/// present, this contains an array of `StrippedState` events. These events provide information
/// on a subset of state events such as the room name. Note that ruma-events treats unsigned
/// data on events as arbitrary JSON values, and the ruma-events types for this event don't
/// provide direct access to `invite_room_state`. If you need this data, you must extract and
/// convert it from a `serde_json::Value` yourself.
///
/// The user for which a membership applies is represented by the `state_key`. Under some
/// conditions, the `sender` and `state_key` may not match - this may be interpreted as the
/// `sender` affecting the membership state of the `state_key` user.
///
/// The membership for a given user can change over time. Previous membership can be retrieved
/// from the `prev_content` object on an event. If not present, the user's previous membership
/// must be assumed as leave.
MemberEvent {
kind: StateEvent,
event_type: "m.room.member",
content: {
/// The current membership state of a user in the room.
///
/// Adjusts the membership state for a user in a room. It is preferable to use the membership
/// APIs (`/rooms/<room id>/invite` etc) when performing membership actions rather than
/// adjusting the state directly as there are a restricted set of valid transformations. For
/// example, user A cannot force user B to join a room, and trying to force this state change
/// directly will fail.
///
/// The `third_party_invite` property will be set if this invite is an *invite* event and is the
/// successor of an *m.room.third_party_invite* event, and absent otherwise.
///
/// This event may also include an `invite_room_state` key inside the event's unsigned data. If
/// present, this contains an array of `StrippedState` events. These events provide information
/// on a subset of state events such as the room name. Note that ruma-events treats unsigned
/// data on events as arbitrary JSON values, and the ruma-events types for this event don't
/// provide direct access to `invite_room_state`. If you need this data, you must extract and
/// convert it from a `serde_json::Value` yourself.
///
/// The user for which a membership applies is represented by the `state_key`. Under some
/// conditions, the `sender` and `state_key` may not match - this may be interpreted as the
/// `sender` affecting the membership state of the `state_key` user.
///
/// The membership for a given user can change over time. Previous membership can be retrieved
/// from the `prev_content` object on an event. If not present, the user's previous membership
/// must be assumed as leave.
#[derive(Clone, Debug, Serialize, FromRaw, StateEventContent)]
#[ruma_event(type = "m.room.member")]
pub struct MemberEventContent {
/// The avatar URL for this user, if any. This is added by the homeserver.
#[serde(skip_serializing_if = "Option::is_none")]
pub avatar_url: Option<String>,
@ -57,8 +55,6 @@ ruma_event! {
/// contain information about that invitation.
#[serde(skip_serializing_if = "Option::is_none")]
pub third_party_invite: Option<ThirdPartyInvite>,
},
}
}
/// The membership state of a user.