diff options
| author | Max Audron <audron@cocaine.farm> | 2021-10-01 18:13:43 +0200 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2021-10-01 18:17:03 +0200 |
| commit | 8465010f3cb51d672b60df39a7dfd34624ab5c7c (patch) | |
| tree | 062d8640f7e7c4aea2a2e4029ea742982ba20911 /src/message/signalproxy/objects/network.rs | |
| parent | adapt Sync* types (diff) | |
migrate to separated NetworkMap and NetworkList macros
Diffstat (limited to '')
| -rw-r--r-- | src/message/signalproxy/objects/network.rs | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/src/message/signalproxy/objects/network.rs b/src/message/signalproxy/objects/network.rs index cecc412..2fa4c49 100644 --- a/src/message/signalproxy/objects/network.rs +++ b/src/message/signalproxy/objects/network.rs @@ -1,14 +1,14 @@ -use std::convert::TryInto; - -use crate::primitive::{Variant, VariantList, VariantMap}; - -use libquassel_derive::Network; - use std::collections::HashMap; +use std::convert::TryInto; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::FromPrimitive; +use libquassel_derive::{NetworkList, NetworkMap}; + +use crate::message::signalproxy::translation::NetworkMap; +use crate::primitive::{Variant, VariantList, VariantMap}; + use super::{ircchannel::IrcChannel, ircuser::IrcUser, networkinfo::NetworkInfo}; #[derive(Debug, Clone, PartialEq)] @@ -29,11 +29,9 @@ pub struct Network { network_info: NetworkInfo, } -impl crate::message::signalproxy::Network for Network { - type Item = VariantList; - - fn to_network(&self) -> Self::Item { - let mut res = Self::Item::new(); +impl crate::message::signalproxy::NetworkList for Network { + fn to_network_list(&self) -> VariantList { + let mut res = VariantList::new(); res.push(Variant::ByteArray(s!("myNick"))); res.push(Variant::String(self.my_nick.clone())); @@ -78,7 +76,7 @@ impl crate::message::signalproxy::Network for Network { Variant::VariantMap(self.irc_users.iter().fold( HashMap::new(), |mut res, (_, v)| { - res.extend(v.to_network()); + res.extend(v.to_network_map()); res }, @@ -89,7 +87,7 @@ impl crate::message::signalproxy::Network for Network { .irc_channels .iter() .fold(HashMap::new(), |mut res, (_, v)| { - res.extend(v.to_network()); + res.extend(v.to_network_map()); res }); @@ -100,12 +98,12 @@ impl crate::message::signalproxy::Network for Network { res.push(Variant::VariantMap(map)); } - res.extend(self.network_info.to_network()); + res.extend(self.network_info.to_network_list()); res } - fn from_network(input: &mut Self::Item) -> Self { + fn from_network_list(input: &mut VariantList) -> Self { let mut i = input.iter().cycle(); let users_and_channels: VariantMap = { @@ -152,7 +150,7 @@ impl crate::message::signalproxy::Network for Network { irc_users: { match users_and_channels.get("Users") { Some(users) => { - let users: Vec<IrcUser> = Vec::<IrcUser>::from_network( + let users: Vec<IrcUser> = Vec::<IrcUser>::from_network_map( &mut users.try_into().expect("failed to convert Users"), ); @@ -168,7 +166,7 @@ impl crate::message::signalproxy::Network for Network { match users_and_channels.get("Channels") { Some(channels) => { let channels: Vec<IrcChannel> = - Vec::<IrcChannel>::from_network(&mut channels.try_into().unwrap()); + Vec::<IrcChannel>::from_network_map(&mut channels.try_into().unwrap()); channels .into_iter() .map(|channel| (channel.name.clone(), channel)) @@ -205,13 +203,12 @@ impl crate::message::signalproxy::Network for Network { var.into_iter().map(|v| v.try_into().unwrap()).collect() }, - network_info: NetworkInfo::from_network(input), + network_info: NetworkInfo::from_network_list(input), } } } -#[derive(Debug, Clone, PartialEq, Network)] -#[network(repr = "map")] +#[derive(Debug, Clone, PartialEq, NetworkMap)] pub struct NetworkServer { #[network(rename = "Host")] pub host: String, @@ -239,8 +236,7 @@ pub struct NetworkServer { pub proxy_pass: String, } -#[derive(Debug, Clone, PartialEq, Network)] -#[network(repr = "list")] +#[derive(Debug, Clone, PartialEq, NetworkList)] pub struct NetworkConfig { #[network(rename = "pingTimeoutEnabled")] ping_timeout_enabled: bool, @@ -263,7 +259,6 @@ pub struct NetworkConfig { #[cfg(test)] mod tests { use super::*; - use crate::message::signalproxy::translation::Network; fn networkserver_get_network() -> VariantMap { map! { @@ -325,7 +320,7 @@ mod tests { #[test] fn network_server_to_network() { assert_eq!( - networkserver_get_runtime().to_network(), + networkserver_get_runtime().to_network_map(), networkserver_get_network() ) } |
