diff options
| author | Melvin Keskin <melvo@olomono.de> | 2021-03-08 20:11:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-08 20:11:22 +0100 |
| commit | 8efc8ea6aef64455bca04b11c3c4b0e20b532484 (patch) | |
| tree | 8eced49da7e56f833cfb8534f4ead5261493e67f /src/base/QXmppMixInvitation.cpp | |
| parent | 9a1134a415cd550dcb6efd35bd1cf98b8faa236e (diff) | |
| download | qxmpp-8efc8ea6aef64455bca04b11c3c4b0e20b532484.tar.gz | |
Implement MIX-MISC XEP-0407: Invitation message extension (#329)
This implements the message extension for MIX invitations from
XEP-0407: Mediated Information eXchange (MIX): Miscellaneous
Capabilities in version 0.1.2.
https://xmpp.org/extensions/xep-0407.html#usecase-user-invite
Diffstat (limited to 'src/base/QXmppMixInvitation.cpp')
| -rw-r--r-- | src/base/QXmppMixInvitation.cpp | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/src/base/QXmppMixInvitation.cpp b/src/base/QXmppMixInvitation.cpp new file mode 100644 index 00000000..c9178a21 --- /dev/null +++ b/src/base/QXmppMixInvitation.cpp @@ -0,0 +1,180 @@ +/* + * Copyright (C) 2008-2021 The QXmpp developers + * + * Author: + * Melvin Keskin + * + * Source: + * https://github.com/qxmpp-project/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 "QXmppMixInvitation.h" + +#include "QXmppConstants_p.h" +#include "QXmppUtils.h" + +#include <QDomElement> +#include <QSharedData> + +class QXmppMixInvitationPrivate : public QSharedData +{ +public: + QString inviterJid; + QString inviteeJid; + QString channelJid; + QString token; +}; + +/// +/// Default constructor +/// +QXmppMixInvitation::QXmppMixInvitation() + : d(new QXmppMixInvitationPrivate) +{ +} + +/// +/// Copy constructor +/// +QXmppMixInvitation::QXmppMixInvitation(const QXmppMixInvitation &other) = default; + +/// +/// Default assignment operator. +/// +QXmppMixInvitation &QXmppMixInvitation::operator=(const QXmppMixInvitation &other) = default; + +/// +/// Destructor +/// +QXmppMixInvitation::~QXmppMixInvitation() = default; + +/// +/// Returns the JID of the inviter. +/// +/// \return the inviter's JID +/// +QString QXmppMixInvitation::inviterJid() const +{ + return d->inviterJid; +} + +/// +/// Sets the JID of the inviter. +/// +/// \param inviterJid inviter's JID +/// +void QXmppMixInvitation::setInviterJid(const QString &inviterJid) +{ + d->inviterJid = inviterJid; +} + +/// +/// Returns the JID of the invitee. +/// +/// \return the invitee's JID +/// +QString QXmppMixInvitation::inviteeJid() const +{ + return d->inviteeJid; +} + +/// +/// Sets the JID of the invitee. +/// +/// \param inviteeJid invitee's JID +/// +void QXmppMixInvitation::setInviteeJid(const QString &inviteeJid) +{ + d->inviteeJid = inviteeJid; +} + +/// +/// Returns the JID of the channel. +/// +/// \return the channel's JID +/// +QString QXmppMixInvitation::channelJid() const +{ + return d->channelJid; +} + +/// +/// Sets the JID of the channel. +/// +/// \param channelJid channel JID +/// +void QXmppMixInvitation::setChannelJid(const QString &channelJid) +{ + d->channelJid = channelJid; +} + +/// +/// Returns the token which is generated by the server and used by the invitee +/// for authentication. +/// +/// \return the generated token used for authentication +/// +QString QXmppMixInvitation::token() const +{ + return d->token; +} + +/// +/// Sets the token which is generated by the server and used by the invitee for +/// authentication. +/// +/// \param token authentication token +/// +void QXmppMixInvitation::setToken(const QString &token) +{ + d->token = token; +} + +/// \cond +void QXmppMixInvitation::parse(const QDomElement &element) +{ + d->inviterJid = element.firstChildElement(QStringLiteral("inviter")).text(); + d->inviteeJid = element.firstChildElement(QStringLiteral("invitee")).text(); + d->channelJid = element.firstChildElement(QStringLiteral("channel")).text(); + d->token = element.firstChildElement(QStringLiteral("token")).text(); +} + +void QXmppMixInvitation::toXml(QXmlStreamWriter *writer) const +{ + writer->writeStartElement(QStringLiteral("invitation")); + writer->writeDefaultNamespace(ns_mix_misc); + + helperToXmlAddTextElement(writer, QStringLiteral("inviter"), d->inviterJid); + helperToXmlAddTextElement(writer, QStringLiteral("invitee"), d->inviteeJid); + helperToXmlAddTextElement(writer, QStringLiteral("channel"), d->channelJid); + helperToXmlAddTextElement(writer, QStringLiteral("token"), d->token); + + writer->writeEndElement(); +} +/// \endcond + +/// +/// Determines whether the given DOM element is a MIX invitation. +/// +/// \param element DOM element being checked +/// +/// \return true if element is a MIX invitation, otherwise false +/// +bool QXmppMixInvitation::isMixInvitation(const QDomElement &element) +{ + return element.tagName() == QStringLiteral("invitation") && + element.namespaceURI() == ns_mix_misc; +} |
