diff options
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/QXmppPubSubManager.cpp | 40 | ||||
| -rw-r--r-- | src/client/QXmppPubSubManager.h | 2 |
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); } |
