summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2011-02-27 22:45:32 (GMT)
committerKevin Smith <git@kismith.co.uk>2011-03-06 20:25:01 (GMT)
commit27d21b371f24272466a2d6a5bf2e2b717ee2d9fc (patch)
tree5f53281711d4f467933e4b3315241e4eee58a64c /Swiftob/Users.cpp
parentd9c9df3b4ae5432552417fc4db74d62ab34f066d (diff)
downloadswift-27d21b371f24272466a2d6a5bf2e2b717ee2d9fc.zip
swift-27d21b371f24272466a2d6a5bf2e2b717ee2d9fc.tar.bz2
A start on Swiftob, a Swiften-based chatbot.
Diffstat (limited to 'Swiftob/Users.cpp')
-rw-r--r--Swiftob/Users.cpp45
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;
+}
+