use crate::error::ProtocolError; use crate::primitive::{Variant, VariantMap}; use crate::HandshakeSerialize; /// Login to the core with user data /// username and password are transmitted in plain text #[derive(Debug, Clone)] pub struct ClientLogin { pub user: String, pub password: String, } impl HandshakeSerialize for ClientLogin { fn serialize(&self) -> Result, ProtocolError> { let mut values: VariantMap = VariantMap::new(); values.insert("MsgType".to_string(), Variant::String("ClientLogin".to_string())); values.insert("User".to_string(), Variant::String(self.user.clone())); values.insert("Password".to_string(), Variant::String(self.password.clone())); return HandshakeSerialize::serialize(&values); } } impl From for ClientLogin { fn from(input: VariantMap) -> Self { ClientLogin { user: match_variant!(input.get("User").unwrap(), Variant::String), password: match_variant!(input.get("Password").unwrap(), Variant::String), } } }