diff --git a/includes/channel.hpp b/includes/channel.hpp index 05a6c86..2644283 100644 --- a/includes/channel.hpp +++ b/includes/channel.hpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/21 10:34:25 by maldavid #+# #+# */ -/* Updated: 2024/01/22 18:14:50 by maldavid ### ########.fr */ +/* Updated: 2024/01/22 20:05:52 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,6 +37,8 @@ namespace irc inline bool isInviteOnly() const { return _invite_only; } + void setTopic(unstd::SharedPtr client, const std::string& new_topic); + ~Channel(); private: @@ -44,7 +46,9 @@ namespace irc std::set > _operators; const std::string _name; std::string _password; + std::string _topic; bool _invite_only; + bool _topic_op_restrict; }; } diff --git a/srcs/channel.cpp b/srcs/channel.cpp index c21b743..2b59f9c 100644 --- a/srcs/channel.cpp +++ b/srcs/channel.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/21 10:36:21 by maldavid #+# #+# */ -/* Updated: 2024/01/22 14:29:55 by maldavid ### ########.fr */ +/* Updated: 2024/01/22 20:06:36 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,5 +19,14 @@ namespace irc } + void Channel::setTopic(unstd::SharedPtr client, const std::string& new_topic) + { + if(_topic_op_restrict && _operators.find(client) == _operators.end()) + { + // send error code to user + } + _topic = new_topic; + } + Channel::~Channel() {} } diff --git a/srcs/server_functions.cpp b/srcs/server_functions.cpp index 646217c..61ee00a 100644 --- a/srcs/server_functions.cpp +++ b/srcs/server_functions.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/22 17:31:06 by maldavid #+# #+# */ -/* Updated: 2024/01/22 19:56:18 by maldavid ### ########.fr */ +/* Updated: 2024/01/22 20:19:50 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -170,8 +170,15 @@ namespace irc void Server::handleTopic(unstd::SharedPtr client, const Message& msg) { - (void)client; - (void)msg; + if(msg.getTokens().size() == 1) + { + logs::report(log_error, "TOPIC, invalid command '%s'", msg.getRawMsg().c_str()); + return; + } + for(std::vector >::iterator it = _client.begin(); it != _client.end(); ++it) + { + + } } void Server::handlePing(unstd::SharedPtr client, const Message& msg)