diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-23 05:45:18 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-23 05:45:18 +0000 |
| commit | 12418dc2d452f372c19d129a1dacfbf4e7e00817 (patch) | |
| tree | 5e63a3f1e32708becbc32e640362bab9964dfb9b /src | |
| parent | a0f88962d9b7ab47ae2101f8138ce2c3a3c51e9d (diff) | |
| download | qxmpp-12418dc2d452f372c19d129a1dacfbf4e7e00817.tar.gz | |
add support for parsing server dialback stanzas
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppDialback.cpp | 98 | ||||
| -rw-r--r-- | src/QXmppDialback.h | 66 | ||||
| -rw-r--r-- | src/src.pro | 2 |
3 files changed, 166 insertions, 0 deletions
diff --git a/src/QXmppDialback.cpp b/src/QXmppDialback.cpp new file mode 100644 index 00000000..b62fba90 --- /dev/null +++ b/src/QXmppDialback.cpp @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2008-2010 The QXmpp developers + * + * Author: + * Jeremy Lainé + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + +#include <QDomElement> + +#include "QXmppConstants.h" +#include "QXmppDialback.h" +#include "QXmppUtils.h" + +QXmppDialback::QXmppDialback() + : m_command(Result) +{ +} + +QXmppDialback::Command QXmppDialback::command() const +{ + return m_command; +} + +void QXmppDialback::setCommand(QXmppDialback::Command command) +{ + m_command = command; +} + + +QString QXmppDialback::key() const +{ + return m_key; +} + +void QXmppDialback::setKey(const QString &key) +{ + m_key = key; +} + +QString QXmppDialback::type() const +{ + return m_type; +} + +void QXmppDialback::setType(const QString &type) +{ + m_type = type; +} + +bool QXmppDialback::isDialback(const QDomElement &element) +{ + return element.namespaceURI() == ns_server_dialback && + (element.tagName() == QLatin1String("result") || + element.tagName() == QLatin1String("verify")); +} + +void QXmppDialback::parse(const QDomElement &element) +{ + QXmppStanza::parse(element); + if (element.tagName() == QLatin1String("result")) + m_command = Result; + else + m_command = Verify; + m_type = element.attribute("type"); + m_key = element.text(); +} + +void QXmppDialback::toXml(QXmlStreamWriter *xmlWriter) const +{ + if (m_command == Result) + xmlWriter->writeStartElement("db:result"); + else + xmlWriter->writeStartElement("db:verify"); + helperToXmlAddAttribute(xmlWriter, "id", id()); + helperToXmlAddAttribute(xmlWriter, "to", to()); + helperToXmlAddAttribute(xmlWriter, "from", from()); + helperToXmlAddAttribute(xmlWriter, "type", m_type); + if (!m_key.isEmpty()) + xmlWriter->writeCharacters(m_key); + xmlWriter->writeEndElement(); +} + diff --git a/src/QXmppDialback.h b/src/QXmppDialback.h new file mode 100644 index 00000000..183c3913 --- /dev/null +++ b/src/QXmppDialback.h @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2008-2010 The QXmpp developers + * + * Author: + * Jeremy Lainé + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + +#ifndef QXMPPDIALBACK_H +#define QXMPPDIALBACK_H + +#include "QXmppStanza.h" + +/// \brief The QXmppDialback class represents a stanza used for the Server +/// Dialback protocol as specified by XEP-0220: Server Dialback. +/// +/// \ingroup Stanzas + +class QXmppDialback : public QXmppStanza +{ +public: + enum Command { + Result, + Verify, + }; + + QXmppDialback(); + + Command command() const; + void setCommand(Command command); + + QString key() const; + void setKey(const QString &key); + + QString type() const; + void setType(const QString &type); + + /// \cond + void parse(const QDomElement &element); + void toXml(QXmlStreamWriter *writer) const; + /// \endcond + + static bool isDialback(const QDomElement &element); + +private: + Command m_command; + QString m_key; + QString m_type; +}; + +#endif diff --git a/src/src.pro b/src/src.pro index 04743abc..74e71c78 100644 --- a/src/src.pro +++ b/src/src.pro @@ -29,6 +29,7 @@ HEADERS += QXmppUtils.h \ QXmppConfiguration.h \ QXmppConstants.h \ QXmppDataForm.h \ + QXmppDialback.h \ QXmppDiscoveryIq.h \ QXmppElement.h \ QXmppIbbIq.h \ @@ -74,6 +75,7 @@ SOURCES += QXmppUtils.cpp \ QXmppConfiguration.cpp \ QXmppConstants.cpp \ QXmppDataForm.cpp \ + QXmppDialback.cpp \ QXmppDiscoveryIq.cpp \ QXmppElement.cpp \ QXmppIbbIq.cpp \ |
