aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppExternalService.h
diff options
context:
space:
mode:
authortaiBsu <dev@taibsu.de>2023-03-09 16:45:10 +0100
committerGitHub <noreply@github.com>2023-03-09 16:45:10 +0100
commit6ea3edfd83a0bf1558d43e48eac563730276c175 (patch)
tree0139fb92aca9da9f637237b7bedbd34393b0292e /src/base/QXmppExternalService.h
parent37d56016ac7940f5c876d0293cd9e3f7802ea63a (diff)
downloadqxmpp-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.h83
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;
+};