aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppDiscoveryManager.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2021-04-28 18:26:21 +0200
committerLinus Jahn <lnj@kaidan.im>2021-06-27 20:17:18 +0200
commitc02b2a1d93b75e5210a2024b398df83c121ae7e7 (patch)
tree6d810590cf3f5acb3af7692c0723d7253dd6abfc /src/client/QXmppDiscoveryManager.cpp
parent9c9377f609d87578051ab6521544d1f3d80b8011 (diff)
downloadqxmpp-c02b2a1d93b75e5210a2024b398df83c121ae7e7.tar.gz
DiscoveryManager: Add QFuture-based requests
Diffstat (limited to 'src/client/QXmppDiscoveryManager.cpp')
-rw-r--r--src/client/QXmppDiscoveryManager.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/client/QXmppDiscoveryManager.cpp b/src/client/QXmppDiscoveryManager.cpp
index 0cb34831..6f7d3654 100644
--- a/src/client/QXmppDiscoveryManager.cpp
+++ b/src/client/QXmppDiscoveryManager.cpp
@@ -29,6 +29,7 @@
#include "QXmppDataForm.h"
#include "QXmppDiscoveryIq.h"
#include "QXmppGlobal.h"
+#include "QXmppGlobal_p.h"
#include "QXmppStream.h"
#include <QCoreApplication>
@@ -44,6 +45,24 @@ public:
QXmppDataForm clientInfoForm;
};
+///
+/// \typedef QXmppDiscoveryManager::InfoResult
+///
+/// Contains the discovery information result in the form of an QXmppDiscoveryIq
+/// or (in case the request did not succeed) a QXmppStanza::Error.
+///
+/// \since QXmpp 1.5
+///
+
+///
+/// \typedef QXmppDiscoveryManager::ItemsResult
+///
+/// Contains a list of service discovery items or (in case the request did not
+/// succeed) a QXmppStanza::Error.
+///
+/// \since QXmpp 1.5
+///
+
QXmppDiscoveryManager::QXmppDiscoveryManager()
: d(new QXmppDiscoveryManagerPrivate)
{
@@ -104,6 +123,54 @@ QString QXmppDiscoveryManager::requestItems(const QString& jid, const QString& n
}
///
+/// Requests information from the specified XMPP entity.
+///
+/// \param jid The target entity's JID.
+/// \param node The target node (optional).
+///
+/// \warning THIS API IS NOT FINALIZED YET!
+///
+/// \since QXmpp 1.5
+///
+QFuture<QXmppDiscoveryManager::InfoResult> QXmppDiscoveryManager::requestDiscoInfo(const QString &jid, const QString &node)
+{
+ QXmppDiscoveryIq request;
+ request.setType(QXmppIq::Get);
+ request.setQueryType(QXmppDiscoveryIq::InfoQuery);
+ request.setTo(jid);
+ if (!node.isEmpty()) {
+ request.setQueryNode(node);
+ }
+
+ return chainIq<InfoResult, QXmppDiscoveryIq>(client()->sendIq(request), this);
+}
+
+///
+/// Requests items from the specified XMPP entity.
+///
+/// \param jid The target entity's JID.
+/// \param node The target node (optional).
+///
+/// \warning THIS API IS NOT FINALIZED YET!
+///
+/// \since QXmpp 1.5
+///
+QFuture<QXmppDiscoveryManager::ItemsResult> QXmppDiscoveryManager::requestDiscoItems(const QString &jid, const QString &node)
+{
+ QXmppDiscoveryIq request;
+ request.setType(QXmppIq::Get);
+ request.setQueryType(QXmppDiscoveryIq::ItemsQuery);
+ request.setTo(jid);
+ if (!node.isEmpty()) {
+ request.setQueryNode(node);
+ }
+
+ return chainIq<ItemsResult, QXmppDiscoveryIq>(client()->sendIq(request), this, [](QXmppDiscoveryIq &&iq) {
+ return iq.items();
+ });
+}
+
+///
/// Returns the client's full capabilities.
///
QXmppDiscoveryIq QXmppDiscoveryManager::capabilities()