From f78931350a05c950a7e650805d5db02ae7b9ac86 Mon Sep 17 00:00:00 2001 From: Melvin Keskin Date: Thu, 7 Apr 2022 18:38:22 +0200 Subject: PubSubManager: Add subscribeToNode()/unsubscribeFromNode() --- src/client/QXmppPubSubManager.cpp | 40 +++++++++++++++++++++++++++++++++++++++ src/client/QXmppPubSubManager.h | 2 ++ 2 files changed, 42 insertions(+) (limited to 'src/client') 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 @@ -642,6 +642,46 @@ QFuture QXmppPubSubManager::cancelNodeConfiguration( return client()->sendGenericIq(std::move(request)); } +/// +/// 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::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::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 QXmppPubSubManager::createPepNode(const QString &nodeName) /// 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 requestNodeConfiguration(const QString &service, const QString &nodeName); QFuture configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config); QFuture cancelNodeConfiguration(const QString &service, const QString &nodeName); + QFuture subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid); + QFuture unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid); // PEP-specific (the PubSub service is the current account) inline QFuture createPepNode(const QString &nodeName) { return createNode(client()->configuration().jidBare(), nodeName); } -- cgit v1.2.3