Declare more state event content structs without ruma_event!
This commit is contained in:
		
							parent
							
								
									eceef3b96d
								
							
						
					
					
						commit
						1377487b6c
					
				| @ -1,30 +1,27 @@ | ||||
| //! 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: { | ||||
|             /// The encryption algorithm to be used to encrypt messages sent in this room.
 | ||||
|             ///
 | ||||
|             /// Must be `m.megolm.v1.aes-sha2`.
 | ||||
|             pub algorithm: Algorithm, | ||||
| /// 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`.
 | ||||
|     pub algorithm: Algorithm, | ||||
| 
 | ||||
|             /// How long the session should be used before changing it.
 | ||||
|             ///
 | ||||
|             /// 604800000 (a week) is the recommended default.
 | ||||
|             pub rotation_period_ms: Option<UInt>, | ||||
|     /// How long the session should be used before changing it.
 | ||||
|     ///
 | ||||
|     /// 604800000 (a week) is the recommended default.
 | ||||
|     pub rotation_period_ms: Option<UInt>, | ||||
| 
 | ||||
|             /// How many messages should be sent before changing the session.
 | ||||
|             ///
 | ||||
|             /// 100 is the recommended default.
 | ||||
|             pub rotation_period_msgs: Option<UInt>, | ||||
|         }, | ||||
|     } | ||||
|     /// How many messages should be sent before changing the session.
 | ||||
|     ///
 | ||||
|     /// 100 is the recommended default.
 | ||||
|     pub rotation_period_msgs: Option<UInt>, | ||||
| } | ||||
|  | ||||
| @ -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: { | ||||
|             /// A policy for guest user access to a room.
 | ||||
|             pub guest_access: GuestAccess, | ||||
|         }, | ||||
|     } | ||||
| /// 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.
 | ||||
|  | ||||
| @ -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: { | ||||
|             /// Who can see the room history.
 | ||||
|             pub history_visibility: HistoryVisibility, | ||||
|         }, | ||||
|     } | ||||
| /// 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.
 | ||||
|  | ||||
| @ -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: { | ||||
|             /// The type of rules used for users wishing to join this room.
 | ||||
|             pub join_rule: JoinRule, | ||||
|         }, | ||||
|     } | ||||
| /// 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.
 | ||||
|  | ||||
| @ -2,63 +2,59 @@ | ||||
| 
 | ||||
| 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 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>, | ||||
| /// 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>, | ||||
| 
 | ||||
|             /// The display name for this user, if any. This is added by the homeserver.
 | ||||
|             #[serde(skip_serializing_if = "Option::is_none")] | ||||
|             pub displayname: Option<String>, | ||||
|     /// The display name for this user, if any. This is added by the homeserver.
 | ||||
|     #[serde(skip_serializing_if = "Option::is_none")] | ||||
|     pub displayname: Option<String>, | ||||
| 
 | ||||
|             /// Flag indicating if the room containing this event was created
 | ||||
|             /// with the intention of being a direct chat.
 | ||||
|             #[serde(skip_serializing_if = "Option::is_none")] | ||||
|             pub is_direct: Option<bool>, | ||||
|     /// Flag indicating if the room containing this event was created
 | ||||
|     /// with the intention of being a direct chat.
 | ||||
|     #[serde(skip_serializing_if = "Option::is_none")] | ||||
|     pub is_direct: Option<bool>, | ||||
| 
 | ||||
|             /// The membership state of this user.
 | ||||
|             pub membership: MembershipState, | ||||
|     /// The membership state of this user.
 | ||||
|     pub membership: MembershipState, | ||||
| 
 | ||||
|             /// If this member event is the successor to a third party invitation, this field will
 | ||||
|             /// contain information about that invitation.
 | ||||
|             #[serde(skip_serializing_if = "Option::is_none")] | ||||
|             pub third_party_invite: Option<ThirdPartyInvite>, | ||||
|         }, | ||||
|     } | ||||
|     /// If this member event is the successor to a third party invitation, this field will
 | ||||
|     /// contain information about that invitation.
 | ||||
|     #[serde(skip_serializing_if = "Option::is_none")] | ||||
|     pub third_party_invite: Option<ThirdPartyInvite>, | ||||
| } | ||||
| 
 | ||||
| /// The membership state of a user.
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user