aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppSaslAuth.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-07-20 13:32:44 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-07-20 13:32:44 +0200
commit72dd7ccb46ceac4b93f86a814e20576a5f325818 (patch)
treee897d81e6a5dfa504012d62bdecb59788ab1169c /src/base/QXmppSaslAuth.cpp
parent8991d3b2a9f83d84b835973f1cc272d0ef0f437c (diff)
downloadqxmpp-72dd7ccb46ceac4b93f86a814e20576a5f325818.tar.gz
refactor SASL stanza handling
Diffstat (limited to 'src/base/QXmppSaslAuth.cpp')
-rw-r--r--src/base/QXmppSaslAuth.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/base/QXmppSaslAuth.cpp b/src/base/QXmppSaslAuth.cpp
index 5fca08e3..ab0c6bcb 100644
--- a/src/base/QXmppSaslAuth.cpp
+++ b/src/base/QXmppSaslAuth.cpp
@@ -25,6 +25,7 @@
#include <cstdlib>
#include <QCryptographicHash>
+#include <QDomElement>
#include <QStringList>
#include <QUrl>
@@ -32,6 +33,42 @@
#include "QXmppSaslAuth_p.h"
#include "QXmppUtils.h"
+const char *ns_xmpp_sasl = "urn:ietf:params:xml:ns:xmpp-sasl";
+
+QXmppSaslStanza::QXmppSaslStanza(const QString &type, const QByteArray &value)
+ : m_type(type)
+ , m_value(value)
+{
+}
+
+QByteArray QXmppSaslStanza::value() const
+{
+ return m_value;
+}
+
+void QXmppSaslStanza::setValue(const QByteArray &value)
+{
+ m_value = value;
+}
+
+
+void QXmppSaslStanza::parse(const QDomElement &element)
+{
+ m_type = element.nodeName();
+ m_value = QByteArray::fromBase64(element.text().toAscii());
+}
+
+void QXmppSaslStanza::toXml(QXmlStreamWriter *writer) const
+{
+ if (!m_type.isEmpty()) {
+ writer->writeStartElement(m_type);
+ writer->writeAttribute("xmlns", ns_xmpp_sasl);
+ if (!m_value.isEmpty())
+ writer->writeCharacters(m_value.toBase64());
+ writer->writeEndElement();
+ }
+}
+
class QXmppSaslClientPrivate
{
public: