Add E2EE events to EventType and collections types.
This commit is contained in:
parent
a0a9799c81
commit
a0ee826828
@ -6,8 +6,14 @@ use crate::{
|
||||
answer::AnswerEvent, candidates::CandidatesEvent, hangup::HangupEvent, invite::InviteEvent,
|
||||
},
|
||||
direct::DirectEvent,
|
||||
dummy::DummyEvent,
|
||||
forwarded_room_key::ForwardedRoomKeyEvent,
|
||||
fully_read::FullyReadEvent,
|
||||
ignored_user_list::IgnoredUserListEvent,
|
||||
key::verification::{
|
||||
accept::AcceptEvent, cancel::CancelEvent, key::KeyEvent, mac::MacEvent,
|
||||
request::RequestEvent, start::StartEvent,
|
||||
},
|
||||
presence::PresenceEvent,
|
||||
receipt::ReceiptEvent,
|
||||
room::{
|
||||
@ -15,6 +21,8 @@ use crate::{
|
||||
avatar::AvatarEvent,
|
||||
canonical_alias::CanonicalAliasEvent,
|
||||
create::CreateEvent,
|
||||
encrypted::EncryptedEvent,
|
||||
encryption::EncryptionEvent,
|
||||
guest_access::GuestAccessEvent,
|
||||
history_visibility::HistoryVisibilityEvent,
|
||||
join_rules::JoinRulesEvent,
|
||||
@ -29,6 +37,8 @@ use crate::{
|
||||
tombstone::TombstoneEvent,
|
||||
topic::TopicEvent,
|
||||
},
|
||||
room_key::RoomKeyEvent,
|
||||
room_key_request::RoomKeyRequestEvent,
|
||||
sticker::StickerEvent,
|
||||
tag::TagEvent,
|
||||
typing::TypingEvent,
|
||||
@ -57,12 +67,36 @@ pub enum Event {
|
||||
/// m.direct
|
||||
Direct(DirectEvent),
|
||||
|
||||
/// m.dummy
|
||||
Dummy(DummyEvent),
|
||||
|
||||
/// m.forwarded_room_key
|
||||
ForwardedRoomKey(ForwardedRoomKeyEvent),
|
||||
|
||||
/// m.fully_read
|
||||
FullyRead(FullyReadEvent),
|
||||
|
||||
/// m.ignored_user_list
|
||||
IgnoredUserList(IgnoredUserListEvent),
|
||||
|
||||
/// m.key.verification.accept
|
||||
KeyVerificationAccept(AcceptEvent),
|
||||
|
||||
/// m.key.verification.cancel
|
||||
KeyVerificationCancel(CancelEvent),
|
||||
|
||||
/// m.key.verification.key
|
||||
KeyVerificationKey(KeyEvent),
|
||||
|
||||
/// m.key.verification.mac
|
||||
KeyVerificationMac(MacEvent),
|
||||
|
||||
/// m.key.verification.request
|
||||
KeyVerificationRequest(RequestEvent),
|
||||
|
||||
/// m.key.verification.start
|
||||
KeyVerificationStart(StartEvent),
|
||||
|
||||
/// m.presence
|
||||
Presence(PresenceEvent),
|
||||
|
||||
@ -81,6 +115,12 @@ pub enum Event {
|
||||
/// m.room.create
|
||||
RoomCreate(CreateEvent),
|
||||
|
||||
/// m.room.encrypted
|
||||
RoomEncrypted(EncryptedEvent),
|
||||
|
||||
/// m.room.encryption
|
||||
RoomEncryption(EncryptionEvent),
|
||||
|
||||
/// m.room.guest_access
|
||||
RoomGuestAccess(GuestAccessEvent),
|
||||
|
||||
@ -123,6 +163,12 @@ pub enum Event {
|
||||
/// m.room.topic
|
||||
RoomTopic(TopicEvent),
|
||||
|
||||
/// m.room_key
|
||||
RoomKey(RoomKeyEvent),
|
||||
|
||||
/// m.room_key_request
|
||||
RoomKeyRequest(RoomKeyRequestEvent),
|
||||
|
||||
/// m.sticker
|
||||
Sticker(StickerEvent),
|
||||
|
||||
@ -170,6 +216,12 @@ pub enum RoomEvent {
|
||||
/// m.room.create
|
||||
RoomCreate(CreateEvent),
|
||||
|
||||
/// m.room.encrypted
|
||||
RoomEncrypted(EncryptedEvent),
|
||||
|
||||
/// m.room.encryption
|
||||
RoomEncryption(EncryptionEvent),
|
||||
|
||||
/// m.room.guest_access
|
||||
RoomGuestAccess(GuestAccessEvent),
|
||||
|
||||
@ -238,6 +290,9 @@ pub enum StateEvent {
|
||||
/// m.room.create
|
||||
RoomCreate(CreateEvent),
|
||||
|
||||
/// m.room.encryption
|
||||
RoomEncryption(EncryptionEvent),
|
||||
|
||||
/// m.room.guest_access
|
||||
RoomGuestAccess(GuestAccessEvent),
|
||||
|
||||
@ -286,7 +341,15 @@ impl Serialize for Event {
|
||||
Event::CallHangup(ref event) => event.serialize(serializer),
|
||||
Event::CallInvite(ref event) => event.serialize(serializer),
|
||||
Event::Direct(ref event) => event.serialize(serializer),
|
||||
Event::Dummy(ref event) => event.serialize(serializer),
|
||||
Event::ForwardedRoomKey(ref event) => event.serialize(serializer),
|
||||
Event::FullyRead(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationAccept(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationCancel(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationKey(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationMac(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationRequest(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationStart(ref event) => event.serialize(serializer),
|
||||
Event::IgnoredUserList(ref event) => event.serialize(serializer),
|
||||
Event::Presence(ref event) => event.serialize(serializer),
|
||||
Event::Receipt(ref event) => event.serialize(serializer),
|
||||
@ -294,6 +357,8 @@ impl Serialize for Event {
|
||||
Event::RoomAvatar(ref event) => event.serialize(serializer),
|
||||
Event::RoomCanonicalAlias(ref event) => event.serialize(serializer),
|
||||
Event::RoomCreate(ref event) => event.serialize(serializer),
|
||||
Event::RoomEncrypted(ref event) => event.serialize(serializer),
|
||||
Event::RoomEncryption(ref event) => event.serialize(serializer),
|
||||
Event::RoomGuestAccess(ref event) => event.serialize(serializer),
|
||||
Event::RoomHistoryVisibility(ref event) => event.serialize(serializer),
|
||||
Event::RoomJoinRules(ref event) => event.serialize(serializer),
|
||||
@ -308,6 +373,8 @@ impl Serialize for Event {
|
||||
Event::RoomThirdPartyInvite(ref event) => event.serialize(serializer),
|
||||
Event::RoomTombstone(ref event) => event.serialize(serializer),
|
||||
Event::RoomTopic(ref event) => event.serialize(serializer),
|
||||
Event::RoomKey(ref event) => event.serialize(serializer),
|
||||
Event::RoomKeyRequest(ref event) => event.serialize(serializer),
|
||||
Event::Sticker(ref event) => event.serialize(serializer),
|
||||
Event::Tag(ref event) => event.serialize(serializer),
|
||||
Event::Typing(ref event) => event.serialize(serializer),
|
||||
@ -376,6 +443,22 @@ impl<'de> Deserialize<'de> for Event {
|
||||
|
||||
Ok(Event::Direct(event))
|
||||
}
|
||||
EventType::Dummy => {
|
||||
let event = match from_value::<DummyEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::Dummy(event))
|
||||
}
|
||||
EventType::ForwardedRoomKey => {
|
||||
let event = match from_value::<ForwardedRoomKeyEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::ForwardedRoomKey(event))
|
||||
}
|
||||
EventType::FullyRead => {
|
||||
let event = match from_value::<FullyReadEvent>(value) {
|
||||
Ok(event) => event,
|
||||
@ -384,6 +467,54 @@ impl<'de> Deserialize<'de> for Event {
|
||||
|
||||
Ok(Event::FullyRead(event))
|
||||
}
|
||||
EventType::KeyVerificationAccept => {
|
||||
let event = match from_value::<AcceptEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationAccept(event))
|
||||
}
|
||||
EventType::KeyVerificationCancel => {
|
||||
let event = match from_value::<CancelEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationCancel(event))
|
||||
}
|
||||
EventType::KeyVerificationKey => {
|
||||
let event = match from_value::<KeyEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationKey(event))
|
||||
}
|
||||
EventType::KeyVerificationMac => {
|
||||
let event = match from_value::<MacEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationMac(event))
|
||||
}
|
||||
EventType::KeyVerificationRequest => {
|
||||
let event = match from_value::<RequestEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationRequest(event))
|
||||
}
|
||||
EventType::KeyVerificationStart => {
|
||||
let event = match from_value::<StartEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationStart(event))
|
||||
}
|
||||
EventType::IgnoredUserList => {
|
||||
let event = match from_value::<IgnoredUserListEvent>(value) {
|
||||
Ok(event) => event,
|
||||
@ -440,6 +571,22 @@ impl<'de> Deserialize<'de> for Event {
|
||||
|
||||
Ok(Event::RoomCreate(event))
|
||||
}
|
||||
EventType::RoomEncrypted => {
|
||||
let event = match from_value::<EncryptedEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::RoomEncrypted(event))
|
||||
}
|
||||
EventType::RoomEncryption => {
|
||||
let event = match from_value::<EncryptionEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::RoomEncryption(event))
|
||||
}
|
||||
EventType::RoomGuestAccess => {
|
||||
let event = match from_value::<GuestAccessEvent>(value) {
|
||||
Ok(event) => event,
|
||||
@ -552,6 +699,22 @@ impl<'de> Deserialize<'de> for Event {
|
||||
|
||||
Ok(Event::RoomTopic(event))
|
||||
}
|
||||
EventType::RoomKey => {
|
||||
let event = match from_value::<RoomKeyEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::RoomKey(event))
|
||||
}
|
||||
EventType::RoomKeyRequest => {
|
||||
let event = match from_value::<RoomKeyRequestEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::RoomKeyRequest(event))
|
||||
}
|
||||
EventType::Sticker => {
|
||||
let event = match from_value::<StickerEvent>(value) {
|
||||
Ok(event) => event,
|
||||
@ -624,6 +787,8 @@ impl Serialize for RoomEvent {
|
||||
RoomEvent::RoomAvatar(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomCanonicalAlias(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomCreate(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomEncrypted(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomEncryption(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomGuestAccess(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomHistoryVisibility(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomJoinRules(ref event) => event.serialize(serializer),
|
||||
@ -727,6 +892,22 @@ impl<'de> Deserialize<'de> for RoomEvent {
|
||||
|
||||
Ok(RoomEvent::RoomCreate(event))
|
||||
}
|
||||
EventType::RoomEncrypted => {
|
||||
let event = match from_value::<EncryptedEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(RoomEvent::RoomEncrypted(event))
|
||||
}
|
||||
EventType::RoomEncryption => {
|
||||
let event = match from_value::<EncryptionEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(RoomEvent::RoomEncryption(event))
|
||||
}
|
||||
EventType::RoomGuestAccess => {
|
||||
let event = match from_value::<GuestAccessEvent>(value) {
|
||||
Ok(event) => event,
|
||||
@ -865,10 +1046,20 @@ impl<'de> Deserialize<'de> for RoomEvent {
|
||||
}
|
||||
}
|
||||
EventType::Direct
|
||||
| EventType::Dummy
|
||||
| EventType::ForwardedRoomKey
|
||||
| EventType::FullyRead
|
||||
| EventType::KeyVerificationAccept
|
||||
| EventType::KeyVerificationCancel
|
||||
| EventType::KeyVerificationKey
|
||||
| EventType::KeyVerificationMac
|
||||
| EventType::KeyVerificationRequest
|
||||
| EventType::KeyVerificationStart
|
||||
| EventType::IgnoredUserList
|
||||
| EventType::Presence
|
||||
| EventType::Receipt
|
||||
| EventType::RoomKey
|
||||
| EventType::RoomKeyRequest
|
||||
| EventType::Tag
|
||||
| EventType::Typing => Err(D::Error::custom("not a room event".to_string())),
|
||||
EventType::__Nonexhaustive => {
|
||||
@ -888,6 +1079,7 @@ impl Serialize for StateEvent {
|
||||
StateEvent::RoomAvatar(ref event) => event.serialize(serializer),
|
||||
StateEvent::RoomCanonicalAlias(ref event) => event.serialize(serializer),
|
||||
StateEvent::RoomCreate(ref event) => event.serialize(serializer),
|
||||
StateEvent::RoomEncryption(ref event) => event.serialize(serializer),
|
||||
StateEvent::RoomGuestAccess(ref event) => event.serialize(serializer),
|
||||
StateEvent::RoomHistoryVisibility(ref event) => event.serialize(serializer),
|
||||
StateEvent::RoomJoinRules(ref event) => event.serialize(serializer),
|
||||
@ -954,6 +1146,14 @@ impl<'de> Deserialize<'de> for StateEvent {
|
||||
|
||||
Ok(StateEvent::RoomCreate(event))
|
||||
}
|
||||
EventType::RoomEncryption => {
|
||||
let event = match from_value::<EncryptionEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(StateEvent::RoomEncryption(event))
|
||||
}
|
||||
EventType::RoomGuestAccess => {
|
||||
let event = match from_value::<GuestAccessEvent>(value) {
|
||||
Ok(event) => event,
|
||||
@ -1055,13 +1255,24 @@ impl<'de> Deserialize<'de> for StateEvent {
|
||||
| EventType::CallHangup
|
||||
| EventType::CallInvite
|
||||
| EventType::Direct
|
||||
| EventType::Dummy
|
||||
| EventType::ForwardedRoomKey
|
||||
| EventType::FullyRead
|
||||
| EventType::KeyVerificationAccept
|
||||
| EventType::KeyVerificationCancel
|
||||
| EventType::KeyVerificationKey
|
||||
| EventType::KeyVerificationMac
|
||||
| EventType::KeyVerificationRequest
|
||||
| EventType::KeyVerificationStart
|
||||
| EventType::IgnoredUserList
|
||||
| EventType::Presence
|
||||
| EventType::Receipt
|
||||
| EventType::RoomEncrypted
|
||||
| EventType::RoomMessage
|
||||
| EventType::RoomMessageFeedback
|
||||
| EventType::RoomRedaction
|
||||
| EventType::RoomKey
|
||||
| EventType::RoomKeyRequest
|
||||
| EventType::Sticker
|
||||
| EventType::Tag
|
||||
| EventType::Typing => Err(D::Error::custom("not a state event".to_string())),
|
||||
@ -1087,7 +1298,15 @@ impl_from_t_for_event!(CandidatesEvent, CallCandidates);
|
||||
impl_from_t_for_event!(HangupEvent, CallHangup);
|
||||
impl_from_t_for_event!(InviteEvent, CallInvite);
|
||||
impl_from_t_for_event!(DirectEvent, Direct);
|
||||
impl_from_t_for_event!(DummyEvent, Dummy);
|
||||
impl_from_t_for_event!(ForwardedRoomKeyEvent, ForwardedRoomKey);
|
||||
impl_from_t_for_event!(FullyReadEvent, FullyRead);
|
||||
impl_from_t_for_event!(AcceptEvent, KeyVerificationAccept);
|
||||
impl_from_t_for_event!(CancelEvent, KeyVerificationCancel);
|
||||
impl_from_t_for_event!(KeyEvent, KeyVerificationKey);
|
||||
impl_from_t_for_event!(MacEvent, KeyVerificationMac);
|
||||
impl_from_t_for_event!(RequestEvent, KeyVerificationRequest);
|
||||
impl_from_t_for_event!(StartEvent, KeyVerificationStart);
|
||||
impl_from_t_for_event!(IgnoredUserListEvent, IgnoredUserList);
|
||||
impl_from_t_for_event!(PresenceEvent, Presence);
|
||||
impl_from_t_for_event!(ReceiptEvent, Receipt);
|
||||
@ -1095,6 +1314,8 @@ impl_from_t_for_event!(AliasesEvent, RoomAliases);
|
||||
impl_from_t_for_event!(AvatarEvent, RoomAvatar);
|
||||
impl_from_t_for_event!(CanonicalAliasEvent, RoomCanonicalAlias);
|
||||
impl_from_t_for_event!(CreateEvent, RoomCreate);
|
||||
impl_from_t_for_event!(EncryptedEvent, RoomEncrypted);
|
||||
impl_from_t_for_event!(EncryptionEvent, RoomEncryption);
|
||||
impl_from_t_for_event!(GuestAccessEvent, RoomGuestAccess);
|
||||
impl_from_t_for_event!(HistoryVisibilityEvent, RoomHistoryVisibility);
|
||||
impl_from_t_for_event!(JoinRulesEvent, RoomJoinRules);
|
||||
@ -1109,6 +1330,8 @@ impl_from_t_for_event!(ServerAclEvent, RoomServerAcl);
|
||||
impl_from_t_for_event!(ThirdPartyInviteEvent, RoomThirdPartyInvite);
|
||||
impl_from_t_for_event!(TombstoneEvent, RoomTombstone);
|
||||
impl_from_t_for_event!(TopicEvent, RoomTopic);
|
||||
impl_from_t_for_event!(RoomKeyEvent, RoomKey);
|
||||
impl_from_t_for_event!(RoomKeyRequestEvent, RoomKeyRequest);
|
||||
impl_from_t_for_event!(StickerEvent, Sticker);
|
||||
impl_from_t_for_event!(TagEvent, Tag);
|
||||
impl_from_t_for_event!(TypingEvent, Typing);
|
||||
@ -1134,6 +1357,8 @@ impl_from_t_for_room_event!(AliasesEvent, RoomAliases);
|
||||
impl_from_t_for_room_event!(AvatarEvent, RoomAvatar);
|
||||
impl_from_t_for_room_event!(CanonicalAliasEvent, RoomCanonicalAlias);
|
||||
impl_from_t_for_room_event!(CreateEvent, RoomCreate);
|
||||
impl_from_t_for_room_event!(EncryptedEvent, RoomEncrypted);
|
||||
impl_from_t_for_room_event!(EncryptionEvent, RoomEncryption);
|
||||
impl_from_t_for_room_event!(GuestAccessEvent, RoomGuestAccess);
|
||||
impl_from_t_for_room_event!(HistoryVisibilityEvent, RoomHistoryVisibility);
|
||||
impl_from_t_for_room_event!(JoinRulesEvent, RoomJoinRules);
|
||||
@ -1166,6 +1391,7 @@ impl_from_t_for_state_event!(AliasesEvent, RoomAliases);
|
||||
impl_from_t_for_state_event!(AvatarEvent, RoomAvatar);
|
||||
impl_from_t_for_state_event!(CanonicalAliasEvent, RoomCanonicalAlias);
|
||||
impl_from_t_for_state_event!(CreateEvent, RoomCreate);
|
||||
impl_from_t_for_state_event!(EncryptionEvent, RoomEncryption);
|
||||
impl_from_t_for_state_event!(GuestAccessEvent, RoomGuestAccess);
|
||||
impl_from_t_for_state_event!(HistoryVisibilityEvent, RoomHistoryVisibility);
|
||||
impl_from_t_for_state_event!(JoinRulesEvent, RoomJoinRules);
|
||||
|
@ -10,14 +10,23 @@ use crate::{
|
||||
answer::AnswerEvent, candidates::CandidatesEvent, hangup::HangupEvent, invite::InviteEvent,
|
||||
},
|
||||
direct::DirectEvent,
|
||||
dummy::DummyEvent,
|
||||
forwarded_room_key::ForwardedRoomKeyEvent,
|
||||
fully_read::FullyReadEvent,
|
||||
ignored_user_list::IgnoredUserListEvent,
|
||||
key::verification::{
|
||||
accept::AcceptEvent, cancel::CancelEvent, key::KeyEvent, mac::MacEvent,
|
||||
request::RequestEvent, start::StartEvent,
|
||||
},
|
||||
presence::PresenceEvent,
|
||||
receipt::ReceiptEvent,
|
||||
room::{
|
||||
encrypted::EncryptedEvent,
|
||||
message::{feedback::FeedbackEvent, MessageEvent},
|
||||
redaction::RedactionEvent,
|
||||
},
|
||||
room_key::RoomKeyEvent,
|
||||
room_key_request::RoomKeyRequestEvent,
|
||||
sticker::StickerEvent,
|
||||
tag::TagEvent,
|
||||
typing::TypingEvent,
|
||||
@ -30,15 +39,45 @@ pub enum Event {
|
||||
/// m.direct
|
||||
Direct(DirectEvent),
|
||||
|
||||
/// m.dummy
|
||||
Dummy(DummyEvent),
|
||||
|
||||
/// m.forwarded_room_key
|
||||
ForwardedRoomKey(ForwardedRoomKeyEvent),
|
||||
|
||||
/// m.fully_read
|
||||
FullyRead(FullyReadEvent),
|
||||
|
||||
/// m.key.verification.accept
|
||||
KeyVerificationAccept(AcceptEvent),
|
||||
|
||||
/// m.key.verification.cancel
|
||||
KeyVerificationCancel(CancelEvent),
|
||||
|
||||
/// m.key.verification.key
|
||||
KeyVerificationKey(KeyEvent),
|
||||
|
||||
/// m.key.verification.mac
|
||||
KeyVerificationMac(MacEvent),
|
||||
|
||||
/// m.key.verification.request
|
||||
KeyVerificationRequest(RequestEvent),
|
||||
|
||||
/// m.key.verification.start
|
||||
KeyVerificationStart(StartEvent),
|
||||
|
||||
/// m.ignored_user_list
|
||||
IgnoredUserList(IgnoredUserListEvent),
|
||||
|
||||
/// m.presence
|
||||
Presence(PresenceEvent),
|
||||
|
||||
/// m.room_key
|
||||
RoomKey(RoomKeyEvent),
|
||||
|
||||
/// m.room_key_request
|
||||
RoomKeyRequest(RoomKeyRequestEvent),
|
||||
|
||||
/// m.receipt
|
||||
Receipt(ReceiptEvent),
|
||||
|
||||
@ -68,6 +107,9 @@ pub enum RoomEvent {
|
||||
/// m.call.invite
|
||||
CallInvite(InviteEvent),
|
||||
|
||||
/// m.room.encrypted
|
||||
RoomEncrypted(EncryptedEvent),
|
||||
|
||||
/// m.room.message
|
||||
RoomMessage(MessageEvent),
|
||||
|
||||
@ -91,10 +133,20 @@ impl Serialize for Event {
|
||||
{
|
||||
match *self {
|
||||
Event::Direct(ref event) => event.serialize(serializer),
|
||||
Event::Dummy(ref event) => event.serialize(serializer),
|
||||
Event::ForwardedRoomKey(ref event) => event.serialize(serializer),
|
||||
Event::FullyRead(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationAccept(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationCancel(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationKey(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationMac(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationRequest(ref event) => event.serialize(serializer),
|
||||
Event::KeyVerificationStart(ref event) => event.serialize(serializer),
|
||||
Event::IgnoredUserList(ref event) => event.serialize(serializer),
|
||||
Event::Presence(ref event) => event.serialize(serializer),
|
||||
Event::Receipt(ref event) => event.serialize(serializer),
|
||||
Event::RoomKey(ref event) => event.serialize(serializer),
|
||||
Event::RoomKeyRequest(ref event) => event.serialize(serializer),
|
||||
Event::Tag(ref event) => event.serialize(serializer),
|
||||
Event::Typing(ref event) => event.serialize(serializer),
|
||||
Event::Custom(ref event) => event.serialize(serializer),
|
||||
@ -128,6 +180,22 @@ impl<'de> Deserialize<'de> for Event {
|
||||
|
||||
Ok(Event::Direct(event))
|
||||
}
|
||||
EventType::Dummy => {
|
||||
let event = match from_value::<DummyEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::Dummy(event))
|
||||
}
|
||||
EventType::ForwardedRoomKey => {
|
||||
let event = match from_value::<ForwardedRoomKeyEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::ForwardedRoomKey(event))
|
||||
}
|
||||
EventType::FullyRead => {
|
||||
let event = match from_value::<FullyReadEvent>(value) {
|
||||
Ok(event) => event,
|
||||
@ -136,6 +204,54 @@ impl<'de> Deserialize<'de> for Event {
|
||||
|
||||
Ok(Event::FullyRead(event))
|
||||
}
|
||||
EventType::KeyVerificationAccept => {
|
||||
let event = match from_value::<AcceptEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationAccept(event))
|
||||
}
|
||||
EventType::KeyVerificationCancel => {
|
||||
let event = match from_value::<CancelEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationCancel(event))
|
||||
}
|
||||
EventType::KeyVerificationKey => {
|
||||
let event = match from_value::<KeyEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationKey(event))
|
||||
}
|
||||
EventType::KeyVerificationMac => {
|
||||
let event = match from_value::<MacEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationMac(event))
|
||||
}
|
||||
EventType::KeyVerificationRequest => {
|
||||
let event = match from_value::<RequestEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationRequest(event))
|
||||
}
|
||||
EventType::KeyVerificationStart => {
|
||||
let event = match from_value::<StartEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::KeyVerificationStart(event))
|
||||
}
|
||||
EventType::IgnoredUserList => {
|
||||
let event = match from_value::<IgnoredUserListEvent>(value) {
|
||||
Ok(event) => event,
|
||||
@ -160,6 +276,22 @@ impl<'de> Deserialize<'de> for Event {
|
||||
|
||||
Ok(Event::Receipt(event))
|
||||
}
|
||||
EventType::RoomKey => {
|
||||
let event = match from_value::<RoomKeyEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::RoomKey(event))
|
||||
}
|
||||
EventType::RoomKeyRequest => {
|
||||
let event = match from_value::<RoomKeyRequestEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::RoomKeyRequest(event))
|
||||
}
|
||||
EventType::Tag => {
|
||||
let event = match from_value::<TagEvent>(value) {
|
||||
Ok(event) => event,
|
||||
@ -192,6 +324,8 @@ impl<'de> Deserialize<'de> for Event {
|
||||
| EventType::RoomAvatar
|
||||
| EventType::RoomCanonicalAlias
|
||||
| EventType::RoomCreate
|
||||
| EventType::RoomEncrypted
|
||||
| EventType::RoomEncryption
|
||||
| EventType::RoomGuestAccess
|
||||
| EventType::RoomHistoryVisibility
|
||||
| EventType::RoomJoinRules
|
||||
@ -226,6 +360,7 @@ impl Serialize for RoomEvent {
|
||||
RoomEvent::CallCandidates(ref event) => event.serialize(serializer),
|
||||
RoomEvent::CallHangup(ref event) => event.serialize(serializer),
|
||||
RoomEvent::CallInvite(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomEncrypted(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomMessage(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomMessageFeedback(ref event) => event.serialize(serializer),
|
||||
RoomEvent::RoomRedaction(ref event) => event.serialize(serializer),
|
||||
@ -285,6 +420,14 @@ impl<'de> Deserialize<'de> for RoomEvent {
|
||||
|
||||
Ok(RoomEvent::CallInvite(event))
|
||||
}
|
||||
EventType::RoomEncrypted => {
|
||||
let event = match from_value::<EncryptedEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(RoomEvent::RoomEncrypted(event))
|
||||
}
|
||||
EventType::RoomMessage => {
|
||||
let event = match from_value::<MessageEvent>(value) {
|
||||
Ok(event) => event,
|
||||
@ -326,7 +469,15 @@ impl<'de> Deserialize<'de> for RoomEvent {
|
||||
Ok(RoomEvent::CustomRoom(event))
|
||||
}
|
||||
EventType::Direct
|
||||
| EventType::Dummy
|
||||
| EventType::ForwardedRoomKey
|
||||
| EventType::FullyRead
|
||||
| EventType::KeyVerificationAccept
|
||||
| EventType::KeyVerificationCancel
|
||||
| EventType::KeyVerificationKey
|
||||
| EventType::KeyVerificationMac
|
||||
| EventType::KeyVerificationRequest
|
||||
| EventType::KeyVerificationStart
|
||||
| EventType::IgnoredUserList
|
||||
| EventType::Presence
|
||||
| EventType::Receipt
|
||||
@ -334,6 +485,7 @@ impl<'de> Deserialize<'de> for RoomEvent {
|
||||
| EventType::RoomAvatar
|
||||
| EventType::RoomCanonicalAlias
|
||||
| EventType::RoomCreate
|
||||
| EventType::RoomEncryption
|
||||
| EventType::RoomGuestAccess
|
||||
| EventType::RoomHistoryVisibility
|
||||
| EventType::RoomJoinRules
|
||||
@ -345,6 +497,8 @@ impl<'de> Deserialize<'de> for RoomEvent {
|
||||
| EventType::RoomThirdPartyInvite
|
||||
| EventType::RoomTombstone
|
||||
| EventType::RoomTopic
|
||||
| EventType::RoomKey
|
||||
| EventType::RoomKeyRequest
|
||||
| EventType::Tag
|
||||
| EventType::Typing => {
|
||||
Err(D::Error::custom("not exclusively a room event".to_string()))
|
||||
@ -366,7 +520,15 @@ macro_rules! impl_from_t_for_event {
|
||||
}
|
||||
|
||||
impl_from_t_for_event!(DirectEvent, Direct);
|
||||
impl_from_t_for_event!(DummyEvent, Dummy);
|
||||
impl_from_t_for_event!(ForwardedRoomKeyEvent, ForwardedRoomKey);
|
||||
impl_from_t_for_event!(FullyReadEvent, FullyRead);
|
||||
impl_from_t_for_event!(AcceptEvent, KeyVerificationAccept);
|
||||
impl_from_t_for_event!(CancelEvent, KeyVerificationCancel);
|
||||
impl_from_t_for_event!(KeyEvent, KeyVerificationKey);
|
||||
impl_from_t_for_event!(MacEvent, KeyVerificationMac);
|
||||
impl_from_t_for_event!(RequestEvent, KeyVerificationRequest);
|
||||
impl_from_t_for_event!(StartEvent, KeyVerificationStart);
|
||||
impl_from_t_for_event!(IgnoredUserListEvent, IgnoredUserList);
|
||||
impl_from_t_for_event!(PresenceEvent, Presence);
|
||||
impl_from_t_for_event!(ReceiptEvent, Receipt);
|
||||
@ -388,6 +550,7 @@ impl_from_t_for_room_event!(AnswerEvent, CallAnswer);
|
||||
impl_from_t_for_room_event!(CandidatesEvent, CallCandidates);
|
||||
impl_from_t_for_room_event!(HangupEvent, CallHangup);
|
||||
impl_from_t_for_room_event!(InviteEvent, CallInvite);
|
||||
impl_from_t_for_room_event!(EncryptedEvent, RoomEncrypted);
|
||||
impl_from_t_for_room_event!(MessageEvent, RoomMessage);
|
||||
impl_from_t_for_room_event!(FeedbackEvent, RoomMessageFeedback);
|
||||
impl_from_t_for_room_event!(RedactionEvent, RoomRedaction);
|
||||
|
60
src/lib.rs
60
src/lib.rs
@ -155,9 +155,33 @@ pub enum EventType {
|
||||
/// m.direct
|
||||
Direct,
|
||||
|
||||
/// m.dummy
|
||||
Dummy,
|
||||
|
||||
/// m.forwarded_room_key
|
||||
ForwardedRoomKey,
|
||||
|
||||
/// m.fully_read
|
||||
FullyRead,
|
||||
|
||||
/// m.key.verification.accept
|
||||
KeyVerificationAccept,
|
||||
|
||||
/// m.key.verification.cancel
|
||||
KeyVerificationCancel,
|
||||
|
||||
/// m.key.verification.key
|
||||
KeyVerificationKey,
|
||||
|
||||
/// m.key.verification.mac
|
||||
KeyVerificationMac,
|
||||
|
||||
/// m.key.verification.request
|
||||
KeyVerificationRequest,
|
||||
|
||||
/// m.key.verification.start
|
||||
KeyVerificationStart,
|
||||
|
||||
/// m.ignored_user_list
|
||||
IgnoredUserList,
|
||||
|
||||
@ -179,6 +203,12 @@ pub enum EventType {
|
||||
/// m.room.create
|
||||
RoomCreate,
|
||||
|
||||
/// m.room.encrypted
|
||||
RoomEncrypted,
|
||||
|
||||
/// m.room.encryption
|
||||
RoomEncryption,
|
||||
|
||||
/// m.room.guest_access
|
||||
RoomGuestAccess,
|
||||
|
||||
@ -221,6 +251,12 @@ pub enum EventType {
|
||||
/// m.room.topic
|
||||
RoomTopic,
|
||||
|
||||
/// m.room_key
|
||||
RoomKey,
|
||||
|
||||
/// m.room_key_request
|
||||
RoomKeyRequest,
|
||||
|
||||
/// m.sticker
|
||||
Sticker,
|
||||
|
||||
@ -308,7 +344,15 @@ impl Display for EventType {
|
||||
EventType::CallHangup => "m.call.hangup",
|
||||
EventType::CallInvite => "m.call.invite",
|
||||
EventType::Direct => "m.direct",
|
||||
EventType::Dummy => "m.dummy",
|
||||
EventType::ForwardedRoomKey => "m.forwarded_room_key",
|
||||
EventType::FullyRead => "m.fully_read",
|
||||
EventType::KeyVerificationAccept => "m.key.verification.accept",
|
||||
EventType::KeyVerificationCancel => "m.key.verification.cancel",
|
||||
EventType::KeyVerificationKey => "m.key.verification.key",
|
||||
EventType::KeyVerificationMac => "m.key.verification.mac",
|
||||
EventType::KeyVerificationRequest => "m.key.verification.request",
|
||||
EventType::KeyVerificationStart => "m.key.verification.start",
|
||||
EventType::IgnoredUserList => "m.ignored_user_list",
|
||||
EventType::Presence => "m.presence",
|
||||
EventType::Receipt => "m.receipt",
|
||||
@ -316,6 +360,8 @@ impl Display for EventType {
|
||||
EventType::RoomAvatar => "m.room.avatar",
|
||||
EventType::RoomCanonicalAlias => "m.room.canonical_alias",
|
||||
EventType::RoomCreate => "m.room.create",
|
||||
EventType::RoomEncrypted => "m.room.encrypted",
|
||||
EventType::RoomEncryption => "m.room.encryption",
|
||||
EventType::RoomGuestAccess => "m.room.guest_access",
|
||||
EventType::RoomHistoryVisibility => "m.room.history_visibility",
|
||||
EventType::RoomJoinRules => "m.room.join_rules",
|
||||
@ -330,6 +376,8 @@ impl Display for EventType {
|
||||
EventType::RoomThirdPartyInvite => "m.room.third_party_invite",
|
||||
EventType::RoomTombstone => "m.room.tombstone",
|
||||
EventType::RoomTopic => "m.room.topic",
|
||||
EventType::RoomKey => "m.room_key",
|
||||
EventType::RoomKeyRequest => "m.room_key_request",
|
||||
EventType::Sticker => "m.sticker",
|
||||
EventType::Tag => "m.tag",
|
||||
EventType::Typing => "m.typing",
|
||||
@ -351,7 +399,15 @@ impl<'a> From<&'a str> for EventType {
|
||||
"m.call.hangup" => EventType::CallHangup,
|
||||
"m.call.invite" => EventType::CallInvite,
|
||||
"m.direct" => EventType::Direct,
|
||||
"m.dummy" => EventType::Dummy,
|
||||
"m.forwarded_room_key" => EventType::ForwardedRoomKey,
|
||||
"m.fully_read" => EventType::FullyRead,
|
||||
"m.key.verification.accept" => EventType::KeyVerificationAccept,
|
||||
"m.key.verification.cancel" => EventType::KeyVerificationCancel,
|
||||
"m.key.verification.key" => EventType::KeyVerificationKey,
|
||||
"m.key.verification.mac" => EventType::KeyVerificationMac,
|
||||
"m.key.verification.request" => EventType::KeyVerificationRequest,
|
||||
"m.key.verification.start" => EventType::KeyVerificationStart,
|
||||
"m.ignored_user_list" => EventType::IgnoredUserList,
|
||||
"m.presence" => EventType::Presence,
|
||||
"m.receipt" => EventType::Receipt,
|
||||
@ -359,6 +415,8 @@ impl<'a> From<&'a str> for EventType {
|
||||
"m.room.avatar" => EventType::RoomAvatar,
|
||||
"m.room.canonical_alias" => EventType::RoomCanonicalAlias,
|
||||
"m.room.create" => EventType::RoomCreate,
|
||||
"m.room.encrypted" => EventType::RoomEncrypted,
|
||||
"m.room.encryption" => EventType::RoomEncryption,
|
||||
"m.room.guest_access" => EventType::RoomGuestAccess,
|
||||
"m.room.history_visibility" => EventType::RoomHistoryVisibility,
|
||||
"m.room.join_rules" => EventType::RoomJoinRules,
|
||||
@ -373,6 +431,8 @@ impl<'a> From<&'a str> for EventType {
|
||||
"m.room.third_party_invite" => EventType::RoomThirdPartyInvite,
|
||||
"m.room.tombstone" => EventType::RoomTombstone,
|
||||
"m.room.topic" => EventType::RoomTopic,
|
||||
"m.room_key" => EventType::RoomKey,
|
||||
"m.room_key_request" => EventType::RoomKeyRequest,
|
||||
"m.sticker" => EventType::Sticker,
|
||||
"m.tag" => EventType::Tag,
|
||||
"m.typing" => EventType::Typing,
|
||||
|
Loading…
x
Reference in New Issue
Block a user