Add collection conversion functions

This commit is contained in:
Jonas Platte 2020-02-18 23:53:54 +01:00
parent 3a6d6140a3
commit ac26770319
No known key found for this signature in database
GPG Key ID: 7D261D771D915378

View File

@ -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<only::Event> 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<RoomEvent> 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<only::RoomEvent> 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<StateEvent> 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<StateEvent> for Event {
fn from(state_event: StateEvent) -> Self {
Event::from(RoomEvent::from(state_event))
}
}