From 94f4a045d5f7994fbe000f41a3fd2f6bf4431511 Mon Sep 17 00:00:00 2001 From: Melvin Keskin Date: Thu, 7 Apr 2022 18:54:54 +0200 Subject: PubSubManager: Add requestPepFeatures() --- src/client/QXmppPubSubManager.cpp | 11 +++++++++++ src/client/QXmppPubSubManager.h | 1 + tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp | 20 ++++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/src/client/QXmppPubSubManager.cpp b/src/client/QXmppPubSubManager.cpp index 00d537db..c27b5fcb 100644 --- a/src/client/QXmppPubSubManager.cpp +++ b/src/client/QXmppPubSubManager.cpp @@ -743,6 +743,17 @@ QFuture QXmppPubSubManager::unsubscribeFromNode(cons return client()->sendGenericIq(std::move(request)); } +/// +/// \fn QXmppPubSubManager::requestPepFeatures() +/// +/// Requests all features of the own PEP service via service discovery. +/// +/// This is a convenience method equivalent to calling +/// QXmppPubSubManager::requestFeatures on the current account's bare JID. +/// +/// \warning THIS API IS NOT FINALIZED YET! +/// + /// /// /// \fn QXmppPubSubManager::fetchPepNodes() diff --git a/src/client/QXmppPubSubManager.h b/src/client/QXmppPubSubManager.h index 8c7a014b..9a4e192e 100644 --- a/src/client/QXmppPubSubManager.h +++ b/src/client/QXmppPubSubManager.h @@ -118,6 +118,7 @@ public: QFuture unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid); // PEP-specific (the PubSub service is the current account) + inline QFuture requestPepFeatures() { return requestFeatures(client()->configuration().jidBare(), Pep); }; inline QFuture fetchPepNodes() { return fetchNodes(client()->configuration().jidBare()); }; inline QFuture createPepNode(const QString &nodeName) { return createNode(client()->configuration().jidBare(), nodeName); } inline QFuture createPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return createNode(client()->configuration().jidBare(), nodeName, config); } diff --git a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp index 11c41dd2..8eadc895 100644 --- a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp +++ b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp @@ -71,6 +71,7 @@ class tst_QXmppPubSubManager : public QObject private: Q_SLOT void testDiscoFeatures(); Q_SLOT void testRequestFeatures(); + Q_SLOT void testRequestPepFeatures(); Q_SLOT void testFetchNodes(); Q_SLOT void testFetchPepNodes(); Q_SLOT void testCreateNodes_data(); @@ -218,6 +219,25 @@ void tst_QXmppPubSubManager::testRequestFeatures() QCOMPARE(features, (QVector { ns_pubsub, ns_pubsub_auto_create })); } +void tst_QXmppPubSubManager::testRequestPepFeatures() +{ + auto [test, psManager] = Client(); + + auto future = psManager->requestPepFeatures(); + test.expect(QStringLiteral("" + "" + "")); + test.inject(QStringLiteral("" + "" + "" + "" + "" + "")); + + auto features = expectFutureVariant>(future); + QCOMPARE(features, (QVector { ns_pubsub, ns_pubsub_auto_create })); +} + void tst_QXmppPubSubManager::testFetchNodes() { auto [test, psManager] = Client(); -- cgit v1.2.3