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,30 +1,27 @@
//! Types for the *m.room.encryption* event. //! Types for the *m.room.encryption* event.
use js_int::UInt; use js_int::UInt;
use ruma_events_macros::ruma_event; use ruma_events_macros::{FromRaw, StateEventContent};
use serde::Serialize;
use crate::Algorithm; use crate::Algorithm;
ruma_event! { /// Defines how messages sent in this room should be encrypted.
/// Defines how messages sent in this room should be encrypted. #[derive(Clone, Debug, Serialize, FromRaw, StateEventContent)]
EncryptionEvent { #[ruma_event(type = "m.room.encryption")]
kind: StateEvent, pub struct EncryptionEventContent {
event_type: "m.room.encryption", /// The encryption algorithm to be used to encrypt messages sent in this room.
content: { ///
/// The encryption algorithm to be used to encrypt messages sent in this room. /// Must be `m.megolm.v1.aes-sha2`.
/// pub algorithm: Algorithm,
/// Must be `m.megolm.v1.aes-sha2`.
pub algorithm: Algorithm,
/// How long the session should be used before changing it. /// How long the session should be used before changing it.
/// ///
/// 604800000 (a week) is the recommended default. /// 604800000 (a week) is the recommended default.
pub rotation_period_ms: Option<UInt>, pub rotation_period_ms: Option<UInt>,
/// How many messages should be sent before changing the session. /// How many messages should be sent before changing the session.
/// ///
/// 100 is the recommended default. /// 100 is the recommended default.
pub rotation_period_msgs: Option<UInt>, pub rotation_period_msgs: Option<UInt>,
},
}
} }

View File

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

View File

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

View File

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

View File

@ -2,63 +2,59 @@
use std::collections::BTreeMap; use std::collections::BTreeMap;
use ruma_events_macros::ruma_event; use ruma_events_macros::{FromRaw, StateEventContent};
use ruma_identifiers::UserId; use ruma_identifiers::UserId;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use strum::{Display, EnumString}; use strum::{Display, EnumString};
ruma_event! { /// The current membership state of a user in the room.
/// 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
/// 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
/// 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
/// 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
/// example, user A cannot force user B to join a room, and trying to force this state change /// directly will fail.
/// directly will fail. ///
/// /// The `third_party_invite` property will be set if this invite is an *invite* event and is the
/// 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.
/// 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
/// 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
/// 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
/// 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
/// 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
/// provide direct access to `invite_room_state`. If you need this data, you must extract and /// convert it from a `serde_json::Value` yourself.
/// convert it from a `serde_json::Value` yourself. ///
/// /// The user for which a membership applies is represented by the `state_key`. Under some
/// 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
/// 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.
/// `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
/// 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
/// from the `prev_content` object on an event. If not present, the user's previous membership /// must be assumed as leave.
/// must be assumed as leave. #[derive(Clone, Debug, Serialize, FromRaw, StateEventContent)]
MemberEvent { #[ruma_event(type = "m.room.member")]
kind: StateEvent, pub struct MemberEventContent {
event_type: "m.room.member", /// The avatar URL for this user, if any. This is added by the homeserver.
content: { #[serde(skip_serializing_if = "Option::is_none")]
/// The avatar URL for this user, if any. This is added by the homeserver. pub avatar_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub avatar_url: Option<String>,
/// The display name for this user, if any. This is added by the homeserver. /// The display name for this user, if any. This is added by the homeserver.
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
pub displayname: Option<String>, pub displayname: Option<String>,
/// Flag indicating if the room containing this event was created /// Flag indicating if the room containing this event was created
/// with the intention of being a direct chat. /// with the intention of being a direct chat.
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
pub is_direct: Option<bool>, pub is_direct: Option<bool>,
/// The membership state of this user. /// The membership state of this user.
pub membership: MembershipState, pub membership: MembershipState,
/// If this member event is the successor to a third party invitation, this field will /// If this member event is the successor to a third party invitation, this field will
/// contain information about that invitation. /// contain information about that invitation.
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
pub third_party_invite: Option<ThirdPartyInvite>, pub third_party_invite: Option<ThirdPartyInvite>,
},
}
} }
/// The membership state of a user. /// The membership state of a user.