aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2019-06-25 12:09:27 +0200
committerLNJ <lnj@kaidan.im>2019-09-06 19:53:01 +0200
commitfae818fdc89364515a86ef1cc1d1aa449372f281 (patch)
tree91ad3f8a0ab3027dc1321cceffaeea339fdce3b7 /src/base
parent8ab56c2cf1ff490b78def3f9799d4b8a99965d47 (diff)
downloadqxmpp-fae818fdc89364515a86ef1cc1d1aa449372f281.tar.gz
Add register stream feature
This adds parsing, serialization and a test for the 'register' stream feature of XEP-0077: In-Band Registration. Co-authored-by: Linus Jahn <lnj@kaidan.im>
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppConstants.cpp1
-rw-r--r--src/base/QXmppConstants_p.h1
-rw-r--r--src/base/QXmppStreamFeatures.cpp12
-rw-r--r--src/base/QXmppStreamFeatures.h9
4 files changed, 23 insertions, 0 deletions
diff --git a/src/base/QXmppConstants.cpp b/src/base/QXmppConstants.cpp
index 05d29f55..b6fab47d 100644
--- a/src/base/QXmppConstants.cpp
+++ b/src/base/QXmppConstants.cpp
@@ -63,6 +63,7 @@ const char* ns_oob = "jabber:x:oob";
const char *ns_xhtml_im = "http://jabber.org/protocol/xhtml-im";
// XEP-0077: In-Band Registration
const char* ns_register = "jabber:iq:register";
+const char* ns_register_feature = "http://jabber.org/features/iq-register";
// XEP-0078: Non-SASL Authentication
const char* ns_auth = "jabber:iq:auth";
const char* ns_authFeature = "http://jabber.org/features/iq-auth";
diff --git a/src/base/QXmppConstants_p.h b/src/base/QXmppConstants_p.h
index 4f6eca53..5304ada4 100644
--- a/src/base/QXmppConstants_p.h
+++ b/src/base/QXmppConstants_p.h
@@ -75,6 +75,7 @@ extern const char* ns_oob;
extern const char *ns_xhtml_im;
// XEP-0077: In-Band Registration
extern const char* ns_register;
+extern const char* ns_register_feature;
// XEP-0078: Non-SASL Authentication
extern const char* ns_auth;
extern const char* ns_authFeature;
diff --git a/src/base/QXmppStreamFeatures.cpp b/src/base/QXmppStreamFeatures.cpp
index 214cbd9f..8079962a 100644
--- a/src/base/QXmppStreamFeatures.cpp
+++ b/src/base/QXmppStreamFeatures.cpp
@@ -116,6 +116,16 @@ void QXmppStreamFeatures::setClientStateIndicationMode(QXmppStreamFeatures::Mode
m_csiMode = mode;
}
+QXmppStreamFeatures::Mode QXmppStreamFeatures::registerMode() const
+{
+ return m_registerMode;
+}
+
+void QXmppStreamFeatures::setRegisterMode(const QXmppStreamFeatures::Mode &registerMode)
+{
+ m_registerMode = registerMode;
+}
+
/// \cond
bool QXmppStreamFeatures::isStreamFeatures(const QDomElement &element)
{
@@ -148,6 +158,7 @@ void QXmppStreamFeatures::parse(const QDomElement &element)
m_tlsMode = readFeature(element, "starttls", ns_tls);
m_streamManagementMode = readFeature(element, "sm", ns_stream_management);
m_csiMode = readFeature(element, "csi", ns_csi);
+ m_registerMode = readFeature(element, "register", ns_register_feature);
// parse advertised compression methods
QDomElement compression = element.firstChildElement("compression");
@@ -194,6 +205,7 @@ void QXmppStreamFeatures::toXml(QXmlStreamWriter *writer) const
writeFeature(writer, "starttls", ns_tls, m_tlsMode);
writeFeature(writer, "sm", ns_stream_management, m_streamManagementMode);
writeFeature(writer, "csi", ns_csi, m_csiMode);
+ writeFeature(writer, "register", ns_register_feature, m_registerMode);
if (!m_compressionMethods.isEmpty())
{
diff --git a/src/base/QXmppStreamFeatures.h b/src/base/QXmppStreamFeatures.h
index 952e8c84..dfb20bb9 100644
--- a/src/base/QXmppStreamFeatures.h
+++ b/src/base/QXmppStreamFeatures.h
@@ -73,6 +73,14 @@ public:
/// \pa mode The mode to set.
void setClientStateIndicationMode(Mode mode);
+ /// Returns the mode for XEP-0077: In-Band Registration
+ Mode registerMode() const;
+
+ /// Sets the mode for XEP-0077: In-Band Registration
+ ///
+ /// \pa mode The mode to set.
+ void setRegisterMode(const Mode &registerMode);
+
/// \cond
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
@@ -87,6 +95,7 @@ private:
Mode m_tlsMode;
Mode m_streamManagementMode;
Mode m_csiMode;
+ Mode m_registerMode;
QStringList m_authMechanisms;
QStringList m_compressionMethods;
};