From 2a11207a9dfc01c0076052d825f46dbe086644cc Mon Sep 17 00:00:00 2001 From: "Ragotzy.devin" Date: Sat, 21 Mar 2020 22:57:42 -0400 Subject: [PATCH] Add dummy event to to-device collection --- src/to_device.rs | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/to_device.rs b/src/to_device.rs index 1eb52c5a..1aeeb62f 100644 --- a/src/to_device.rs +++ b/src/to_device.rs @@ -9,6 +9,7 @@ use serde::{de::DeserializeOwned, Deserialize, Deserializer, Serialize}; use serde_json::Value; use crate::{ + dummy::DummyEventContent, forwarded_room_key::ForwardedRoomKeyEventContent, key::verification::{ accept::AcceptEventContent, cancel::CancelEventContent, key::KeyEventContent, @@ -26,7 +27,8 @@ use crate::{ #[derive(Clone, Debug, PartialEq, Serialize)] #[allow(clippy::large_enum_variant)] 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. RoomKey(ToDeviceRoomKey), /// To-device version of the *m.room.encrypted* event. @@ -58,6 +60,9 @@ pub struct ToDeviceEvent { pub content: C, } +/// To-device version of the *m.dummy* event. +pub type ToDeviceDummy = ToDeviceEvent; + /// To-device version of the *m.room_key* event. pub type ToDeviceRoomKey = ToDeviceEvent; @@ -97,6 +102,7 @@ impl TryFromRaw for AnyToDeviceEvent { use raw::AnyToDeviceEvent::*; match raw { + Dummy(c) => conv(AnyToDeviceEvent::Dummy, c), RoomKey(c) => conv(AnyToDeviceEvent::RoomKey, c), RoomEncrypted(c) => conv(AnyToDeviceEvent::RoomEncrypted, c), ForwardedRoomKey(c) => conv(AnyToDeviceEvent::ForwardedRoomKey, c), @@ -151,6 +157,7 @@ mod raw { use super::ToDeviceEvent; use crate::{ + dummy::DummyEventContent, forwarded_room_key::raw::ForwardedRoomKeyEventContent, key::verification::{ accept::raw::AcceptEventContent, cancel::raw::CancelEventContent, @@ -163,6 +170,8 @@ mod raw { util::get_field, }; + /// To-device version of the *m.dummy* event. + pub type ToDeviceDummy = ToDeviceEvent; /// To-device version of the *m.room_key* event. pub type ToDeviceRoomKey = ToDeviceEvent; /// To-device version of the *m.room.encrypted* event. @@ -188,6 +197,8 @@ mod raw { #[derive(Clone, Debug)] #[allow(clippy::large_enum_variant)] pub enum AnyToDeviceEvent { + /// To-device version of the "m.dummy" event. + Dummy(ToDeviceDummy), /// To-device version of the *m.room_key* event. RoomKey(ToDeviceRoomKey), /// To-device version of the *m.room.encrypted* event. @@ -224,6 +235,7 @@ mod raw { let event_type = get_field(&value, "type")?; match event_type { + Dummy => from_value(value, AnyToDeviceEvent::Dummy), RoomKey => from_value(value, AnyToDeviceEvent::RoomKey), RoomEncrypted => from_value(value, AnyToDeviceEvent::RoomEncrypted), ForwardedRoomKey => from_value(value, AnyToDeviceEvent::ForwardedRoomKey), @@ -258,7 +270,7 @@ mod tests { }, room::encrypted::EncryptedEventContent, room_key_request::Action, - Algorithm, EventResult, + Algorithm, Empty, EventResult, }; 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] fn room_key() { let room_key = r#"{