Add EventKind trait.
This commit is contained in:
parent
3a90a96708
commit
b84fc9b23e
26
src/lib.rs
26
src/lib.rs
@ -20,6 +20,20 @@ pub mod stripped;
|
|||||||
pub mod tag;
|
pub mod tag;
|
||||||
pub mod typing;
|
pub mod typing;
|
||||||
|
|
||||||
|
/// A basic event.
|
||||||
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
|
pub struct Event<T> where T: Deserialize + Serialize {
|
||||||
|
pub content: T,
|
||||||
|
#[serde(rename="type")]
|
||||||
|
pub event_type: EventType,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A type that represents a kind of Matrix event.
|
||||||
|
///
|
||||||
|
/// The event kinds are basic events, room events, and state events.
|
||||||
|
/// This trait can be useful to constrain a generic parameter that must be a Matrix event.
|
||||||
|
pub trait EventKind: Deserialize + Serialize {}
|
||||||
|
|
||||||
/// The type of an event.
|
/// The type of an event.
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
pub enum EventType {
|
pub enum EventType {
|
||||||
@ -47,14 +61,6 @@ pub enum EventType {
|
|||||||
Typing,
|
Typing,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A basic event.
|
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
|
||||||
pub struct Event<T> where T: Deserialize + Serialize {
|
|
||||||
pub content: T,
|
|
||||||
#[serde(rename="type")]
|
|
||||||
pub event_type: EventType,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// An event within the context of a room.
|
/// An event within the context of a room.
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
pub struct RoomEvent<T> where T: Deserialize + Serialize {
|
pub struct RoomEvent<T> where T: Deserialize + Serialize {
|
||||||
@ -83,6 +89,10 @@ pub struct StateEvent<T> where T: Deserialize + Serialize {
|
|||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<T> EventKind for Event<T> where T: Deserialize + Serialize {}
|
||||||
|
impl<T> EventKind for RoomEvent<T> where T: Deserialize + Serialize {}
|
||||||
|
impl<T> EventKind for StateEvent<T> where T: Deserialize + Serialize {}
|
||||||
|
|
||||||
impl Display for EventType {
|
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 {
|
let event_type_str = match *self {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
//! Types for the *m.presence* event.
|
//! Types for the *m.presence* event.
|
||||||
|
|
||||||
use EventType;
|
use {EventKind, EventType};
|
||||||
|
|
||||||
/// Informs the client of a user's presence state change.
|
/// Informs the client of a user's presence state change.
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
@ -38,3 +38,5 @@ pub enum PresenceState {
|
|||||||
/// Connected to the service but not available for chat.
|
/// Connected to the service but not available for chat.
|
||||||
Unavailable,
|
Unavailable,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl EventKind for PresenceEvent {}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use EventType;
|
use {EventKind, EventType};
|
||||||
|
|
||||||
/// Informs the client of new receipts.
|
/// Informs the client of new receipts.
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
@ -37,3 +37,5 @@ pub struct Receipt {
|
|||||||
/// The timestamp the receipt was sent at.
|
/// The timestamp the receipt was sent at.
|
||||||
pub ts: u64,
|
pub ts: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl EventKind for ReceiptEvent {}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
//! Types for the *m.typing* event.
|
//! Types for the *m.typing* event.
|
||||||
|
|
||||||
use EventType;
|
use {EventKind, EventType};
|
||||||
|
|
||||||
/// Informs the client of the list of users currently typing.
|
/// Informs the client of the list of users currently typing.
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
@ -19,3 +19,5 @@ pub struct TypingEventContent {
|
|||||||
/// The list of user IDs typing in this room, if any.
|
/// The list of user IDs typing in this room, if any.
|
||||||
pub user_ids: Vec<String>,
|
pub user_ids: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl EventKind for TypingEvent {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user