diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-04-09 21:08:53 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-04-09 22:27:11 +0200 |
| commit | 0db9b42c59864d771f5269c54884862fa897437e (patch) | |
| tree | 50c378d748569d0ed8d8d0f686204eb882b0eef9 | |
| parent | cfc3f2f2c28f559dbaf3277923a92937ae85c2ed (diff) | |
| download | qxmpp-0db9b42c59864d771f5269c54884862fa897437e.tar.gz | |
PubSubManager: Add PEP overload for fetchNodes()
| -rw-r--r-- | src/client/QXmppPubSubManager.cpp | 10 | ||||
| -rw-r--r-- | src/client/QXmppPubSubManager.h | 1 | ||||
| -rw-r--r-- | tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp | 19 |
3 files changed, 30 insertions, 0 deletions
diff --git a/src/client/QXmppPubSubManager.cpp b/src/client/QXmppPubSubManager.cpp index b7412f9f..52cb5de8 100644 --- a/src/client/QXmppPubSubManager.cpp +++ b/src/client/QXmppPubSubManager.cpp @@ -685,6 +685,16 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::unsubscribeFromNode(cons } /// +/// +/// \fn QXmppPubSubManager::fetchPepNodes() +/// +/// Requests all listed nodes of the own PEP service via service discovery. +/// +/// This is a convenience method equivalent to calling +/// QXmppPubSubManager::fetchNodes on the current account's bare JID. +/// + +/// /// \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 f5116be4..63c14f22 100644 --- a/src/client/QXmppPubSubManager.h +++ b/src/client/QXmppPubSubManager.h @@ -100,6 +100,7 @@ public: QFuture<Result> unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid); // PEP-specific (the PubSub service is the current account) + inline QFuture<NodesResult> fetchPepNodes() { return fetchNodes(client()->configuration().jidBare()); }; inline QFuture<Result> createPepNode(const QString &nodeName) { return createNode(client()->configuration().jidBare(), nodeName); } inline QFuture<Result> createPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return createNode(client()->configuration().jidBare(), nodeName, config); } inline QFuture<Result> deletePepNode(const QString &nodeName) { return deleteNode(client()->configuration().jidBare(), nodeName); } diff --git a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp index f7f91ec3..b3678f89 100644 --- a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp +++ b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp @@ -68,6 +68,7 @@ class tst_QXmppPubSubManager : public QObject private: Q_SLOT void testDiscoFeatures(); Q_SLOT void testFetchNodes(); + Q_SLOT void testFetchPepNodes(); Q_SLOT void testCreateNodes_data(); Q_SLOT void testCreateNodes(); Q_SLOT void testCreateNodeWithConfig(); @@ -126,6 +127,24 @@ void tst_QXmppPubSubManager::testFetchNodes() QCOMPARE(nodes, (QVector<QString> { "blogs", "news" })); } +void tst_QXmppPubSubManager::testFetchPepNodes() +{ + auto [test, psManager] = Client(); + + auto future = psManager->fetchPepNodes(); + test.expect(QStringLiteral("<iq id='qxmpp1' type='get'>" + "<query xmlns='http://jabber.org/protocol/disco#items'/>" + "</iq>")); + test.inject(QStringLiteral("<iq id='qxmpp1' from='juliet@capulet.lit' to='juliet@capulet.lit/balcony' type='result'>" + "<query xmlns='http://jabber.org/protocol/disco#items'>" + "<item jid='juliet@capulet.lit' node='blogs' name='Weblog updates'/>" + "<item jid='juliet@capulet.lit' node='news' name='News and announcements'/>" + "</query></iq>")); + + const auto nodes = expectFutureVariant<QVector<QString>>(future); + QCOMPARE(nodes, (QVector<QString> { "blogs", "news" })); +} + void tst_QXmppPubSubManager::testCreateNodes_data() { QTest::addColumn<bool>("isPep"); |
