diff options
author | Kevin Smith <git@kismith.co.uk> | 2011-02-27 22:45:32 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2011-03-06 20:25:01 (GMT) |
commit | 27d21b371f24272466a2d6a5bf2e2b717ee2d9fc (patch) | |
tree | 5f53281711d4f467933e4b3315241e4eee58a64c /Swiftob/Users.cpp | |
parent | d9c9df3b4ae5432552417fc4db74d62ab34f066d (diff) | |
download | swift-contrib-27d21b371f24272466a2d6a5bf2e2b717ee2d9fc.zip swift-contrib-27d21b371f24272466a2d6a5bf2e2b717ee2d9fc.tar.bz2 |
A start on Swiftob, a Swiften-based chatbot.
Diffstat (limited to 'Swiftob/Users.cpp')
-rw-r--r-- | Swiftob/Users.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Swiftob/Users.cpp b/Swiftob/Users.cpp new file mode 100644 index 0000000..55ba4eb --- /dev/null +++ b/Swiftob/Users.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2011 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swiftob/Users.h" + +#include <iostream> + +#include <Swiften/Client/Client.h> + +#include "Swiftob/MUCs.h" + +Users::Users(Client* client, MUCs* mucs) { + client_ = client; + mucs_ = mucs; +} + +/* TODO: Store in roster */ +void Users::clearAll() { + users_.clear(); +} + +void Users::addUser(const User& user) { + users_.push_back(user); +} + +Users::User::Role Users::getRoleForSender(Message::ref message) { + JID jid = message->getFrom(); + MUC::ref muc = mucs_->getMUC(message->getFrom().toBare()); + if (muc && muc->hasOccupant(message->getFrom().getResource())) { + MUCOccupant occupant = muc->getOccupant(message->getFrom().getResource()); + if (occupant.getRealJID()) { + jid = occupant.getRealJID().get(); + } + } + foreach (User user, users_) { + if (user.getJID().equals(jid.toBare(), JID::WithoutResource)) { + return user.getRole(); + } + } + return User::Unknown; +} + |