commit
						9d5449b219
					
				
							
								
								
									
										1
									
								
								.rustfmt.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.rustfmt.toml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| merge_imports = true | ||||
| @ -9,6 +9,7 @@ name = "ruma-events" | ||||
| readme = "README.md" | ||||
| repository = "https://github.com/ruma/ruma-events" | ||||
| version = "0.11.0" | ||||
| edition = "2018" | ||||
| 
 | ||||
| [dependencies] | ||||
| ruma-identifiers = "0.11.0" | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.call.answer* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| use super::SessionDescription; | ||||
| 
 | ||||
| room_event! { | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.call.candidates* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| room_event! { | ||||
|     /// This event is sent by callers after sending an invite and by the callee after answering.
 | ||||
|     /// Its purpose is to give the other party additional ICE candidates to try using to
 | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.call.hangup* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| room_event! { | ||||
|     /// Sent by either party to signal their termination of the call. This can be sent either once
 | ||||
|     /// the call has has been established or before to abort the call.
 | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.call.invite* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| use super::SessionDescription; | ||||
| 
 | ||||
| room_event! { | ||||
|  | ||||
| @ -2,6 +2,8 @@ | ||||
| //!
 | ||||
| //! This module also contains types shared by events in its child namespaces.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| pub mod answer; | ||||
| pub mod candidates; | ||||
| pub mod hangup; | ||||
|  | ||||
| @ -1,34 +1,27 @@ | ||||
| //! Enums for heterogeneous collections of events, inclusive for every event type that implements
 | ||||
| //! the trait of the same name.
 | ||||
| 
 | ||||
| use call::answer::AnswerEvent; | ||||
| use call::candidates::CandidatesEvent; | ||||
| use call::hangup::HangupEvent; | ||||
| use call::invite::InviteEvent; | ||||
| use direct::DirectEvent; | ||||
| use presence::PresenceEvent; | ||||
| use receipt::ReceiptEvent; | ||||
| use room::aliases::AliasesEvent; | ||||
| use room::avatar::AvatarEvent; | ||||
| use room::canonical_alias::CanonicalAliasEvent; | ||||
| use room::create::CreateEvent; | ||||
| use room::guest_access::GuestAccessEvent; | ||||
| use room::history_visibility::HistoryVisibilityEvent; | ||||
| use room::join_rules::JoinRulesEvent; | ||||
| use room::member::MemberEvent; | ||||
| use room::message::MessageEvent; | ||||
| use room::name::NameEvent; | ||||
| use room::pinned_events::PinnedEventsEvent; | ||||
| use room::power_levels::PowerLevelsEvent; | ||||
| use room::redaction::RedactionEvent; | ||||
| use room::third_party_invite::ThirdPartyInviteEvent; | ||||
| use room::topic::TopicEvent; | ||||
| use tag::TagEvent; | ||||
| use typing::TypingEvent; | ||||
| use {CustomEvent, CustomRoomEvent, CustomStateEvent, EventType}; | ||||
| use crate::{ | ||||
|     call::{ | ||||
|         answer::AnswerEvent, candidates::CandidatesEvent, hangup::HangupEvent, invite::InviteEvent, | ||||
|     }, | ||||
|     direct::DirectEvent, | ||||
|     presence::PresenceEvent, | ||||
|     receipt::ReceiptEvent, | ||||
|     room::{ | ||||
|         aliases::AliasesEvent, avatar::AvatarEvent, canonical_alias::CanonicalAliasEvent, | ||||
|         create::CreateEvent, guest_access::GuestAccessEvent, | ||||
|         history_visibility::HistoryVisibilityEvent, join_rules::JoinRulesEvent, | ||||
|         member::MemberEvent, message::MessageEvent, name::NameEvent, | ||||
|         pinned_events::PinnedEventsEvent, power_levels::PowerLevelsEvent, | ||||
|         redaction::RedactionEvent, third_party_invite::ThirdPartyInviteEvent, topic::TopicEvent, | ||||
|     }, | ||||
|     tag::TagEvent, | ||||
|     typing::TypingEvent, | ||||
|     CustomEvent, CustomRoomEvent, CustomStateEvent, EventType, | ||||
| }; | ||||
| 
 | ||||
| use serde::de::Error; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::{de::Error, Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde_json::{from_value, Value}; | ||||
| 
 | ||||
| /// A basic event, room event, or state event.
 | ||||
| @ -425,7 +418,8 @@ impl<'de> Deserialize<'de> for Event { | ||||
|                     }; | ||||
| 
 | ||||
|                     Ok(Event::CustomState(event)) | ||||
|                 } else if value.get("event_id").is_some() && value.get("room_id").is_some() | ||||
|                 } else if value.get("event_id").is_some() | ||||
|                     && value.get("room_id").is_some() | ||||
|                     && value.get("sender").is_some() | ||||
|                 { | ||||
|                     let event = match from_value::<CustomRoomEvent>(value) { | ||||
|  | ||||
| @ -1,24 +1,22 @@ | ||||
| //! Enums for heterogeneous collections of events, exclusive to event types that implement "at
 | ||||
| //! most" the trait of the same name.
 | ||||
| 
 | ||||
| use call::answer::AnswerEvent; | ||||
| use call::candidates::CandidatesEvent; | ||||
| use call::hangup::HangupEvent; | ||||
| use call::invite::InviteEvent; | ||||
| use direct::DirectEvent; | ||||
| use presence::PresenceEvent; | ||||
| use receipt::ReceiptEvent; | ||||
| use room::message::MessageEvent; | ||||
| use room::redaction::RedactionEvent; | ||||
| use tag::TagEvent; | ||||
| use typing::TypingEvent; | ||||
| use {CustomEvent, CustomRoomEvent, EventType}; | ||||
| 
 | ||||
| use serde::de::Error; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::{de::Error, Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde_json::{from_value, Value}; | ||||
| 
 | ||||
| pub use super::all::StateEvent; | ||||
| use crate::{ | ||||
|     call::{ | ||||
|         answer::AnswerEvent, candidates::CandidatesEvent, hangup::HangupEvent, invite::InviteEvent, | ||||
|     }, | ||||
|     direct::DirectEvent, | ||||
|     presence::PresenceEvent, | ||||
|     receipt::ReceiptEvent, | ||||
|     room::{message::MessageEvent, redaction::RedactionEvent}, | ||||
|     tag::TagEvent, | ||||
|     typing::TypingEvent, | ||||
|     CustomEvent, CustomRoomEvent, EventType, | ||||
| }; | ||||
| 
 | ||||
| /// A basic event.
 | ||||
| #[derive(Clone, Debug)] | ||||
|  | ||||
| @ -3,6 +3,7 @@ | ||||
| use std::collections::HashMap; | ||||
| 
 | ||||
| use ruma_identifiers::{RoomId, UserId}; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| event! { | ||||
|     /// Informs the client about the rooms that are considered direct by a user.
 | ||||
| @ -22,9 +23,11 @@ mod tests { | ||||
|     use ruma_identifiers::{RoomId, UserId}; | ||||
|     use serde_json::{from_str, to_string}; | ||||
| 
 | ||||
|     use super::super::EventType; | ||||
|     use collections; | ||||
|     use direct::{DirectEvent, DirectEventContent}; | ||||
|     use crate::{ | ||||
|         collections, | ||||
|         direct::{DirectEvent, DirectEventContent}, | ||||
|         EventType, | ||||
|     }; | ||||
| 
 | ||||
|     #[test] | ||||
|     fn serialization() { | ||||
|  | ||||
							
								
								
									
										18
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/lib.rs
									
									
									
									
									
								
							| @ -100,18 +100,14 @@ | ||||
| #![deny(missing_docs)] | ||||
| #![deny(warnings)] | ||||
| 
 | ||||
| extern crate ruma_identifiers; | ||||
| extern crate ruma_signatures; | ||||
| extern crate serde; | ||||
| #[macro_use] | ||||
| extern crate serde_derive; | ||||
| extern crate serde_json; | ||||
| 
 | ||||
| use std::fmt::{Debug, Display, Error as FmtError, Formatter, Result as FmtResult}; | ||||
| 
 | ||||
| use ruma_identifiers::{EventId, RoomId, UserId}; | ||||
| use serde::de::{Error as SerdeError, Visitor}; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::{ | ||||
|     de::{Error as SerdeError, Visitor}, | ||||
|     Deserialize, Deserializer, Serialize, Serializer, | ||||
| }; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| use serde_json::Value; | ||||
| 
 | ||||
| #[macro_use] | ||||
| @ -251,7 +247,7 @@ state_event! { | ||||
| } | ||||
| 
 | ||||
| impl Display for EventType { | ||||
|     fn fmt(&self, f: &mut Formatter) -> Result<(), FmtError> { | ||||
|     fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), FmtError> { | ||||
|         let event_type_str = match *self { | ||||
|             EventType::CallAnswer => "m.call.answer", | ||||
|             EventType::CallCandidates => "m.call.candidates", | ||||
| @ -335,7 +331,7 @@ impl<'de> Deserialize<'de> for EventType { | ||||
|         impl<'de> Visitor<'de> for EventTypeVisitor { | ||||
|             type Value = EventType; | ||||
| 
 | ||||
|             fn expecting(&self, formatter: &mut Formatter) -> FmtResult { | ||||
|             fn expecting(&self, formatter: &mut Formatter<'_>) -> FmtResult { | ||||
|                 write!(formatter, "a Matrix event type as a string") | ||||
|             } | ||||
| 
 | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| macro_rules! impl_enum { | ||||
|     ($name:ident { $($variant:ident => $s:expr,)+ }) => { | ||||
|         impl ::std::fmt::Display for $name { | ||||
|             fn fmt(&self, f: &mut ::std::fmt::Formatter) -> Result<(), ::std::fmt::Error> { | ||||
|             fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> { | ||||
|                 let variant = match *self { | ||||
|                     $($name::$variant => $s,)* | ||||
|                 }; | ||||
| @ -39,7 +39,7 @@ macro_rules! event { | ||||
|             pub content: $content_type, | ||||
| 
 | ||||
|             /// The type of the event.
 | ||||
|             #[serde(rename="type")] | ||||
|             #[serde(rename = "type")] | ||||
|             pub event_type: $crate::EventType, | ||||
| 
 | ||||
|             $( | ||||
| @ -87,7 +87,7 @@ macro_rules! room_event { | ||||
|             pub event_id: ::ruma_identifiers::EventId, | ||||
| 
 | ||||
|             /// The type of the event.
 | ||||
|             #[serde(rename="type")] | ||||
|             #[serde(rename = "type")] | ||||
|             pub event_type: $crate::EventType, | ||||
| 
 | ||||
|             /// Timestamp in milliseconds on originating homeserver when this event was sent.
 | ||||
| @ -98,7 +98,7 @@ macro_rules! room_event { | ||||
|             pub room_id: Option<::ruma_identifiers::RoomId>, | ||||
| 
 | ||||
|             /// Additional key-value pairs not signed by the homeserver.
 | ||||
|             #[serde(skip_serializing_if="Option::is_none")] | ||||
|             #[serde(skip_serializing_if = "Option::is_none")] | ||||
|             pub unsigned: Option<::serde_json::Value>, | ||||
| 
 | ||||
|             /// The unique identifier for the user who sent this event.
 | ||||
| @ -162,14 +162,14 @@ macro_rules! state_event { | ||||
|             pub event_id: ::ruma_identifiers::EventId, | ||||
| 
 | ||||
|             /// The type of the event.
 | ||||
|             #[serde(rename="type")] | ||||
|             #[serde(rename = "type")] | ||||
|             pub event_type: $crate::EventType, | ||||
| 
 | ||||
|             /// Timestamp in milliseconds on originating homeserver when this event was sent.
 | ||||
|             pub origin_server_ts: u64, | ||||
| 
 | ||||
|             /// The previous content for this state key, if any.
 | ||||
|             #[serde(skip_serializing_if="Option::is_none")] | ||||
|             #[serde(skip_serializing_if = "Option::is_none")] | ||||
|             pub prev_content: Option<$content_type>, | ||||
| 
 | ||||
|             /// The unique identifier for the room associated with this event.
 | ||||
| @ -180,7 +180,7 @@ macro_rules! state_event { | ||||
|             pub state_key: String, | ||||
| 
 | ||||
|             /// Additional key-value pairs not signed by the homeserver.
 | ||||
|             #[serde(skip_serializing_if="Option::is_none")] | ||||
|             #[serde(skip_serializing_if = "Option::is_none")] | ||||
|             pub unsigned: Option<::serde_json::Value>, | ||||
| 
 | ||||
|             /// The unique identifier for the user associated with this event.
 | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.presence* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| use ruma_identifiers::UserId; | ||||
| 
 | ||||
| event! { | ||||
| @ -59,12 +61,13 @@ impl_enum! { | ||||
| 
 | ||||
| #[cfg(test)] | ||||
| mod tests { | ||||
|     use serde_json::{from_str, to_string}; | ||||
|     use std::convert::TryFrom; | ||||
| 
 | ||||
|     use ruma_identifiers::UserId; | ||||
|     use serde_json::{from_str, to_string}; | ||||
| 
 | ||||
|     use super::{PresenceEvent, PresenceEventContent, PresenceState}; | ||||
|     use super::super::{EventType}; | ||||
|     use crate::EventType; | ||||
| 
 | ||||
|     /// Test serialization and deserialization of example m.presence event from the spec
 | ||||
|     /// https://github.com/turt2live/matrix-doc/blob/master/event-schemas/examples/m.presence
 | ||||
| @ -84,18 +87,9 @@ mod tests { | ||||
|         let serialized_event = | ||||
|             r#"{"content":{"avatar_url":"mxc://localhost:wefuiwegh8742w","currently_active":false,"last_active_ago":2478593,"presence":"online"},"type":"m.presence","sender":"@example:localhost"}"#; | ||||
| 
 | ||||
|         assert_eq!( | ||||
|             to_string(&event).unwrap(), | ||||
|             serialized_event | ||||
|         ); | ||||
|         assert_eq!(to_string(&event).unwrap(), serialized_event); | ||||
|         let deserialized_event = from_str::<PresenceEvent>(serialized_event).unwrap(); | ||||
|         assert_eq!( | ||||
|             deserialized_event.content, | ||||
|             event.content | ||||
|         ); | ||||
|         assert_eq!( | ||||
|             deserialized_event.sender, | ||||
|             event.sender | ||||
|         ); | ||||
|         assert_eq!(deserialized_event.content, event.content); | ||||
|         assert_eq!(deserialized_event.sender, event.sender); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -3,6 +3,7 @@ | ||||
| use std::collections::HashMap; | ||||
| 
 | ||||
| use ruma_identifiers::{EventId, RoomId, UserId}; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| event! { | ||||
|     /// Informs the client of new receipts.
 | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| //! Types for the *m.room.aliases* event.
 | ||||
| 
 | ||||
| use ruma_identifiers::RoomAliasId; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// Informs the room about what room aliases it has been given.
 | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.room.avatar* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| use super::ImageInfo; | ||||
| 
 | ||||
| state_event! { | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| //! Types for the *m.room.canonical_alias* event.
 | ||||
| 
 | ||||
| use ruma_identifiers::RoomAliasId; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// Informs the room as to which alias is the canonical one.
 | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| //! Types for the *m.room.create* event.
 | ||||
| 
 | ||||
| use ruma_identifiers::UserId; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// This is the first event in a room and cannot be changed. It acts as the root of all other
 | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.room.guest_access* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// Controls whether guest users are allowed to join rooms.
 | ||||
|     ///
 | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.room.history_visibility* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// This event controls whether a member of a room can see the events that happened in a room
 | ||||
|     /// from before they joined.
 | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.room.join_rules* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// Describes how users are allowed to join the room.
 | ||||
|     pub struct JoinRulesEvent(JoinRulesEventContent) {} | ||||
|  | ||||
| @ -2,8 +2,9 @@ | ||||
| 
 | ||||
| use ruma_identifiers::UserId; | ||||
| use ruma_signatures::Signatures; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| use stripped::StrippedState; | ||||
| use crate::stripped::StrippedState; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// The current membership state of a user in the room.
 | ||||
| @ -22,7 +23,7 @@ state_event! { | ||||
|     /// on a few select state events such as the room name.
 | ||||
|     pub struct MemberEvent(MemberEventContent) { | ||||
|         /// A subset of the state of the room at the time of the invite.
 | ||||
|         #[serde(skip_serializing_if="Option::is_none")] | ||||
|         #[serde(skip_serializing_if = "Option::is_none")] | ||||
|         pub invite_room_state: Option<Vec<StrippedState>> | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| //! Types for the *m.room.message* event.
 | ||||
| 
 | ||||
| use serde::de::Error; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::{de::Error, Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| use serde_json::{from_value, Value}; | ||||
| 
 | ||||
| use super::{ImageInfo, ThumbnailInfo}; | ||||
| @ -396,17 +396,17 @@ mod tests { | ||||
|         assert_eq!( | ||||
|             from_str::<MessageEventContent>( | ||||
|                 r#"{"body":"test","msgtype":"m.audio","url":"http://example.com/audio.mp3"}"# | ||||
|             ).unwrap(), | ||||
|             ) | ||||
|             .unwrap(), | ||||
|             message_event_content | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn deserialization_failure() { | ||||
|         assert!( | ||||
|             from_str::<MessageEventContent>( | ||||
|                 r#"{"body":"test","msgtype":"m.location","url":"http://example.com/audio.mp3"}"# | ||||
|             ).is_err() | ||||
|         ); | ||||
|         assert!(from_str::<MessageEventContent>( | ||||
|             r#"{"body":"test","msgtype":"m.location","url":"http://example.com/audio.mp3"}"# | ||||
|         ) | ||||
|         .is_err()); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -2,6 +2,8 @@ | ||||
| //!
 | ||||
| //! This module also contains types shared by events in its child namespaces.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| pub mod aliases; | ||||
| pub mod avatar; | ||||
| pub mod canonical_alias; | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.room.name* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// A human-friendly room name designed to be displayed to the end-user.
 | ||||
|     pub struct NameEvent(NameEventContent) {} | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| //! Types for the *m.room.pinned_events* event.
 | ||||
| 
 | ||||
| use ruma_identifiers::EventId; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// Used to "pin" particular events in a room for other participants to review later.
 | ||||
| @ -19,11 +20,10 @@ mod tests { | ||||
|     use ruma_identifiers::{EventId, RoomId, UserId}; | ||||
|     use serde_json::{from_str, to_string}; | ||||
| 
 | ||||
|     use room::pinned_events::{PinnedEventsContent, PinnedEventsEvent}; | ||||
|     use Event; | ||||
|     use EventType; | ||||
|     use RoomEvent; | ||||
|     use StateEvent; | ||||
|     use crate::{ | ||||
|         room::pinned_events::{PinnedEventsContent, PinnedEventsEvent}, | ||||
|         Event, EventType, RoomEvent, StateEvent, | ||||
|     }; | ||||
| 
 | ||||
|     #[test] | ||||
|     fn serialization_deserialization() { | ||||
|  | ||||
| @ -3,8 +3,9 @@ | ||||
| use std::collections::HashMap; | ||||
| 
 | ||||
| use ruma_identifiers::UserId; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| use EventType; | ||||
| use crate::EventType; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// Defines the power levels (privileges) of users in the room.
 | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| //! Types for the *m.room.redaction* event.
 | ||||
| 
 | ||||
| use ruma_identifiers::EventId; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| room_event! { | ||||
|     /// A redaction of an event.
 | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.room.third_party_invite* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// An invitation to a room issued to a third party identifier, rather than a matrix user ID.
 | ||||
|     ///
 | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| //! Types for the *m.room.topic* event.
 | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| state_event! { | ||||
|     /// A topic is a short message detailing what is currently being discussed in the room.
 | ||||
|     pub struct TopicEvent(TopicEventContent) {} | ||||
|  | ||||
| @ -6,23 +6,21 @@ | ||||
| //! the other fields are otherwise inapplicable.
 | ||||
| 
 | ||||
| use ruma_identifiers::UserId; | ||||
| use serde::de::Error; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::{de::Error, Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| use serde_json::{from_value, Value}; | ||||
| 
 | ||||
| use room::aliases::AliasesEventContent; | ||||
| use room::avatar::AvatarEventContent; | ||||
| use room::canonical_alias::CanonicalAliasEventContent; | ||||
| use room::create::CreateEventContent; | ||||
| use room::guest_access::GuestAccessEventContent; | ||||
| use room::history_visibility::HistoryVisibilityEventContent; | ||||
| use room::join_rules::JoinRulesEventContent; | ||||
| use room::member::MemberEventContent; | ||||
| use room::name::NameEventContent; | ||||
| use room::power_levels::PowerLevelsEventContent; | ||||
| use room::third_party_invite::ThirdPartyInviteEventContent; | ||||
| use room::topic::TopicEventContent; | ||||
| use EventType; | ||||
| use crate::{ | ||||
|     room::{ | ||||
|         aliases::AliasesEventContent, avatar::AvatarEventContent, | ||||
|         canonical_alias::CanonicalAliasEventContent, create::CreateEventContent, | ||||
|         guest_access::GuestAccessEventContent, history_visibility::HistoryVisibilityEventContent, | ||||
|         join_rules::JoinRulesEventContent, member::MemberEventContent, name::NameEventContent, | ||||
|         power_levels::PowerLevelsEventContent, third_party_invite::ThirdPartyInviteEventContent, | ||||
|         topic::TopicEventContent, | ||||
|     }, | ||||
|     EventType, | ||||
| }; | ||||
| 
 | ||||
| /// A stripped-down version of a state event that is included along with some other events.
 | ||||
| #[derive(Clone, Debug)] | ||||
| @ -265,9 +263,10 @@ mod tests { | ||||
|     use serde_json::{from_str, to_string}; | ||||
| 
 | ||||
|     use super::{StrippedRoomTopic, StrippedState}; | ||||
|     use room::join_rules::JoinRule; | ||||
|     use room::topic::TopicEventContent; | ||||
|     use EventType; | ||||
|     use crate::{ | ||||
|         room::{join_rules::JoinRule, topic::TopicEventContent}, | ||||
|         EventType, | ||||
|     }; | ||||
| 
 | ||||
|     #[test] | ||||
|     fn serialize_stripped_state_event() { | ||||
|  | ||||
| @ -2,6 +2,8 @@ | ||||
| 
 | ||||
| use std::collections::HashMap; | ||||
| 
 | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| event! { | ||||
|     /// Informs the client of tags on a room.
 | ||||
|     pub struct TagEvent(TagEventContent) {} | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| //! Types for the *m.typing* event.
 | ||||
| 
 | ||||
| use ruma_identifiers::{RoomId, UserId}; | ||||
| use serde_derive::{Deserialize, Serialize}; | ||||
| 
 | ||||
| event! { | ||||
|     /// Informs the client of the list of users currently typing.
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user