diff --git a/includes/server.hpp b/includes/server.hpp index 1585d99..0c0802c 100644 --- a/includes/server.hpp +++ b/includes/server.hpp @@ -6,7 +6,7 @@ /* By: vvaas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/21 09:12:28 by maldavid #+# #+# */ -/* Updated: 2024/01/24 15:14:05 by maldavid ### ########.fr */ +/* Updated: 2024/01/24 19:57:00 by maldavid ### ########.fr */ /* */ /******************************************************************************/ @@ -54,6 +54,7 @@ namespace irc void handleQuit(unstd::SharedPtr client, const class Message& msg); void handlePart(unstd::SharedPtr client, const class Message& msg); void handleJoin(unstd::SharedPtr client, const class Message& msg); + void handleInvite(unstd::SharedPtr client, const class Message& msg); void handlePrivMsg(unstd::SharedPtr client, const class Message& msg); void handleNotice(unstd::SharedPtr client, const class Message& msg); void handleKick(unstd::SharedPtr client, const class Message& msg); diff --git a/srcs/server.cpp b/srcs/server.cpp index f728f1b..c89bff9 100644 --- a/srcs/server.cpp +++ b/srcs/server.cpp @@ -6,7 +6,7 @@ /* By: vvaas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/21 09:31:17 by maldavid #+# #+# */ -/* Updated: 2024/01/24 19:06:59 by vvaas ### ########.fr */ +/* Updated: 2024/01/24 19:56:43 by maldavid ### ########.fr */ /* */ /******************************************************************************/ @@ -141,6 +141,8 @@ namespace irc handlePart(client, msg); else if(msg.getCmd() == "JOIN") handleJoin(client, msg); + else if(msg.getCmd() == "INVITE") + handlePrivMsg(client, msg); else if(msg.getCmd() == "PRIVMSG") handlePrivMsg(client, msg); else if(msg.getCmd() == "NOTICE") diff --git a/srcs/server_functions.cpp b/srcs/server_functions.cpp index e1e7037..f990435 100644 --- a/srcs/server_functions.cpp +++ b/srcs/server_functions.cpp @@ -6,7 +6,7 @@ /* By: vvaas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/22 17:31:06 by maldavid #+# #+# */ -/* Updated: 2024/01/24 21:28:29 by vvaas ### ########.fr */ +/* Updated: 2024/01/24 21:57:04 by vvaas ### ########.fr */ /* */ /******************************************************************************/ @@ -182,7 +182,6 @@ namespace irc client->sendCode(ERR_NOTEXTTOSEND, "No text to send\n"); return; } - channel_it it; if (msg.getTokens()[1][0] != '&' && msg.getTokens()[1][0] != '#') { for (client_it itc = _client.begin(); itc != _client.end(); ++itc) @@ -205,7 +204,7 @@ namespace irc } return ; } - for(it = _channels.begin(); it != _channels.end(); ++it) + for(channel_it it = _channels.begin(); it != _channels.end(); ++it) { if(msg.getTokens()[1] == it->getName()) { @@ -232,8 +231,29 @@ namespace irc logs::report(log_error, "NOTICE, invalid command '%s'", msg.getRawMsg().c_str()); return; } - channel_it it; - for(it = _channels.begin(); it != _channels.end(); ++it) + if (msg.getTokens()[1][0] != '&' && msg.getTokens()[1][0] != '#') + { + for (client_it itc = _client.begin(); itc != _client.end(); ++itc) + { + if ((*itc)->getNickName() == msg.getTokens()[1] && (*itc)->getNickName() != client->getNickName()) + { + std::string complete_msg; + if(msg.getTokens().size() > 2) + { + for(std::vector::const_iterator tit = msg.getTokens().begin() + 2; tit < msg.getTokens().end(); ++tit) + { + complete_msg.append(*tit); + complete_msg.append(" "); + } + complete_msg.erase(complete_msg.begin()); + } + (*itc)->sendMsg(client->getNickName(), "NOTICE " + (*itc)->getNickName(), complete_msg); + break; + } + } + return ; + } + for(channel_it it = _channels.begin(); it != _channels.end(); ++it) { if(msg.getTokens()[1] == it->getName()) { @@ -253,6 +273,12 @@ namespace irc } } + void Server::handleInvite(unstd::SharedPtr client, const Message& msg) + { + (void)client; + (void)msg; + } + void Server::handleKick(unstd::SharedPtr client, const Message& msg) { (void)client;