From 5039f1da042d6bb56452e27ea7a83738ab019550 Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Sun, 8 Jan 2023 11:27:53 +0000 Subject: [PATCH] Set nick and version correctly in preamble --- src/server.rs | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/server.rs b/src/server.rs index 699bc0b..b2a0208 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1,12 +1,13 @@ pub mod response; -use std::collections::HashMap; +use std::{borrow::Cow, collections::HashMap}; use actix::{ Actor, Addr, AsyncContext, Context, Handler, MessageResult, ResponseFuture, Supervised, Supervisor, }; use actix_rt::Arbiter; +use clap::crate_version; use futures::{stream::FuturesOrdered, TryFutureExt}; use irc_proto::{Command, Message, Prefix, Response}; use rand::seq::SliceRandom; @@ -60,37 +61,41 @@ impl Handler for Server { #[instrument(parent = &msg.span, skip_all)] fn handle(&mut self, msg: UserConnected, _ctx: &mut Self::Context) -> Self::Result { + let nick = msg.connection.to_nick(); + // send a welcome to the user let responses = [ ( Response::RPL_WELCOME, - vec!["Welcome to the network jordan!jordan@proper.sick.kid"], + vec![Cow::Owned(format!("Welcome to the network {nick}",))], + ), + ( + Response::RPL_YOURHOST, + vec!["Your host is a sick kid".into()], ), - (Response::RPL_YOURHOST, vec!["Your host is a sick kid"]), ( Response::RPL_CREATED, - vec!["This server was created at some point"], + vec!["This server was created at some point".into()], ), ( Response::RPL_MYINFO, vec![ - SERVER_NAME, - "0.0.1", - "DOQRSZaghilopsuwz", - "CFILMPQSbcefgijklmnopqrstuvz", - "bkloveqjfI", + SERVER_NAME.into(), + crate_version!().into(), + "DOQRSZaghilopsuwz".into(), + "CFILMPQSbcefgijklmnopqrstuvz".into(), + "bkloveqjfI".into(), ], ), ( Response::RPL_ISUPPORT, - vec!["D", "are supported by this server"], + vec!["D".into(), "are supported by this server".into()], ), ]; for (response, arguments) in responses { - // fixme: bad perf here with inserting at the front of a vec let arguments = std::iter::once(msg.connection.nick.clone()) - .chain(arguments.into_iter().map(ToString::to_string)) + .chain(arguments.into_iter().map(Cow::into_owned)) .collect(); msg.handle.do_send(Broadcast { -- libgit2 1.7.2