diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-05-13 21:26:46 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-05-20 16:55:28 +0200 |
| commit | 4714c48c8cf578deaf2488e98a9f844300dd5750 (patch) | |
| tree | dde2a1420eea41b390dcc69c7217ed818fdce0ba /src/client | |
| parent | 6c111246ec0a17309e4d6af4c57d6fcc058671cb (diff) | |
| download | qxmpp-4714c48c8cf578deaf2488e98a9f844300dd5750.tar.gz | |
ClientExtension: Add injectIq() function
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/QXmppClient.cpp | 5 | ||||
| -rw-r--r-- | src/client/QXmppClient.h | 4 | ||||
| -rw-r--r-- | src/client/QXmppClientExtension.cpp | 18 | ||||
| -rw-r--r-- | src/client/QXmppClientExtension.h | 2 |
4 files changed, 29 insertions, 0 deletions
diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp index b371e052..cfe798fd 100644 --- a/src/client/QXmppClient.cpp +++ b/src/client/QXmppClient.cpp @@ -784,6 +784,11 @@ QXmppVersionManager &QXmppClient::versionManager() return *findExtension<QXmppVersionManager>(); } +void QXmppClient::injectIq(const QDomElement &element, const std::optional<QXmppE2eeMetadata> &e2eeMetadata) +{ + StanzaPipeline::process(d->extensions, element, e2eeMetadata); +} + /// /// Give extensions a chance to handle incoming stanzas. /// diff --git a/src/client/QXmppClient.h b/src/client/QXmppClient.h index 08f2f7cb..47b71706 100644 --- a/src/client/QXmppClient.h +++ b/src/client/QXmppClient.h @@ -307,6 +307,9 @@ public Q_SLOTS: bool sendPacket(const QXmppNonza &); void sendMessage(const QString &bareJid, const QString &message); +private: + void injectIq(const QDomElement &element, const std::optional<QXmppE2eeMetadata> &e2eeMetadata); + private Q_SLOTS: void _q_elementReceived(const QDomElement &element, bool &handled); void _q_reconnect(); @@ -318,6 +321,7 @@ private Q_SLOTS: private: QXmppClientPrivate *const d; + friend class QXmppClientExtension; friend class QXmppInternalClientExtension; friend class TestClient; }; diff --git a/src/client/QXmppClientExtension.cpp b/src/client/QXmppClientExtension.cpp index eb6ec907..67f79889 100644 --- a/src/client/QXmppClientExtension.cpp +++ b/src/client/QXmppClientExtension.cpp @@ -4,6 +4,8 @@ #include "QXmppClientExtension.h" +#include "QXmppClient.h" + #include <QStringList> class QXmppClientExtensionPrivate @@ -101,3 +103,19 @@ void QXmppClientExtension::setClient(QXmppClient *client) { d->client = client; } + +/// +/// Injects an IQ element into the client. +/// +/// The IQ is handled like any other stanza received via the XMPP stream. +/// +/// \param element +/// \param e2eeMetadata End-to-end encryption metadata for the IQ. Should +/// be set if the stanza has been decrypted with an end-to-end encryption. +/// +/// \since QXmpp 1.5 +/// +void QXmppClientExtension::injectIq(const QDomElement &element, const std::optional<QXmppE2eeMetadata> &e2eeMetadata) +{ + client()->injectIq(element, e2eeMetadata); +} diff --git a/src/client/QXmppClientExtension.h b/src/client/QXmppClientExtension.h index 0cf81fc3..5178133a 100644 --- a/src/client/QXmppClientExtension.h +++ b/src/client/QXmppClientExtension.h @@ -43,6 +43,8 @@ protected: QXmppClient *client(); virtual void setClient(QXmppClient *client); + void injectIq(const QDomElement &element, const std::optional<QXmppE2eeMetadata> &e2eeMetadata); + private: QXmppClientExtensionPrivate *const d; |
