diff options
Diffstat (limited to 'src/client/QXmppExternalServiceDiscoveryManager.cpp')
| -rw-r--r-- | src/client/QXmppExternalServiceDiscoveryManager.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/client/QXmppExternalServiceDiscoveryManager.cpp b/src/client/QXmppExternalServiceDiscoveryManager.cpp new file mode 100644 index 00000000..27cfe0b2 --- /dev/null +++ b/src/client/QXmppExternalServiceDiscoveryManager.cpp @@ -0,0 +1,60 @@ +// SPDX-FileCopyrightText: 2023 Tibor Csötönyi <work@taibsu.de> +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +#include "QXmppExternalServiceDiscoveryManager.h" + +#include "QXmppClient.h" +#include "QXmppConstants_p.h" +#include "QXmppExternalServiceDiscoveryIq.h" +#include "QXmppIqHandling.h" + +using namespace QXmpp::Private; + +/// +/// \brief The QXmppExternalServiceDiscoveryManager class makes it possible to +/// discover information about external services from providers +/// as defined by \xep{0215, External Service Discovery}. +/// +/// To make use of this manager, you need to instantiate it and load it into +/// the QXmppClient instance as follows: +/// +/// \code +/// auto *manager = client->addNewExtension<QXmppExternalServiceDiscoveryManager>(); +/// \endcode +/// +/// \ingroup Managers +/// +/// \since QXmpp 1.6 +/// +QXmppExternalServiceDiscoveryManager::QXmppExternalServiceDiscoveryManager() +{ +} + +QXmppExternalServiceDiscoveryManager::~QXmppExternalServiceDiscoveryManager() = default; + +/// +/// Requests external services from the specified XMPP entity. +/// +/// \param jid The target entity's JID. +/// \param node The target node (optional). +/// +/// \since QXmpp 1.6 +/// +QXmppTask<QXmppExternalServiceDiscoveryManager::ServicesResult> QXmppExternalServiceDiscoveryManager::requestServices(const QString &jid, const QString &node) +{ + QXmppExternalServiceDiscoveryIq request; + request.setType(QXmppIq::Get); + request.setTo(jid); + + return chainIq(client()->sendIq(std::move(request)), this, [](QXmppExternalServiceDiscoveryIq &&iq) -> ServicesResult { + return iq.externalServices(); + }); +} + +/// \cond +QStringList QXmppExternalServiceDiscoveryManager::discoveryFeatures() const +{ + return { ns_external_service_discovery }; +} +/// \endcond |
