diff options
| author | taiBsu <dev@taibsu.de> | 2023-03-09 16:45:10 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-09 16:45:10 +0100 |
| commit | 6ea3edfd83a0bf1558d43e48eac563730276c175 (patch) | |
| tree | 0139fb92aca9da9f637237b7bedbd34393b0292e /src/base/QXmppExternalService.h | |
| parent | 37d56016ac7940f5c876d0293cd9e3f7802ea63a (diff) | |
| download | qxmpp-6ea3edfd83a0bf1558d43e48eac563730276c175.tar.gz | |
Implement XEP-0215: External Service Discovery (#542)
Implements https://xmpp.org/extensions/xep-0215.html in version 1.0.
Diffstat (limited to 'src/base/QXmppExternalService.h')
| -rw-r--r-- | src/base/QXmppExternalService.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/base/QXmppExternalService.h b/src/base/QXmppExternalService.h new file mode 100644 index 00000000..fb0b7d58 --- /dev/null +++ b/src/base/QXmppExternalService.h @@ -0,0 +1,83 @@ +// SPDX-FileCopyrightText: 2023 Tibor Csötönyi <work@taibsu.de> +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +#pragma once + +#include "QXmppGlobal.h" + +#include <optional> + +#include <QSharedDataPointer> + +class QDateTime; +class QDomElement; +class QXmlStreamWriter; +class QXmppExternalServicePrivate; + +class QXMPP_EXPORT QXmppExternalService +{ +public: + /// + /// Describes the action type of an external service IQ. + /// + /// \since QXmpp 1.6 + /// + enum class Action { + Add, + Delete, + Modify + }; + + /// + /// Describes the packet type of an external service IQ. + /// + /// \since QXmpp 1.6 + /// + enum class Transport { + Tcp, + Udp + }; + + QXmppExternalService(); + + QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppExternalService) + + QString host() const; + void setHost(const QString &); + + QString type() const; + void setType(const QString &); + + std::optional<Action> action() const; + void setAction(std::optional<Action>); + + std::optional<QDateTime> expires() const; + void setExpires(std::optional<QDateTime>); + + std::optional<QString> name() const; + void setName(std::optional<QString>); + + std::optional<QString> password() const; + void setPassword(std::optional<QString>); + + std::optional<int> port() const; + void setPort(std::optional<int>); + + std::optional<bool> restricted() const; + void setRestricted(std::optional<bool>); + + std::optional<Transport> transport() const; + void setTransport(std::optional<Transport>); + + std::optional<QString> username() const; + void setUsername(std::optional<QString>); + + static bool isExternalService(const QDomElement &); + + void parse(const QDomElement &); + void toXml(QXmlStreamWriter *) const; + +private: + QSharedDataPointer<QXmppExternalServicePrivate> d; +}; |
