diff options
Diffstat (limited to 'src/message/signalproxy/objects/network.rs')
| -rw-r--r-- | src/message/signalproxy/objects/network.rs | 396 |
1 files changed, 198 insertions, 198 deletions
diff --git a/src/message/signalproxy/objects/network.rs b/src/message/signalproxy/objects/network.rs index cb1edd2..4075499 100644 --- a/src/message/signalproxy/objects/network.rs +++ b/src/message/signalproxy/objects/network.rs @@ -28,221 +28,221 @@ pub struct Network { network_info: NetworkInfo, } -// impl crate::message::signalproxy::Network for Network { -// type Item = VariantList; +impl crate::message::signalproxy::Network for Network { + type Item = VariantList; -// fn to_network(&self) -> Self::Item { -// let mut res = Self::Item::new(); + fn to_network(&self) -> Self::Item { + let mut res = Self::Item::new(); -// res.push(Variant::ByteArray(s!("myNick"))); -// res.push(Variant::String(self.my_nick.clone())); -// res.push(Variant::ByteArray(s!("latency"))); -// res.push(Variant::i32(self.latency)); -// res.push(Variant::ByteArray(s!("currentServer"))); -// res.push(Variant::String(self.current_server.clone())); -// res.push(Variant::ByteArray(s!("isConnected"))); -// res.push(Variant::bool(self.is_connected)); -// res.push(Variant::ByteArray(s!("connectionState"))); -// res.push(Variant::i32(self.connection_state.clone() as i32)); + res.push(Variant::ByteArray(s!("myNick"))); + res.push(Variant::String(self.my_nick.clone())); + res.push(Variant::ByteArray(s!("latency"))); + res.push(Variant::i32(self.latency)); + res.push(Variant::ByteArray(s!("currentServer"))); + res.push(Variant::String(self.current_server.clone())); + res.push(Variant::ByteArray(s!("isConnected"))); + res.push(Variant::bool(self.is_connected)); + res.push(Variant::ByteArray(s!("connectionState"))); + res.push(Variant::i32(self.connection_state.clone() as i32)); -// res.push(Variant::ByteArray(s!("Supports"))); -// res.push(Variant::VariantMap( -// self.supports -// .iter() -// .map(|(k, v)| (k.clone(), Variant::String(v.clone()))) -// .collect(), -// )); + res.push(Variant::ByteArray(s!("Supports"))); + res.push(Variant::VariantMap( + self.supports + .iter() + .map(|(k, v)| (k.clone(), Variant::String(v.clone()))) + .collect(), + )); -// res.push(Variant::ByteArray(s!("Caps"))); -// res.push(Variant::VariantMap( -// self.caps -// .iter() -// .map(|(k, v)| (k.clone(), Variant::String(v.clone()))) -// .collect(), -// )); + res.push(Variant::ByteArray(s!("Caps"))); + res.push(Variant::VariantMap( + self.caps + .iter() + .map(|(k, v)| (k.clone(), Variant::String(v.clone()))) + .collect(), + )); -// res.push(Variant::ByteArray(s!("CapsEnabled"))); -// res.push(Variant::VariantList( -// self.caps_enabled -// .iter() -// .map(|v| Variant::String(v.clone())) -// .collect(), -// )); + res.push(Variant::ByteArray(s!("CapsEnabled"))); + res.push(Variant::VariantList( + self.caps_enabled + .iter() + .map(|v| Variant::String(v.clone())) + .collect(), + )); -// { -// let mut map = VariantMap::new(); + { + let mut map = VariantMap::new(); -// map.insert( -// s!("Users"), -// Variant::VariantMap(self.irc_users.iter().fold( -// HashMap::new(), -// |mut res, (_, v)| { -// res.extend(v.to_network()); + map.insert( + s!("Users"), + Variant::VariantMap(self.irc_users.iter().fold( + HashMap::new(), + |mut res, (_, v)| { + res.extend(v.to_network()); -// res -// }, -// )), -// ); + res + }, + )), + ); -// let channels = self -// .irc_channels -// .iter() -// .fold(HashMap::new(), |mut res, (_, v)| { -// res.extend(v.to_network()); + let channels = self + .irc_channels + .iter() + .fold(HashMap::new(), |mut res, (_, v)| { + res.extend(v.to_network()); -// res -// }); + res + }); -// map.insert(s!("Channels"), Variant::VariantMap(channels)); + map.insert(s!("Channels"), Variant::VariantMap(channels)); -// res.push(Variant::ByteArray(s!("IrcUsersAndChannels"))); -// res.push(Variant::VariantMap(map)); -// } + res.push(Variant::ByteArray(s!("IrcUsersAndChannels"))); + res.push(Variant::VariantMap(map)); + } -// res.extend(self.network_info.to_network()); + res.extend(self.network_info.to_network()); -// res -// } + res + } -// fn from_network(input: Self::Item) -> Self { -// let users_and_channels = match_variant!( -// input -// .iter() -// .nth( -// input -// .iter() -// .position(|x| *x == Variant::ByteArray(s!("IrcUsersAndChannels"))) -// .unwrap() -// ) -// .unwrap(), -// Variant::VariantMap -// ); + fn from_network(input: &mut Self::Item) -> Self { + let users_and_channels = match_variant!( + input + .iter() + .nth( + input + .iter() + .position(|x| *x == Variant::ByteArray(s!("IrcUsersAndChannels"))) + .unwrap() + ) + .unwrap(), + Variant::VariantMap + ); -// let res = Self { -// my_nick: match_variant!( -// input -// .iter() -// .nth( -// input -// .iter() -// .position(|x| *x == Variant::ByteArray(s!("myNick"))) -// .unwrap() -// ) -// .unwrap(), -// Variant::String -// ), -// latency: match_variant!( -// input -// .iter() -// .nth( -// input -// .iter() -// .position(|x| *x == Variant::ByteArray(s!("latency"))) -// .unwrap() -// ) -// .unwrap(), -// Variant::i32 -// ), -// current_server: match_variant!( -// input -// .iter() -// .nth( -// input -// .iter() -// .position(|x| *x == Variant::ByteArray(s!("currentServer"))) -// .unwrap() -// ) -// .unwrap(), -// Variant::String -// ), -// is_connected: match_variant!( -// input -// .iter() -// .nth( -// input -// .iter() -// .position(|x| *x == Variant::ByteArray(s!("isConnected"))) -// .unwrap() -// ) -// .unwrap(), -// Variant::bool -// ), -// connection_state: ConnectionState::from_i32(match_variant!( -// input -// .iter() -// .nth( -// input -// .iter() -// .position(|x| *x == Variant::ByteArray(s!("connectionState"))) -// .unwrap() -// ) -// .unwrap(), -// Variant::i32 -// )) -// .unwrap(), -// irc_users: match_variant!( -// users_and_channels.get("Users").unwrap(), -// Variant::VariantMap -// ) -// .iter() -// .map(|(k, v)| (k, IrcUser::from_network(v))), -// irc_channels: match_variant!( -// users_and_channels.get("Channels").unwrap(), -// Variant::VariantMap -// ) -// .iter() -// .map(|(k, v)| (k, match_variant!(v, Variant::VariantList))), -// supports: match_variant!( -// input -// .iter() -// .nth( -// input -// .iter() -// .position(|x| *x == Variant::ByteArray(s!("Supports"))) -// .unwrap() -// ) -// .unwrap(), -// Variant::VariantMap -// ) -// .iter() -// .map(|(k, v)| (k.clone(), match_variant!(v, Variant::String))) -// .collect(), -// caps: match_variant!( -// input -// .iter() -// .nth( -// input -// .iter() -// .position(|x| *x == Variant::ByteArray(s!("Caps"))) -// .unwrap() -// ) -// .unwrap(), -// Variant::VariantMap -// ) -// .iter() -// .map(|(k, v)| (k.clone(), match_variant!(v, Variant::String))) -// .collect(), -// caps_enabled: match_variant!( -// input -// .iter() -// .nth( -// input -// .iter() -// .position(|x| *x == Variant::ByteArray(s!("CapsEnabled"))) -// .unwrap() -// ) -// .unwrap(), -// Variant::VariantList -// ) -// .iter() -// .map(|v| match_variant!(v, Variant::String)) -// .collect(), -// network_info: NetworkInfo::from_network(input), -// }; + let res = Self { + my_nick: match_variant!( + input + .iter() + .nth( + input + .iter() + .position(|x| *x == Variant::ByteArray(s!("myNick"))) + .unwrap() + ) + .unwrap(), + Variant::String + ), + latency: match_variant!( + input + .iter() + .nth( + input + .iter() + .position(|x| *x == Variant::ByteArray(s!("latency"))) + .unwrap() + ) + .unwrap(), + Variant::i32 + ), + current_server: match_variant!( + input + .iter() + .nth( + input + .iter() + .position(|x| *x == Variant::ByteArray(s!("currentServer"))) + .unwrap() + ) + .unwrap(), + Variant::String + ), + is_connected: match_variant!( + input + .iter() + .nth( + input + .iter() + .position(|x| *x == Variant::ByteArray(s!("isConnected"))) + .unwrap() + ) + .unwrap(), + Variant::bool + ), + connection_state: ConnectionState::from_i32(match_variant!( + input + .iter() + .nth( + input + .iter() + .position(|x| *x == Variant::ByteArray(s!("connectionState"))) + .unwrap() + ) + .unwrap(), + Variant::i32 + )) + .unwrap(), + irc_users: match_variant!( + users_and_channels.get("Users").unwrap(), + Variant::VariantMap + ) + .iter() + .map(|(k, v)| (k, IrcUser::from_network(v))), + irc_channels: match_variant!( + users_and_channels.get("Channels").unwrap(), + Variant::VariantMap + ) + .iter() + .map(|(k, v)| (k, match_variant!(v, Variant::VariantList))), + supports: match_variant!( + input + .iter() + .nth( + input + .iter() + .position(|x| *x == Variant::ByteArray(s!("Supports"))) + .unwrap() + ) + .unwrap(), + Variant::VariantMap + ) + .iter() + .map(|(k, v)| (k.clone(), match_variant!(v, Variant::String))) + .collect(), + caps: match_variant!( + input + .iter() + .nth( + input + .iter() + .position(|x| *x == Variant::ByteArray(s!("Caps"))) + .unwrap() + ) + .unwrap(), + Variant::VariantMap + ) + .iter() + .map(|(k, v)| (k.clone(), match_variant!(v, Variant::String))) + .collect(), + caps_enabled: match_variant!( + input + .iter() + .nth( + input + .iter() + .position(|x| *x == Variant::ByteArray(s!("CapsEnabled"))) + .unwrap() + ) + .unwrap(), + Variant::VariantList + ) + .iter() + .map(|v| match_variant!(v, Variant::String)) + .collect(), + network_info: NetworkInfo::from_network(input), + }; -// todo!() -// } -// } + todo!() + } +} #[allow(dead_code)] #[derive(Debug, Clone, PartialEq, Network)] |
