47 lines
1,014 B
Rust
47 lines
1,014 B
Rust
use std::net::SocketAddr;
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct User {
|
|
pub nickname: String,
|
|
pub username: String,
|
|
pub hostname: String,
|
|
pub realname: String,
|
|
pub address: SocketAddr,
|
|
nick_set: bool,
|
|
user_set: bool,
|
|
}
|
|
|
|
impl User {
|
|
pub fn new(addr: SocketAddr) -> User {
|
|
User {
|
|
nickname: String::new(),
|
|
username: String::new(),
|
|
hostname: String::new(),
|
|
realname: String::new(),
|
|
address: addr,
|
|
nick_set: false,
|
|
user_set: false,
|
|
}
|
|
}
|
|
|
|
pub fn set_nick(&mut self, nick: &str) {
|
|
self.nickname = nick.to_string();
|
|
self.nick_set = true;
|
|
}
|
|
|
|
pub fn set_user(&mut self, user: &str, host: &str, real: &str) {
|
|
self.username = user.to_string();
|
|
self.hostname = host.to_string();
|
|
self.realname = real.to_string();
|
|
self.user_set = true;
|
|
}
|
|
|
|
pub fn to_string(&self) -> String {
|
|
format!("{}!{}@{}", self.nickname, self.username, self.hostname)
|
|
}
|
|
|
|
pub fn is_registered(&self) -> bool {
|
|
self.nick_set && self.user_set
|
|
}
|
|
}
|