diff --git a/src/content_enums.rs b/src/content_enums.rs new file mode 100644 index 00000000..85e72ab5 --- /dev/null +++ b/src/content_enums.rs @@ -0,0 +1,36 @@ +use ruma_events_macros::event_content_enum; + +event_content_enum! { + /// Any message event's content. + name: AnyMessageEventContent, + events: [ + "m.call.answer", + "m.call.invite", + "m.call.hangup", + "m.call.candidates", + "m.sticker", + ] +} + +event_content_enum! { + /// Amy state event's content. + name: AnyStateEventContent, + events: [ + "m.room.aliases", + "m.room.avatar", + "m.room.canonical_alias", + "m.room.create", + "m.room.encryption", + "m.room.guest_access", + "m.room.history_visibility", + "m.room.join_rules", + "m.room.member", + "m.room.name", + "m.room.pinned_events", + "m.room.power_levels", + "m.room.server_acl", + "m.room.third_party_invite", + "m.room.tombstone", + "m.room.topic", + ] +} diff --git a/src/state.rs b/src/event_kinds.rs similarity index 59% rename from src/state.rs rename to src/event_kinds.rs index 46ee1062..93de3bfd 100644 --- a/src/state.rs +++ b/src/event_kinds.rs @@ -1,42 +1,38 @@ -//! An enum that represents any state event. A state event is represented by -//! a parameterized struct allowing more flexibility in whats being sent. - use std::{ convert::TryFrom, time::{SystemTime, UNIX_EPOCH}, }; use js_int::UInt; +use ruma_events_macros::Event; use ruma_identifiers::{EventId, RoomId, UserId}; use serde::{ ser::{Error, SerializeStruct}, Serialize, Serializer, }; -use crate::{RoomEventContent, StateEventContent, TryFromRaw, UnsignedData}; -use ruma_events_macros::{event_content_enum, Event}; +use crate::{MessageEventContent, RoomEventContent, StateEventContent, TryFromRaw, UnsignedData}; -event_content_enum! { - /// A state event. - name: AnyStateEventContent, - events: [ - "m.room.aliases", - "m.room.avatar", - "m.room.canonical_alias", - "m.room.create", - "m.room.encryption", - "m.room.guest_access", - "m.room.history_visibility", - "m.room.join_rules", - "m.room.member", - "m.room.name", - "m.room.pinned_events", - "m.room.power_levels", - "m.room.server_acl", - "m.room.third_party_invite", - "m.room.tombstone", - "m.room.topic", - ] +/// Message event. +#[derive(Clone, Debug, Event)] +pub struct MessageEvent { + /// Data specific to the event type. + pub content: C, + + /// The globally unique event identifier for the user who sent the event. + pub event_id: EventId, + + /// Contains the fully-qualified ID of the user who sent this event. + pub sender: UserId, + + /// Timestamp in milliseconds on originating homeserver when this event was sent. + pub origin_server_ts: SystemTime, + + /// The ID of the room associated with this event. + pub room_id: RoomId, + + /// Additional key-value pairs not signed by the homeserver. + pub unsigned: UnsignedData, } /// State event. diff --git a/src/lib.rs b/src/lib.rs index d2ac4160..084cc750 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -130,12 +130,12 @@ use serde_json::value::RawValue as RawJsonValue; pub use ruma_serde::empty::Empty; mod algorithm; +mod content_enums; mod error; +mod event_kinds; mod event_type; mod from_raw; mod json; -mod message; -mod state; #[doc(hidden)] // only public for external tests pub mod util; @@ -165,12 +165,12 @@ pub mod typing; pub use self::{ algorithm::Algorithm, + content_enums::{AnyMessageEventContent, AnyStateEventContent}, error::{FromStrError, InvalidEvent, InvalidInput}, + event_kinds::{MessageEvent, StateEvent}, event_type::EventType, from_raw::{FromRaw, TryFromRaw}, json::EventJson, - message::{AnyMessageEventContent, MessageEvent}, - state::{AnyStateEventContent, StateEvent}, }; /// Extra information about an event that is not incorporated into the event's diff --git a/src/message.rs b/src/message.rs deleted file mode 100644 index ed4f185b..00000000 --- a/src/message.rs +++ /dev/null @@ -1,51 +0,0 @@ -//! An enum that represents any message event. A message event is represented by -//! a parameterized struct allowing more flexibility in whats being sent. - -use std::{ - convert::TryFrom, - time::{SystemTime, UNIX_EPOCH}, -}; - -use js_int::UInt; -use ruma_identifiers::{EventId, RoomId, UserId}; -use serde::{ - ser::{Error, SerializeStruct}, - Serialize, Serializer, -}; - -use crate::{MessageEventContent, RoomEventContent, UnsignedData}; -use ruma_events_macros::{event_content_enum, Event}; - -event_content_enum! { - /// A message event. - name: AnyMessageEventContent, - events: [ - "m.call.answer", - "m.call.invite", - "m.call.hangup", - "m.call.candidates", - "m.sticker", - ] -} - -/// Message event. -#[derive(Clone, Debug, Event)] -pub struct MessageEvent { - /// Data specific to the event type. - pub content: C, - - /// The globally unique event identifier for the user who sent the event. - pub event_id: EventId, - - /// Contains the fully-qualified ID of the user who sent this event. - pub sender: UserId, - - /// Timestamp in milliseconds on originating homeserver when this event was sent. - pub origin_server_ts: SystemTime, - - /// The ID of the room associated with this event. - pub room_id: RoomId, - - /// Additional key-value pairs not signed by the homeserver. - pub unsigned: UnsignedData, -}