rsa_msg_packets/initialize/
name.rs1use anyhow::anyhow;
2use log::trace;
3
4use crate::{types::ByteMessage, util::modes::Modes};
5
6pub struct NameMsg {
7 pub name: String
8}
9
10impl ByteMessage for NameMsg {
11 fn serialize(&self) -> Vec<u8> {
12 return Modes::Name.get_send(&self.name.as_bytes().to_vec());
13 }
14
15 fn deserialize(data: &Vec<u8>) -> anyhow::Result<Self> {
16 let data = data.clone();
17 trace!("Parsing name...");
18
19 let name = String::from_utf8(data)?;
20
21 if name.len() > 20 || name.len() <= 3 {
22 trace!("Name is too long / too short {}", name.len());
23 return Err(anyhow!("Name packet is too short / too long."));
24 }
25
26 if name.to_lowercase() == "you" {
27 trace!("Name cannot be you ({})", name);
28 return Err(anyhow!("Name cannot be you"));
29 }
30
31 return Ok(NameMsg {
32 name
33 });
34 }
35}