aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/QXmppPubSubManager.cpp40
-rw-r--r--src/client/QXmppPubSubManager.h2
2 files changed, 42 insertions, 0 deletions
diff --git a/src/client/QXmppPubSubManager.cpp b/src/client/QXmppPubSubManager.cpp
index aba9f72f..66c2d345 100644
--- a/src/client/QXmppPubSubManager.cpp
+++ b/src/client/QXmppPubSubManager.cpp
@@ -643,6 +643,46 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::cancelNodeConfiguration(
}
///
+/// Subscribes to a node.
+///
+/// \warning THIS API IS NOT FINALIZED YET!
+///
+/// \param serviceJid JID of the pubsub service
+/// \param nodeName name of the pubsub node being subscribed
+/// \param subscriberJid bare or full JID of the subscriber
+///
+QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid)
+{
+ QXmppPubSubIq request;
+ request.setType(QXmppIq::Set);
+ request.setTo(serviceJid);
+ request.setQueryNode(nodeName);
+ request.setQueryType(QXmppPubSubIq<>::Subscribe);
+ request.setQueryJid(subscriberJid);
+ return client()->sendGenericIq(std::move(request));
+}
+
+///
+/// Unsubscribes from a node.
+///
+/// \warning THIS API IS NOT FINALIZED YET!
+///
+/// \param serviceJid JID of the pubsub service
+/// \param nodeName name of the pubsub node being subscribed
+/// \param subscriberJid bare or full JID of the subscriber
+///
+QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid)
+{
+ QXmppPubSubIq request;
+ request.setType(QXmppIq::Set);
+ request.setTo(serviceJid);
+ request.setQueryNode(nodeName);
+ request.setQueryType(QXmppPubSubIq<>::Unsubscribe);
+ request.setQueryJid(subscriberJid);
+ return client()->sendGenericIq(std::move(request));
+}
+
+///
/// \fn QFuture<Result> QXmppPubSubManager::createPepNode(const QString &nodeName)
///
/// Creates an empty PEP node with the default configuration.
diff --git a/src/client/QXmppPubSubManager.h b/src/client/QXmppPubSubManager.h
index a78774bd..f5116be4 100644
--- a/src/client/QXmppPubSubManager.h
+++ b/src/client/QXmppPubSubManager.h
@@ -96,6 +96,8 @@ public:
QFuture<NodeConfigResult> requestNodeConfiguration(const QString &service, const QString &nodeName);
QFuture<Result> configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config);
QFuture<Result> cancelNodeConfiguration(const QString &service, const QString &nodeName);
+ QFuture<Result> subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid);
+ QFuture<Result> unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid);
// PEP-specific (the PubSub service is the current account)
inline QFuture<Result> createPepNode(const QString &nodeName) { return createNode(client()->configuration().jidBare(), nodeName); }