From ac26770319ed7e1b4f649c8e1d245fd202d649be Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Tue, 18 Feb 2020 23:53:54 +0100 Subject: [PATCH] Add collection conversion functions --- src/collections/raw/all.rs | 116 +++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/src/collections/raw/all.rs b/src/collections/raw/all.rs index 857a42c0..2b4b7757 100644 --- a/src/collections/raw/all.rs +++ b/src/collections/raw/all.rs @@ -4,6 +4,7 @@ use serde::{de::Error as _, Deserialize, Deserializer}; use serde_json::Value; +use super::only; use crate::{ call::{ answer::raw::AnswerEvent, candidates::raw::CandidatesEvent, hangup::raw::HangupEvent, @@ -544,3 +545,118 @@ impl<'de> Deserialize<'de> for StateEvent { } } } + +impl From for Event { + fn from(event: only::Event) -> Self { + use only::Event::*; + + match event { + Direct(ev) => Event::Direct(ev), + Dummy(ev) => Event::Dummy(ev), + ForwardedRoomKey(ev) => Event::ForwardedRoomKey(ev), + FullyRead(ev) => Event::FullyRead(ev), + KeyVerificationAccept(ev) => Event::KeyVerificationAccept(ev), + KeyVerificationCancel(ev) => Event::KeyVerificationCancel(ev), + KeyVerificationKey(ev) => Event::KeyVerificationKey(ev), + KeyVerificationMac(ev) => Event::KeyVerificationMac(ev), + KeyVerificationRequest(ev) => Event::KeyVerificationRequest(ev), + KeyVerificationStart(ev) => Event::KeyVerificationStart(ev), + IgnoredUserList(ev) => Event::IgnoredUserList(ev), + Presence(ev) => Event::Presence(ev), + PushRules(ev) => Event::PushRules(ev), + RoomKey(ev) => Event::RoomKey(ev), + RoomKeyRequest(ev) => Event::RoomKeyRequest(ev), + Receipt(ev) => Event::Receipt(ev), + Tag(ev) => Event::Tag(ev), + Typing(ev) => Event::Typing(ev), + Custom(ev) => Event::Custom(ev), + } + } +} + +impl From for Event { + fn from(room_event: RoomEvent) -> Self { + use RoomEvent::*; + + match room_event { + CallAnswer(ev) => Event::CallAnswer(ev), + CallCandidates(ev) => Event::CallCandidates(ev), + CallHangup(ev) => Event::CallHangup(ev), + CallInvite(ev) => Event::CallInvite(ev), + RoomAliases(ev) => Event::RoomAliases(ev), + RoomAvatar(ev) => Event::RoomAvatar(ev), + RoomCanonicalAlias(ev) => Event::RoomCanonicalAlias(ev), + RoomCreate(ev) => Event::RoomCreate(ev), + RoomEncrypted(ev) => Event::RoomEncrypted(ev), + RoomEncryption(ev) => Event::RoomEncryption(ev), + RoomGuestAccess(ev) => Event::RoomGuestAccess(ev), + RoomHistoryVisibility(ev) => Event::RoomHistoryVisibility(ev), + RoomJoinRules(ev) => Event::RoomJoinRules(ev), + RoomMember(ev) => Event::RoomMember(ev), + RoomMessage(ev) => Event::RoomMessage(ev), + RoomMessageFeedback(ev) => Event::RoomMessageFeedback(ev), + RoomName(ev) => Event::RoomName(ev), + RoomPinnedEvents(ev) => Event::RoomPinnedEvents(ev), + RoomPowerLevels(ev) => Event::RoomPowerLevels(ev), + RoomRedaction(ev) => Event::RoomRedaction(ev), + RoomServerAcl(ev) => Event::RoomServerAcl(ev), + RoomThirdPartyInvite(ev) => Event::RoomThirdPartyInvite(ev), + RoomTombstone(ev) => Event::RoomTombstone(ev), + RoomTopic(ev) => Event::RoomTopic(ev), + Sticker(ev) => Event::Sticker(ev), + CustomRoom(ev) => Event::CustomRoom(ev), + CustomState(ev) => Event::CustomState(ev), + } + } +} + +impl From for RoomEvent { + fn from(room_event: only::RoomEvent) -> Self { + use only::RoomEvent::*; + + match room_event { + CallAnswer(ev) => RoomEvent::CallAnswer(ev), + CallCandidates(ev) => RoomEvent::CallCandidates(ev), + CallHangup(ev) => RoomEvent::CallHangup(ev), + CallInvite(ev) => RoomEvent::CallInvite(ev), + RoomEncrypted(ev) => RoomEvent::RoomEncrypted(ev), + RoomMessage(ev) => RoomEvent::RoomMessage(ev), + RoomMessageFeedback(ev) => RoomEvent::RoomMessageFeedback(ev), + RoomRedaction(ev) => RoomEvent::RoomRedaction(ev), + Sticker(ev) => RoomEvent::Sticker(ev), + CustomRoom(ev) => RoomEvent::CustomRoom(ev), + } + } +} + +impl From for RoomEvent { + fn from(state_event: StateEvent) -> Self { + use StateEvent::*; + + match state_event { + RoomAliases(ev) => RoomEvent::RoomAliases(ev), + RoomAvatar(ev) => RoomEvent::RoomAvatar(ev), + RoomCanonicalAlias(ev) => RoomEvent::RoomCanonicalAlias(ev), + RoomCreate(ev) => RoomEvent::RoomCreate(ev), + RoomEncryption(ev) => RoomEvent::RoomEncryption(ev), + RoomGuestAccess(ev) => RoomEvent::RoomGuestAccess(ev), + RoomHistoryVisibility(ev) => RoomEvent::RoomHistoryVisibility(ev), + RoomJoinRules(ev) => RoomEvent::RoomJoinRules(ev), + RoomMember(ev) => RoomEvent::RoomMember(ev), + RoomName(ev) => RoomEvent::RoomName(ev), + RoomPinnedEvents(ev) => RoomEvent::RoomPinnedEvents(ev), + RoomPowerLevels(ev) => RoomEvent::RoomPowerLevels(ev), + RoomServerAcl(ev) => RoomEvent::RoomServerAcl(ev), + RoomThirdPartyInvite(ev) => RoomEvent::RoomThirdPartyInvite(ev), + RoomTombstone(ev) => RoomEvent::RoomTombstone(ev), + RoomTopic(ev) => RoomEvent::RoomTopic(ev), + CustomState(ev) => RoomEvent::CustomState(ev), + } + } +} + +impl From for Event { + fn from(state_event: StateEvent) -> Self { + Event::from(RoomEvent::from(state_event)) + } +}