diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-18 13:38:34 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-18 13:38:34 +0200 |
| commit | fd9999bd871da6181c561eeacd2aed984dae4699 (patch) | |
| tree | 7606b6bb68080a1cf670137382c812424676735f /src | |
| parent | cf26a0767ffb97c3ed4931c2af84ebd38ed87fdf (diff) | |
| download | qxmpp-fd9999bd871da6181c561eeacd2aed984dae4699.tar.gz | |
add QXmppRegisterIq as defined by XEP-0077: In-Band Registration
Diffstat (limited to 'src')
| -rw-r--r-- | src/base/QXmppRegisterIq.cpp | 140 | ||||
| -rw-r--r-- | src/base/QXmppRegisterIq.h | 74 | ||||
| -rw-r--r-- | src/base/base.pri | 2 |
3 files changed, 216 insertions, 0 deletions
diff --git a/src/base/QXmppRegisterIq.cpp b/src/base/QXmppRegisterIq.cpp new file mode 100644 index 00000000..323f7487 --- /dev/null +++ b/src/base/QXmppRegisterIq.cpp @@ -0,0 +1,140 @@ +/* + * Copyright (C) 2008-2012 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 "QXmppRegisterIq.h" + +/// Returns the email for this registration IQ. + +QString QXmppRegisterIq::email() const +{ + return m_email; +} + +/// Sets the \a email for this registration IQ. + +void QXmppRegisterIq::setEmail(const QString &email) +{ + m_email = email; +} + +/// Returns the QXmppDataForm for this registration IQ. + +QXmppDataForm QXmppRegisterIq::form() const +{ + return m_form; +} + +/// Sets the QXmppDataForm for this registration IQ. +/// +/// \param form + +void QXmppRegisterIq::setForm(const QXmppDataForm &form) +{ + m_form = form; +} + +/// Returns the instructions for this registration IQ. + +QString QXmppRegisterIq::instructions() const +{ + return m_instructions; +} + +/// Sets the \a instructions for this registration IQ. + +void QXmppRegisterIq::setInstructions(const QString &instructions) +{ + m_instructions = instructions; +} + +/// Returns the password for this registration IQ. + +QString QXmppRegisterIq::password() const +{ + return m_password; +} + +/// Sets the \a password for this registration IQ. + +void QXmppRegisterIq::setPassword(const QString &password) +{ + m_password = password; +} + +/// Returns the username for this registration IQ. + +QString QXmppRegisterIq::username() const +{ + return m_username; +} + +/// Sets the \a username for this registration IQ. + +void QXmppRegisterIq::setUsername(const QString &username) +{ + m_username = username; +} + +bool QXmppRegisterIq::isRegisterIq(const QDomElement &element) +{ + return (element.firstChildElement("query").namespaceURI() == ns_register); +} + +void QXmppRegisterIq::parseElementFromChild(const QDomElement &element) +{ + QDomElement queryElement = element.firstChildElement("query"); + m_instructions = queryElement.firstChildElement("instructions").text(); + m_username = queryElement.firstChildElement("username").text(); + m_password = queryElement.firstChildElement("password").text(); + m_email = queryElement.firstChildElement("email").text(); + m_form.parse(queryElement.firstChildElement("x")); +} + +void QXmppRegisterIq::toXmlElementFromChild(QXmlStreamWriter *writer) const +{ + writer->writeStartElement("query"); + writer->writeAttribute("xmlns", ns_register); + if (!m_instructions.isEmpty()) + writer->writeTextElement("instructions", m_instructions); + + if (!m_username.isEmpty()) + writer->writeTextElement("username", m_username); + else if (!m_username.isNull()) + writer->writeEmptyElement("username"); + + if (!m_password.isEmpty()) + writer->writeTextElement("password", m_password); + else if (!m_password.isNull()) + writer->writeEmptyElement("password"); + + if (!m_email.isEmpty()) + writer->writeTextElement("email", m_email); + else if (!m_email.isNull()) + writer->writeEmptyElement("email"); + + m_form.toXml(writer); + writer->writeEndElement(); +} diff --git a/src/base/QXmppRegisterIq.h b/src/base/QXmppRegisterIq.h new file mode 100644 index 00000000..8c1b3d21 --- /dev/null +++ b/src/base/QXmppRegisterIq.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2008-2012 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 QXMPPREGISTERIQ_H +#define QXMPPREGISTERIQ_H + +#include "QXmppDataForm.h" +#include "QXmppIq.h" + +/// \brief The QXmppRegisterIq class represents a registration IQ +/// as defined by XEP-0077: In-Band Registration. +/// +/// It is used to create an account on the server. +/// +/// \ingroup Stanzas + +class QXMPP_EXPORT QXmppRegisterIq : public QXmppIq +{ +public: + QString email() const; + void setEmail(const QString &email); + + QXmppDataForm form() const; + void setForm(const QXmppDataForm &form); + + QString instructions() const; + void setInstructions(const QString &instructions); + + QString password() const; + void setPassword(const QString &username); + + QString username() const; + void setUsername(const QString &username); + + /// \cond + static bool isRegisterIq(const QDomElement &element); + /// \endcond + +protected: + /// \cond + void parseElementFromChild(const QDomElement &element); + void toXmlElementFromChild(QXmlStreamWriter *writer) const; + /// \endcond + +private: + QXmppDataForm m_form; + QString m_email; + QString m_instructions; + QString m_password; + QString m_username; +}; + +#endif diff --git a/src/base/base.pri b/src/base/base.pri index a76459a8..c50c49a6 100644 --- a/src/base/base.pri +++ b/src/base/base.pri @@ -23,6 +23,7 @@ INSTALL_HEADERS += \ base/QXmppPingIq.h \ base/QXmppPresence.h \ base/QXmppPubSubIq.h \ + base/QXmppRegisterIq.h \ base/QXmppResultSet.h \ base/QXmppRosterIq.h \ base/QXmppRpcIq.h \ @@ -62,6 +63,7 @@ SOURCES += \ base/QXmppPingIq.cpp \ base/QXmppPresence.cpp \ base/QXmppPubSubIq.cpp \ + base/QXmppRegisterIq.cpp \ base/QXmppResultSet.cpp \ base/QXmppRosterIq.cpp \ base/QXmppRpcIq.cpp \ |
