aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppRegisterIq.cpp
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2021-04-07 21:19:41 +0200
committerLinus Jahn <lnj@kaidan.im>2021-04-17 23:28:17 +0200
commitdb1b9a4c0b49efa170a50c3be3053e83db9566f0 (patch)
tree732967a5cb4777659d0f87cab799e38e9ce68712 /src/base/QXmppRegisterIq.cpp
parent518db4b0ef2da153edc7358c204bbd9c32f656c5 (diff)
downloadqxmpp-db1b9a4c0b49efa170a50c3be3053e83db9566f0.tar.gz
RegisterIq: Add out-of-band URL
Diffstat (limited to 'src/base/QXmppRegisterIq.cpp')
-rw-r--r--src/base/QXmppRegisterIq.cpp40
1 files changed, 39 insertions, 1 deletions
diff --git a/src/base/QXmppRegisterIq.cpp b/src/base/QXmppRegisterIq.cpp
index 27447f6d..18a92573 100644
--- a/src/base/QXmppRegisterIq.cpp
+++ b/src/base/QXmppRegisterIq.cpp
@@ -46,6 +46,7 @@ public:
bool isRegistered;
bool isRemove;
QXmppBitsOfBinaryDataList bitsOfBinaryData;
+ QString outOfBandUrl;
};
QXmppRegisterIqPrivate::QXmppRegisterIqPrivate()
@@ -259,6 +260,26 @@ void QXmppRegisterIq::setBitsOfBinaryData(const QXmppBitsOfBinaryDataList &bitsO
d->bitsOfBinaryData = bitsOfBinaryData;
}
+///
+/// Returns a \xep{0066, Out of Band Data} URL used for out-of-band registration.
+///
+/// \since QXmpp 1.5
+///
+QString QXmppRegisterIq::outOfBandUrl() const
+{
+ return d->outOfBandUrl;
+}
+
+///
+/// Sets a \xep{0066, Out of Band Data} URL used for out-of-band registration.
+///
+/// \since QXmpp 1.5
+///
+void QXmppRegisterIq::setOutOfBandUrl(const QString &outOfBandUrl)
+{
+ d->outOfBandUrl = outOfBandUrl;
+}
+
/// \cond
bool QXmppRegisterIq::isRegisterIq(const QDomElement &element)
{
@@ -272,7 +293,17 @@ void QXmppRegisterIq::parseElementFromChild(const QDomElement &element)
d->username = queryElement.firstChildElement(QStringLiteral("username")).text();
d->password = queryElement.firstChildElement(QStringLiteral("password")).text();
d->email = queryElement.firstChildElement(QStringLiteral("email")).text();
- d->form.parse(queryElement.firstChildElement(QStringLiteral("x")));
+
+ for (auto xElement = queryElement.firstChildElement(QStringLiteral("x"));
+ !xElement.isNull();
+ xElement = xElement.nextSiblingElement(QStringLiteral("x"))) {
+ if (xElement.namespaceURI() == ns_data) {
+ d->form.parse(xElement);
+ } else if (xElement.namespaceURI() == ns_oob) {
+ d->outOfBandUrl = xElement.firstChildElement(QStringLiteral("url")).text();
+ }
+ }
+
d->isRegistered = !queryElement.firstChildElement(ELEMENT_REGISTERED).isNull();
d->isRemove = !queryElement.firstChildElement(ELEMENT_REMOVE).isNull();
d->bitsOfBinaryData.parse(queryElement);
@@ -309,6 +340,13 @@ void QXmppRegisterIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
d->form.toXml(writer);
d->bitsOfBinaryData.toXml(writer);
+ if (!d->outOfBandUrl.isEmpty()) {
+ writer->writeStartElement(QStringLiteral("x"));
+ writer->writeDefaultNamespace(ns_oob);
+ writer->writeTextElement(QStringLiteral("url"), d->outOfBandUrl);
+ writer->writeEndElement();
+ }
+
writer->writeEndElement();
}