diff options
| author | taiBsu <dev@taibsu.de> | 2023-03-09 16:45:10 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-09 16:45:10 +0100 |
| commit | 6ea3edfd83a0bf1558d43e48eac563730276c175 (patch) | |
| tree | 0139fb92aca9da9f637237b7bedbd34393b0292e /src/client/QXmppExternalServiceDiscoveryManager.cpp | |
| parent | 37d56016ac7940f5c876d0293cd9e3f7802ea63a (diff) | |
| download | qxmpp-6ea3edfd83a0bf1558d43e48eac563730276c175.tar.gz | |
Implement XEP-0215: External Service Discovery (#542)
Implements https://xmpp.org/extensions/xep-0215.html in version 1.0.
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 |
