diff --git a/spectrum/src/frontends/slack/SlackUserManager.cpp b/spectrum/src/frontends/slack/SlackUserManager.cpp index 414668a926baf18e698499fba24947ff6bf45047..83106edbcd314315267e31a0b457315a881169f9 100644 --- a/spectrum/src/frontends/slack/SlackUserManager.cpp +++ b/spectrum/src/frontends/slack/SlackUserManager.cpp @@ -29,6 +29,8 @@ #include "transport/StorageBackend.h" #include "transport/Logging.h" +#include + namespace Transport { DEFINE_LOGGER(logger, "SlackUserManager"); @@ -102,5 +104,52 @@ void SlackUserManager::handleUserCreated(User *user) { static_cast(user)->getSession()->handleConnected(); } +bool SlackUserManager::handleAdminMessage(Swift::Message::ref message) { + if (message->getBody().find("get_user_configuration") == 0) { +// std::string body = message->getBody(); +// std::vector args; +// boost::split(args, body, boost::is_any_of(" ")); +// if (args.size() == 2) { +// UserInfo uinfo; +// if (!m_storageBackend->getUser(args[1], uinfo)) { +// message->setBody("Error: Unknown user"); +// return true; +// } +// +// std::string rooms = ""; +// int type = (int) TYPE_STRING; +// m_storageBackend->getUserSetting(uinfo.id, "rooms", type, rooms); +// +// m_storageBackend->getUserSetting(uinfo.id, "slack_channel", type, m_slackChannel); +// } + } + else if (message->getBody().find("join_room ") == 0) { + std::string body = message->getBody(); + std::vector args; + boost::split(args, body, boost::is_any_of(" ")); + if (args.size() == 6) { + UserInfo uinfo; + if (!m_storageBackend->getUser(args[1], uinfo)) { + message->setBody("Error: Unknown user"); + return true; + } + + std::string rooms = ""; + int type = (int) TYPE_STRING; + m_storageBackend->getUserSetting(uinfo.id, "rooms", type, rooms); + rooms += message->getBody() + "\n"; + m_storageBackend->updateUserSetting(uinfo.id, "rooms", rooms); + + SlackUser *user = static_cast(getUser(args[1])); + if (user) { + user->getSession()->handleJoinMessage("", args, true); + } + message->setBody("Joined the room"); + return true; + } + } + return false; +} + }