Add dummy event to to-device collection

This commit is contained in:
Ragotzy.devin 2020-03-21 22:57:42 -04:00 committed by GitHub
parent 0c6dd0ba32
commit 2a11207a9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9,6 +9,7 @@ use serde::{de::DeserializeOwned, Deserialize, Deserializer, Serialize};
use serde_json::Value; use serde_json::Value;
use crate::{ use crate::{
dummy::DummyEventContent,
forwarded_room_key::ForwardedRoomKeyEventContent, forwarded_room_key::ForwardedRoomKeyEventContent,
key::verification::{ key::verification::{
accept::AcceptEventContent, cancel::CancelEventContent, key::KeyEventContent, accept::AcceptEventContent, cancel::CancelEventContent, key::KeyEventContent,
@ -26,7 +27,8 @@ use crate::{
#[derive(Clone, Debug, PartialEq, Serialize)] #[derive(Clone, Debug, PartialEq, Serialize)]
#[allow(clippy::large_enum_variant)] #[allow(clippy::large_enum_variant)]
pub enum AnyToDeviceEvent { pub enum AnyToDeviceEvent {
// TODO this should include a *m.dummy" event. /// To-device version of the "m.dummy" event.
Dummy(ToDeviceDummy),
/// To-device version of the *m.room_key* event. /// To-device version of the *m.room_key* event.
RoomKey(ToDeviceRoomKey), RoomKey(ToDeviceRoomKey),
/// To-device version of the *m.room.encrypted* event. /// To-device version of the *m.room.encrypted* event.
@ -58,6 +60,9 @@ pub struct ToDeviceEvent<C> {
pub content: C, pub content: C,
} }
/// To-device version of the *m.dummy* event.
pub type ToDeviceDummy = ToDeviceEvent<DummyEventContent>;
/// To-device version of the *m.room_key* event. /// To-device version of the *m.room_key* event.
pub type ToDeviceRoomKey = ToDeviceEvent<RoomKeyEventContent>; pub type ToDeviceRoomKey = ToDeviceEvent<RoomKeyEventContent>;
@ -97,6 +102,7 @@ impl TryFromRaw for AnyToDeviceEvent {
use raw::AnyToDeviceEvent::*; use raw::AnyToDeviceEvent::*;
match raw { match raw {
Dummy(c) => conv(AnyToDeviceEvent::Dummy, c),
RoomKey(c) => conv(AnyToDeviceEvent::RoomKey, c), RoomKey(c) => conv(AnyToDeviceEvent::RoomKey, c),
RoomEncrypted(c) => conv(AnyToDeviceEvent::RoomEncrypted, c), RoomEncrypted(c) => conv(AnyToDeviceEvent::RoomEncrypted, c),
ForwardedRoomKey(c) => conv(AnyToDeviceEvent::ForwardedRoomKey, c), ForwardedRoomKey(c) => conv(AnyToDeviceEvent::ForwardedRoomKey, c),
@ -151,6 +157,7 @@ mod raw {
use super::ToDeviceEvent; use super::ToDeviceEvent;
use crate::{ use crate::{
dummy::DummyEventContent,
forwarded_room_key::raw::ForwardedRoomKeyEventContent, forwarded_room_key::raw::ForwardedRoomKeyEventContent,
key::verification::{ key::verification::{
accept::raw::AcceptEventContent, cancel::raw::CancelEventContent, accept::raw::AcceptEventContent, cancel::raw::CancelEventContent,
@ -163,6 +170,8 @@ mod raw {
util::get_field, util::get_field,
}; };
/// To-device version of the *m.dummy* event.
pub type ToDeviceDummy = ToDeviceEvent<DummyEventContent>;
/// To-device version of the *m.room_key* event. /// To-device version of the *m.room_key* event.
pub type ToDeviceRoomKey = ToDeviceEvent<RoomKeyEventContent>; pub type ToDeviceRoomKey = ToDeviceEvent<RoomKeyEventContent>;
/// To-device version of the *m.room.encrypted* event. /// To-device version of the *m.room.encrypted* event.
@ -188,6 +197,8 @@ mod raw {
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
#[allow(clippy::large_enum_variant)] #[allow(clippy::large_enum_variant)]
pub enum AnyToDeviceEvent { pub enum AnyToDeviceEvent {
/// To-device version of the "m.dummy" event.
Dummy(ToDeviceDummy),
/// To-device version of the *m.room_key* event. /// To-device version of the *m.room_key* event.
RoomKey(ToDeviceRoomKey), RoomKey(ToDeviceRoomKey),
/// To-device version of the *m.room.encrypted* event. /// To-device version of the *m.room.encrypted* event.
@ -224,6 +235,7 @@ mod raw {
let event_type = get_field(&value, "type")?; let event_type = get_field(&value, "type")?;
match event_type { match event_type {
Dummy => from_value(value, AnyToDeviceEvent::Dummy),
RoomKey => from_value(value, AnyToDeviceEvent::RoomKey), RoomKey => from_value(value, AnyToDeviceEvent::RoomKey),
RoomEncrypted => from_value(value, AnyToDeviceEvent::RoomEncrypted), RoomEncrypted => from_value(value, AnyToDeviceEvent::RoomEncrypted),
ForwardedRoomKey => from_value(value, AnyToDeviceEvent::ForwardedRoomKey), ForwardedRoomKey => from_value(value, AnyToDeviceEvent::ForwardedRoomKey),
@ -258,7 +270,7 @@ mod tests {
}, },
room::encrypted::EncryptedEventContent, room::encrypted::EncryptedEventContent,
room_key_request::Action, room_key_request::Action,
Algorithm, EventResult, Algorithm, Empty, EventResult,
}; };
macro_rules! deserialize { macro_rules! deserialize {
@ -289,6 +301,19 @@ mod tests {
}}; }};
} }
#[test]
fn dummy() {
let dummy = r#"{
"content": {},
"sender": "@alice:example.org",
"type": "m.dummy"
}"#;
let event = deserialize! {dummy, AnyToDeviceEvent::Dummy};
assert_eq!(event.content, Empty);
}
#[test] #[test]
fn room_key() { fn room_key() {
let room_key = r#"{ let room_key = r#"{