aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-12-26 20:19:34 +0100
committerLinus Jahn <lnj@kaidan.im>2022-12-26 20:48:34 +0100
commit71442ab927cd5c1c235528442fe3706f33e7ff6e (patch)
tree0fc07e28877a55d8dc379bd26d00c6dd62250cfd
parent847de2ddc00057049de6d7f507711906e7dfd3a8 (diff)
downloadqxmpp-71442ab927cd5c1c235528442fe3706f33e7ff6e.tar.gz
Move PubSubIq into QXmpp::Private namespace
This way users won't use it accidentally.
-rw-r--r--src/base/QXmppPubSubIq.cpp72
-rw-r--r--src/base/QXmppPubSubIq_p.h28
-rw-r--r--src/client/QXmppPubSubManager.cpp100
-rw-r--r--src/client/QXmppPubSubManager.h18
-rw-r--r--tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp74
-rw-r--r--tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp2
6 files changed, 152 insertions, 142 deletions
diff --git a/src/base/QXmppPubSubIq.cpp b/src/base/QXmppPubSubIq.cpp
index ca703c33..d45df2d3 100644
--- a/src/base/QXmppPubSubIq.cpp
+++ b/src/base/QXmppPubSubIq.cpp
@@ -13,6 +13,10 @@
#include <QSharedData>
+using namespace QXmpp::Private;
+
+/// \cond
+
///
/// \class QXmppPubSubIqBase
///
@@ -80,7 +84,7 @@ static const QStringList PUBSUB_QUERIES = {
class QXmppPubSubIqPrivate : public QSharedData
{
public:
- QXmppPubSubIqBase::QueryType queryType = QXmppPubSubIqBase::Items;
+ PubSubIqBase::QueryType queryType = PubSubIqBase::Items;
QString queryJid;
QString queryNode;
QString subscriptionId;
@@ -94,23 +98,23 @@ public:
///
/// Constructs a PubSub IQ.
///
-QXmppPubSubIqBase::QXmppPubSubIqBase()
+PubSubIqBase::PubSubIqBase()
: d(new QXmppPubSubIqPrivate)
{
}
/// Default copy-constructor
-QXmppPubSubIqBase::QXmppPubSubIqBase(const QXmppPubSubIqBase &iq) = default;
+PubSubIqBase::PubSubIqBase(const PubSubIqBase &iq) = default;
-QXmppPubSubIqBase::~QXmppPubSubIqBase() = default;
+PubSubIqBase::~PubSubIqBase() = default;
/// Default assignment operator
-QXmppPubSubIqBase &QXmppPubSubIqBase::operator=(const QXmppPubSubIqBase &iq) = default;
+PubSubIqBase &PubSubIqBase::operator=(const PubSubIqBase &iq) = default;
///
/// Returns the PubSub query type for this IQ.
///
-QXmppPubSubIqBase::QueryType QXmppPubSubIqBase::queryType() const
+PubSubIqBase::QueryType PubSubIqBase::queryType() const
{
return d->queryType;
}
@@ -120,7 +124,7 @@ QXmppPubSubIqBase::QueryType QXmppPubSubIqBase::queryType() const
///
/// \param queryType
///
-void QXmppPubSubIqBase::setQueryType(QXmppPubSubIqBase::QueryType queryType)
+void PubSubIqBase::setQueryType(PubSubIqBase::QueryType queryType)
{
d->queryType = queryType;
}
@@ -128,7 +132,7 @@ void QXmppPubSubIqBase::setQueryType(QXmppPubSubIqBase::QueryType queryType)
///
/// Returns the JID being queried.
///
-QString QXmppPubSubIqBase::queryJid() const
+QString PubSubIqBase::queryJid() const
{
return d->queryJid;
}
@@ -138,7 +142,7 @@ QString QXmppPubSubIqBase::queryJid() const
///
/// \param queryJid
///
-void QXmppPubSubIqBase::setQueryJid(const QString &queryJid)
+void PubSubIqBase::setQueryJid(const QString &queryJid)
{
d->queryJid = queryJid;
}
@@ -146,7 +150,7 @@ void QXmppPubSubIqBase::setQueryJid(const QString &queryJid)
///
/// Returns the name of the node being queried.
///
-QString QXmppPubSubIqBase::queryNode() const
+QString PubSubIqBase::queryNode() const
{
return d->queryNode;
}
@@ -156,7 +160,7 @@ QString QXmppPubSubIqBase::queryNode() const
///
/// \param queryNodeName
///
-void QXmppPubSubIqBase::setQueryNode(const QString &queryNodeName)
+void PubSubIqBase::setQueryNode(const QString &queryNodeName)
{
d->queryNode = queryNodeName;
}
@@ -166,7 +170,7 @@ void QXmppPubSubIqBase::setQueryNode(const QString &queryNodeName)
///
/// This does not work for SubscriptionQuery IQs, use subscription() instead.
///
-QString QXmppPubSubIqBase::subscriptionId() const
+QString PubSubIqBase::subscriptionId() const
{
return d->subscriptionId;
}
@@ -176,7 +180,7 @@ QString QXmppPubSubIqBase::subscriptionId() const
///
/// This does not work for SubscriptionQuery IQs, use setSubscription() instead.
///
-void QXmppPubSubIqBase::setSubscriptionId(const QString &subscriptionId)
+void PubSubIqBase::setSubscriptionId(const QString &subscriptionId)
{
d->subscriptionId = subscriptionId;
}
@@ -184,7 +188,7 @@ void QXmppPubSubIqBase::setSubscriptionId(const QString &subscriptionId)
///
/// Returns the included subscriptions.
///
-QVector<QXmppPubSubSubscription> QXmppPubSubIqBase::subscriptions() const
+QVector<QXmppPubSubSubscription> PubSubIqBase::subscriptions() const
{
return d->subscriptions;
}
@@ -192,7 +196,7 @@ QVector<QXmppPubSubSubscription> QXmppPubSubIqBase::subscriptions() const
///
/// Sets the included subscriptions.
///
-void QXmppPubSubIqBase::setSubscriptions(const QVector<QXmppPubSubSubscription> &subscriptions)
+void PubSubIqBase::setSubscriptions(const QVector<QXmppPubSubSubscription> &subscriptions)
{
d->subscriptions = subscriptions;
}
@@ -204,7 +208,7 @@ void QXmppPubSubIqBase::setSubscriptions(const QVector<QXmppPubSubSubscription>
/// subscription if existant. This can be used for both query types,
/// Subscription and Subscriptions.
///
-std::optional<QXmppPubSubSubscription> QXmppPubSubIqBase::subscription() const
+std::optional<QXmppPubSubSubscription> PubSubIqBase::subscription() const
{
if (d->subscriptions.isEmpty()) {
return std::nullopt;
@@ -218,7 +222,7 @@ std::optional<QXmppPubSubSubscription> QXmppPubSubIqBase::subscription() const
/// This is a utility function for setSubscriptions(). It can be used for both
/// query types, Subscription and Subscriptions.
///
-void QXmppPubSubIqBase::setSubscription(const std::optional<QXmppPubSubSubscription> &subscription)
+void PubSubIqBase::setSubscription(const std::optional<QXmppPubSubSubscription> &subscription)
{
if (subscription) {
d->subscriptions = { *subscription };
@@ -230,7 +234,7 @@ void QXmppPubSubIqBase::setSubscription(const std::optional<QXmppPubSubSubscript
///
/// Returns the included affiliations.
///
-QVector<QXmppPubSubAffiliation> QXmppPubSubIqBase::affiliations() const
+QVector<QXmppPubSubAffiliation> PubSubIqBase::affiliations() const
{
return d->affiliations;
}
@@ -238,7 +242,7 @@ QVector<QXmppPubSubAffiliation> QXmppPubSubIqBase::affiliations() const
///
/// Sets the included affiliations.
///
-void QXmppPubSubIqBase::setAffiliations(const QVector<QXmppPubSubAffiliation> &affiliations)
+void PubSubIqBase::setAffiliations(const QVector<QXmppPubSubAffiliation> &affiliations)
{
d->affiliations = affiliations;
}
@@ -248,7 +252,7 @@ void QXmppPubSubIqBase::setAffiliations(const QVector<QXmppPubSubAffiliation> &a
///
/// This is only used for queries with type ItemsQuery.
///
-std::optional<uint32_t> QXmppPubSubIqBase::maxItems() const
+std::optional<uint32_t> PubSubIqBase::maxItems() const
{
if (d->maxItems) {
return d->maxItems;
@@ -261,7 +265,7 @@ std::optional<uint32_t> QXmppPubSubIqBase::maxItems() const
///
/// This is only used for queries with type ItemsQuery.
///
-void QXmppPubSubIqBase::setMaxItems(std::optional<uint32_t> maxItems)
+void PubSubIqBase::setMaxItems(std::optional<uint32_t> maxItems)
{
d->maxItems = maxItems.value_or(0);
}
@@ -269,7 +273,7 @@ void QXmppPubSubIqBase::setMaxItems(std::optional<uint32_t> maxItems)
///
/// Returns a data form if the IQ contains one.
///
-std::optional<QXmppDataForm> QXmppPubSubIqBase::dataForm() const
+std::optional<QXmppDataForm> PubSubIqBase::dataForm() const
{
return d->dataForm;
}
@@ -277,7 +281,7 @@ std::optional<QXmppDataForm> QXmppPubSubIqBase::dataForm() const
///
/// Sets a data form (or clears it by setting std::nullopt).
///
-void QXmppPubSubIqBase::setDataForm(const std::optional<QXmppDataForm> &dataForm)
+void PubSubIqBase::setDataForm(const std::optional<QXmppDataForm> &dataForm)
{
d->dataForm = dataForm;
}
@@ -287,7 +291,7 @@ void QXmppPubSubIqBase::setDataForm(const std::optional<QXmppDataForm> &dataForm
///
/// If this value is set the results are incomplete.
///
-std::optional<QXmppResultSetReply> QXmppPubSubIqBase::itemsContinuation() const
+std::optional<QXmppResultSetReply> PubSubIqBase::itemsContinuation() const
{
return d->itemsContinuation;
}
@@ -297,21 +301,20 @@ std::optional<QXmppResultSetReply> QXmppPubSubIqBase::itemsContinuation() const
///
/// If this value is set the results are incomplete.
///
-void QXmppPubSubIqBase::setItemsContinuation(const std::optional<QXmppResultSetReply> &itemsContinuation)
+void PubSubIqBase::setItemsContinuation(const std::optional<QXmppResultSetReply> &itemsContinuation)
{
d->itemsContinuation = itemsContinuation;
}
-/// \cond
-bool QXmppPubSubIqBase::isPubSubIq(const QDomElement &element)
+bool PubSubIqBase::isPubSubIq(const QDomElement &element)
{
// no special requirements for the item / it's payload
- return QXmppPubSubIqBase::isPubSubIq(element, [](const QDomElement &) {
+ return PubSubIqBase::isPubSubIq(element, [](const QDomElement &) {
return true;
});
}
-bool QXmppPubSubIqBase::isPubSubIq(const QDomElement &element, bool (*isItemValid)(const QDomElement &))
+bool PubSubIqBase::isPubSubIq(const QDomElement &element, bool (*isItemValid)(const QDomElement &))
{
// IQs must have only one direct child element.
const auto pubSubElement = element.firstChildElement();
@@ -401,7 +404,7 @@ bool QXmppPubSubIqBase::isPubSubIq(const QDomElement &element, bool (*isItemVali
return true;
}
-void QXmppPubSubIqBase::parseElementFromChild(const QDomElement &element)
+void PubSubIqBase::parseElementFromChild(const QDomElement &element)
{
const auto findChildElement = [](const QDomElement &element, const QString &tag, const QString &namespaceUri) {
for (auto subElement = element.firstChildElement(tag);
@@ -534,7 +537,7 @@ void QXmppPubSubIqBase::parseElementFromChild(const QDomElement &element)
}
}
-void QXmppPubSubIqBase::toXmlElementFromChild(QXmlStreamWriter *writer) const
+void PubSubIqBase::toXmlElementFromChild(QXmlStreamWriter *writer) const
{
writer->writeStartElement(QStringLiteral("pubsub"));
writer->writeDefaultNamespace(queryTypeIsOwnerIq(d->queryType) ? ns_pubsub_owner : ns_pubsub);
@@ -646,9 +649,8 @@ void QXmppPubSubIqBase::toXmlElementFromChild(QXmlStreamWriter *writer) const
}
writer->writeEndElement(); // pubsub
}
-/// \endcond
-std::optional<QXmppPubSubIqBase::QueryType> QXmppPubSubIqBase::queryTypeFromDomElement(const QDomElement &element)
+std::optional<PubSubIqBase::QueryType> PubSubIqBase::queryTypeFromDomElement(const QDomElement &element)
{
QueryType type;
if (auto index = PUBSUB_QUERIES.indexOf(element.tagName()); index != -1) {
@@ -677,7 +679,7 @@ std::optional<QXmppPubSubIqBase::QueryType> QXmppPubSubIqBase::queryTypeFromDomE
}
}
-bool QXmppPubSubIqBase::queryTypeIsOwnerIq(QueryType type)
+bool PubSubIqBase::queryTypeIsOwnerIq(QueryType type)
{
switch (type) {
case OwnerAffiliations:
@@ -702,3 +704,5 @@ bool QXmppPubSubIqBase::queryTypeIsOwnerIq(QueryType type)
}
return false;
}
+
+/// \endcond
diff --git a/src/base/QXmppPubSubIq_p.h b/src/base/QXmppPubSubIq_p.h
index ac33766a..eb5ed43f 100644
--- a/src/base/QXmppPubSubIq_p.h
+++ b/src/base/QXmppPubSubIq_p.h
@@ -20,7 +20,9 @@ class QXmppPubSubSubscription;
class QXmppPubSubAffiliation;
class QXmppResultSetReply;
-class QXMPP_EXPORT QXmppPubSubIqBase : public QXmppIq
+namespace QXmpp::Private {
+
+class QXMPP_EXPORT PubSubIqBase : public QXmppIq
{
public:
/// This enum is used to describe a publish-subscribe query type.
@@ -44,11 +46,11 @@ public:
Unsubscribe,
};
- QXmppPubSubIqBase();
- QXmppPubSubIqBase(const QXmppPubSubIqBase &other);
- ~QXmppPubSubIqBase();
+ PubSubIqBase();
+ PubSubIqBase(const PubSubIqBase &other);
+ ~PubSubIqBase();
- QXmppPubSubIqBase &operator=(const QXmppPubSubIqBase &other);
+ PubSubIqBase &operator=(const PubSubIqBase &other);
QueryType queryType() const;
void setQueryType(QueryType queryType);
@@ -102,7 +104,7 @@ private:
};
template<typename T = QXmppPubSubItem>
-class QXmppPubSubIq : public QXmppPubSubIqBase
+class PubSubIq : public PubSubIqBase
{
public:
QVector<T> items() const;
@@ -121,28 +123,28 @@ private:
};
template<typename T>
-QVector<T> QXmppPubSubIq<T>::items() const
+QVector<T> PubSubIq<T>::items() const
{
return m_items;
}
template<typename T>
-void QXmppPubSubIq<T>::setItems(const QVector<T> &items)
+void PubSubIq<T>::setItems(const QVector<T> &items)
{
m_items = items;
}
template<typename T>
-bool QXmppPubSubIq<T>::isPubSubIq(const QDomElement &element)
+bool PubSubIq<T>::isPubSubIq(const QDomElement &element)
{
- return QXmppPubSubIqBase::isPubSubIq(element, [](const QDomElement &item) -> bool {
+ return PubSubIqBase::isPubSubIq(element, [](const QDomElement &item) -> bool {
return T::isItem(item);
});
}
/// \cond
template<typename T>
-void QXmppPubSubIq<T>::parseItems(const QDomElement &queryElement)
+void PubSubIq<T>::parseItems(const QDomElement &queryElement)
{
for (auto childElement = queryElement.firstChildElement(QStringLiteral("item"));
!childElement.isNull();
@@ -154,7 +156,7 @@ void QXmppPubSubIq<T>::parseItems(const QDomElement &queryElement)
}
template<typename T>
-void QXmppPubSubIq<T>::serializeItems(QXmlStreamWriter *writer) const
+void PubSubIq<T>::serializeItems(QXmlStreamWriter *writer) const
{
for (const auto &item : std::as_const(m_items)) {
item.toXml(writer);
@@ -162,4 +164,6 @@ void QXmppPubSubIq<T>::serializeItems(QXmlStreamWriter *writer) const
}
/// \endcond
+} // namespace QXmpp::Private
+
#endif // QXMPPPUBSUBIQ_H
diff --git a/src/client/QXmppPubSubManager.cpp b/src/client/QXmppPubSubManager.cpp
index 7d21db80..07dbff35 100644
--- a/src/client/QXmppPubSubManager.cpp
+++ b/src/client/QXmppPubSubManager.cpp
@@ -293,9 +293,9 @@ QFuture<QXmppPubSubManager::NodesResult> QXmppPubSubManager::fetchNodes(const QS
///
auto QXmppPubSubManager::createNode(const QString &jid, const QString &nodeName) -> QFuture<Result>
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
- request.setQueryType(QXmppPubSubIq<>::Create);
+ request.setQueryType(PubSubIq<>::Create);
request.setQueryNode(nodeName);
request.setTo(jid);
@@ -316,9 +316,9 @@ auto QXmppPubSubManager::createNode(const QString &jid, const QString &nodeName)
///
auto QXmppPubSubManager::createNode(const QString &jid, const QString &nodeName, const QXmppPubSubNodeConfig &config) -> QFuture<Result>
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
- request.setQueryType(QXmppPubSubIq<>::Create);
+ request.setQueryType(PubSubIq<>::Create);
request.setQueryNode(nodeName);
request.setTo(jid);
request.setDataForm(config);
@@ -337,13 +337,13 @@ auto QXmppPubSubManager::createNode(const QString &jid, const QString &nodeName,
///
QFuture<QXmppPubSubManager::InstantNodeResult> QXmppPubSubManager::createInstantNode(const QString &jid)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
- request.setQueryType(QXmppPubSubIq<>::Create);
+ request.setQueryType(PubSubIq<>::Create);
request.setTo(jid);
return chainIq(client()->sendIq(std::move(request)), this,
- [](const QXmppPubSubIq<> &iq) -> InstantNodeResult {
+ [](const PubSubIq<> &iq) -> InstantNodeResult {
return iq.queryNode();
});
}
@@ -360,14 +360,14 @@ QFuture<QXmppPubSubManager::InstantNodeResult> QXmppPubSubManager::createInstant
///
auto QXmppPubSubManager::createInstantNode(const QString &jid, const QXmppPubSubNodeConfig &config) -> QFuture<InstantNodeResult>
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
- request.setQueryType(QXmppPubSubIq<>::Create);
+ request.setQueryType(PubSubIq<>::Create);
request.setTo(jid);
request.setDataForm(config);
return chainIq(client()->sendIq(std::move(request)), this,
- [](const QXmppPubSubIq<> &iq) -> InstantNodeResult {
+ [](const PubSubIq<> &iq) -> InstantNodeResult {
return iq.queryNode();
});
}
@@ -381,9 +381,9 @@ auto QXmppPubSubManager::createInstantNode(const QString &jid, const QXmppPubSub
///
auto QXmppPubSubManager::deleteNode(const QString &jid, const QString &nodeName) -> QFuture<Result>
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
- request.setQueryType(QXmppPubSubIq<>::Delete);
+ request.setQueryType(PubSubIq<>::Delete);
request.setQueryNode(nodeName);
request.setTo(jid);
@@ -430,9 +430,9 @@ QFuture<QXmppPubSubManager::ItemIdsResult> QXmppPubSubManager::requestItemIds(co
///
auto QXmppPubSubManager::retractItem(const QString &jid, const QString &nodeName, const QString &itemId) -> QFuture<Result>
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
- request.setQueryType(QXmppPubSubIq<>::Retract);
+ request.setQueryType(PubSubIq<>::Retract);
request.setQueryNode(nodeName);
request.setItems({ QXmppPubSubItem(itemId) });
request.setTo(jid);
@@ -462,9 +462,9 @@ auto QXmppPubSubManager::retractItem(const QString &jid, const QString &nodeName
///
auto QXmppPubSubManager::purgeItems(const QString &jid, const QString &nodeName) -> QFuture<Result>
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
- request.setQueryType(QXmppPubSubIq<>::Purge);
+ request.setQueryType(PubSubIq<>::Purge);
request.setQueryNode(nodeName);
request.setTo(jid);
@@ -491,14 +491,14 @@ QFuture<QXmppPubSubManager::SubscriptionsResult> QXmppPubSubManager::requestSubs
///
QFuture<QXmppPubSubManager::SubscriptionsResult> QXmppPubSubManager::requestSubscriptions(const QString &jid, const QString &nodeName)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Get);
request.setTo(jid);
- request.setQueryType(QXmppPubSubIq<>::Subscriptions);
+ request.setQueryType(PubSubIq<>::Subscriptions);
request.setQueryNode(nodeName);
return chainIq(client()->sendIq(std::move(request)), this,
- [](const QXmppPubSubIq<> &iq) -> SubscriptionsResult {
+ [](const PubSubIq<> &iq) -> SubscriptionsResult {
return iq.subscriptions();
});
}
@@ -515,14 +515,14 @@ QFuture<QXmppPubSubManager::SubscriptionsResult> QXmppPubSubManager::requestSubs
///
QFuture<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestNodeAffiliations(const QString &jid, const QString &nodeName)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Get);
request.setTo(jid);
- request.setQueryType(QXmppPubSubIq<>::OwnerAffiliations);
+ request.setQueryType(PubSubIq<>::OwnerAffiliations);
request.setQueryNode(nodeName);
return chainIq(client()->sendIq(std::move(request)), this,
- [](const QXmppPubSubIq<> &iq) -> AffiliationsResult {
+ [](const PubSubIq<> &iq) -> AffiliationsResult {
return iq.affiliations();
});
}
@@ -547,14 +547,14 @@ QFuture<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestAffil
///
QFuture<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestAffiliations(const QString &jid, const QString &nodeName)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Get);
request.setTo(jid);
- request.setQueryType(QXmppPubSubIq<>::Affiliations);
+ request.setQueryType(PubSubIq<>::Affiliations);
request.setQueryNode(nodeName);
return chainIq(client()->sendIq(std::move(request)), this,
- [](const QXmppPubSubIq<> &iq) -> AffiliationsResult {
+ [](const PubSubIq<> &iq) -> AffiliationsResult {
return iq.affiliations();
});
}
@@ -581,15 +581,15 @@ QFuture<QXmppPubSubManager::OptionsResult> QXmppPubSubManager::requestSubscribeO
///
QFuture<QXmppPubSubManager::OptionsResult> QXmppPubSubManager::requestSubscribeOptions(const QString &service, const QString &nodeName, const QString &subscriberJid)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Get);
request.setTo(service);
- request.setQueryType(QXmppPubSubIq<>::Options);
+ request.setQueryType(PubSubIq<>::Options);
request.setQueryNode(nodeName);
request.setQueryJid(subscriberJid);
return chainIq(client()->sendIq(std::move(request)), this,
- [](const QXmppPubSubIq<> &iq) -> OptionsResult {
+ [](const PubSubIq<> &iq) -> OptionsResult {
if (const auto form = iq.dataForm()) {
if (const auto options = QXmppPubSubSubscribeOptions::fromDataForm(*form)) {
return *options;
@@ -628,10 +628,10 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::setSubscribeOptions(cons
///
QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options, const QString &subscriberJid)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
request.setTo(service);
- request.setQueryType(QXmppPubSubIq<>::Options);
+ request.setQueryType(PubSubIq<>::Options);
request.setDataForm(options);
request.setQueryNode(nodeName);
request.setQueryJid(subscriberJid);
@@ -656,14 +656,14 @@ QFuture<QXmppPubSubManager::NodeConfigResult> QXmppPubSubManager::requestNodeCon
{
using Error = QXmppStanza::Error;
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Get);
request.setTo(service);
request.setQueryNode(nodeName);
- request.setQueryType(QXmppPubSubIq<>::Configure);
+ request.setQueryType(PubSubIq<>::Configure);
return chainIq(client()->sendIq(std::move(request)), this,
- [](QXmppPubSubIq<> &&iq) -> NodeConfigResult {
+ [](PubSubIq<> &&iq) -> NodeConfigResult {
if (const auto dataForm = iq.dataForm()) {
if (const auto config = QXmppPubSubNodeConfig::fromDataForm(*dataForm)) {
return *config;
@@ -689,11 +689,11 @@ QFuture<QXmppPubSubManager::NodeConfigResult> QXmppPubSubManager::requestNodeCon
///
QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
request.setTo(service);
request.setQueryNode(nodeName);
- request.setQueryType(QXmppPubSubIq<>::Configure);
+ request.setQueryType(PubSubIq<>::Configure);
request.setDataForm(config);
return client()->sendGenericIq(std::move(request));
}
@@ -710,11 +710,11 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::configureNode(const QStr
///
QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::cancelNodeConfiguration(const QString &service, const QString &nodeName)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
request.setTo(service);
request.setQueryNode(nodeName);
- request.setQueryType(QXmppPubSubIq<>::Configure);
+ request.setQueryType(PubSubIq<>::Configure);
request.setDataForm(QXmppDataForm(QXmppDataForm::Cancel));
return client()->sendGenericIq(std::move(request));
}
@@ -730,11 +730,11 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::cancelNodeConfiguration(
///
QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
request.setTo(serviceJid);
request.setQueryNode(nodeName);
- request.setQueryType(QXmppPubSubIq<>::Subscribe);
+ request.setQueryType(PubSubIq<>::Subscribe);
request.setQueryJid(subscriberJid);
return client()->sendGenericIq(std::move(request));
}
@@ -750,11 +750,11 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::subscribeToNode(const QS
///
QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setType(QXmppIq::Set);
request.setTo(serviceJid);
request.setQueryNode(nodeName);
- request.setQueryType(QXmppPubSubIq<>::Unsubscribe);
+ request.setQueryType(PubSubIq<>::Unsubscribe);
request.setQueryJid(subscriberJid);
return client()->sendGenericIq(std::move(request));
}
@@ -1001,12 +1001,12 @@ bool QXmppPubSubManager::handleStanza(const QDomElement &element)
return false;
}
-QXmppPubSubIq<> QXmppPubSubManager::requestItemsIq(const QString &jid, const QString &nodeName, const QStringList &itemIds)
+PubSubIq<> QXmppPubSubManager::requestItemsIq(const QString &jid, const QString &nodeName, const QStringList &itemIds)
{
- QXmppPubSubIq request;
+ PubSubIq request;
request.setTo(jid);
request.setType(QXmppIq::Get);
- request.setQueryType(QXmppPubSubIqBase::Items);
+ request.setQueryType(PubSubIqBase::Items);
request.setQueryNode(nodeName);
if (!itemIds.isEmpty()) {
@@ -1020,13 +1020,13 @@ QXmppPubSubIq<> QXmppPubSubManager::requestItemsIq(const QString &jid, const QSt
return request;
}
-auto QXmppPubSubManager::publishItem(QXmppPubSubIqBase &&request) -> QFuture<PublishItemResult>
+auto QXmppPubSubManager::publishItem(PubSubIqBase &&request) -> QFuture<PublishItemResult>
{
request.setType(QXmppIq::Set);
- request.setQueryType(QXmppPubSubIqBase::Publish);
+ request.setQueryType(PubSubIqBase::Publish);
return chainIq(client()->sendIq(std::move(request)), this,
- [](const QXmppPubSubIq<> &iq) -> PublishItemResult {
+ [](const PubSubIq<> &iq) -> PublishItemResult {
if (!iq.items().isEmpty()) {
return iq.items().constFirst().id();
} else {
@@ -1035,13 +1035,13 @@ auto QXmppPubSubManager::publishItem(QXmppPubSubIqBase &&request) -> QFuture<Pub
});
}
-auto QXmppPubSubManager::publishItems(QXmppPubSubIqBase &&request) -> QFuture<PublishItemsResult>
+auto QXmppPubSubManager::publishItems(PubSubIqBase &&request) -> QFuture<PublishItemsResult>
{
request.setType(QXmppIq::Set);
- request.setQueryType(QXmppPubSubIqBase::Publish);
+ request.setQueryType(PubSubIqBase::Publish);
return chainIq(client()->sendIq(std::move(request)), this,
- [](const QXmppPubSubIq<> &iq) -> PublishItemsResult {
+ [](const PubSubIq<> &iq) -> PublishItemsResult {
const auto itemToId = [](const QXmppPubSubItem &item) {
return item.id();
};
diff --git a/src/client/QXmppPubSubManager.h b/src/client/QXmppPubSubManager.h
index 912de5d7..b3e99552 100644
--- a/src/client/QXmppPubSubManager.h
+++ b/src/client/QXmppPubSubManager.h
@@ -153,9 +153,9 @@ public:
/// \endcond
private:
- QFuture<PublishItemResult> publishItem(QXmppPubSubIqBase &&iq);
- QFuture<PublishItemsResult> publishItems(QXmppPubSubIqBase &&iq);
- static QXmppPubSubIq<> requestItemsIq(const QString &jid, const QString &nodeName, const QStringList &itemIds);
+ QFuture<PublishItemResult> publishItem(QXmpp::Private::PubSubIqBase &&iq);
+ QFuture<PublishItemsResult> publishItems(QXmpp::Private::PubSubIqBase &&iq);
+ static QXmpp::Private::PubSubIq<> requestItemsIq(const QString &jid, const QString &nodeName, const QStringList &itemIds);
// We may need a d-ptr in the future.
void *d = nullptr;
@@ -178,7 +178,7 @@ QFuture<QXmppPubSubManager::ItemResult<T>> QXmppPubSubManager::requestItem(const
using namespace QXmpp::Private;
using Error = QXmppStanza::Error;
return chainIq(client()->sendIq(requestItemsIq(jid, nodeName, { itemId })), this,
- [](QXmppPubSubIq<T> &&iq) -> ItemResult<T> {
+ [](PubSubIq<T> &&iq) -> ItemResult<T> {
if (!iq.items().isEmpty()) {
return iq.items().constFirst();
}
@@ -235,7 +235,7 @@ QFuture<QXmppPubSubManager::ItemsResult<T>> QXmppPubSubManager::requestItems(con
{
using namespace QXmpp::Private;
return chainIq(client()->sendIq(requestItemsIq(jid, nodeName, itemIds)), this,
- [](QXmppPubSubIq<T> &&iq) -> ItemsResult<T> {
+ [](PubSubIq<T> &&iq) -> ItemsResult<T> {
return Items<T> {
iq.items(),
iq.itemsContinuation(),
@@ -259,7 +259,7 @@ QFuture<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishItem(c
const QString &nodeName,
const T &item)
{
- QXmppPubSubIq<T> request;
+ QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
request.setItems({ item });
request.setQueryNode(nodeName);
@@ -284,7 +284,7 @@ QFuture<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishItem(c
const T &item,
const QXmppPubSubPublishOptions &publishOptions)
{
- QXmppPubSubIq<T> request;
+ QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
request.setItems({ item });
request.setQueryNode(nodeName);
@@ -305,7 +305,7 @@ QFuture<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishItems
const QString &nodeName,
const QVector<T> &items)
{
- QXmppPubSubIq<T> request;
+ QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
request.setItems(items);
request.setQueryNode(nodeName);
@@ -327,7 +327,7 @@ QFuture<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishItems
const QVector<T> &items,
const QXmppPubSubPublishOptions &publishOptions)
{
- QXmppPubSubIq<T> request;
+ QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
request.setItems(items);
request.setQueryNode(nodeName);
diff --git a/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp b/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp
index 20898814..809711a9 100644
--- a/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp
+++ b/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp
@@ -12,6 +12,8 @@
#include "util.h"
#include <QObject>
+using namespace QXmpp::Private;
+
class tst_QXmppPubSubIq : public QObject
{
Q_OBJECT
@@ -45,23 +47,23 @@ void tst_QXmppPubSubIq::testItems()
"</pubsub>"
"</iq>");
- QXmppPubSubIq iq;
+ PubSubIq iq;
parsePacket(iq, xml);
QCOMPARE(iq.id(), QLatin1String("items1"));
QCOMPARE(iq.to(), QLatin1String("pubsub.shakespeare.lit"));
QCOMPARE(iq.from(), QLatin1String("francisco@denmark.lit/barracks"));
QCOMPARE(iq.type(), QXmppIq::Get);
- QCOMPARE(iq.queryType(), QXmppPubSubIq<>::Items);
+ QCOMPARE(iq.queryType(), PubSubIq<>::Items);
QCOMPARE(iq.queryJid(), QString());
QCOMPARE(iq.queryNode(), QLatin1String("storage:bookmarks"));
serializePacket(iq, xml);
- iq = QXmppPubSubIq();
+ iq = PubSubIq();
iq.setId(QLatin1String("items1"));
iq.setTo(QLatin1String("pubsub.shakespeare.lit"));
iq.setFrom(QLatin1String("francisco@denmark.lit/barracks"));
iq.setType(QXmppIq::Get);
- iq.setQueryType(QXmppPubSubIq<>::Items);
+ iq.setQueryType(PubSubIq<>::Items);
iq.setQueryJid({});
iq.setQueryNode(QLatin1String("storage:bookmarks"));
serializePacket(iq, xml);
@@ -87,13 +89,13 @@ void tst_QXmppPubSubIq::testItemsResponse()
"</pubsub>"
"</iq>");
- QXmppPubSubIq iq;
+ PubSubIq iq;
parsePacket(iq, xml);
QCOMPARE(iq.id(), QLatin1String("items1"));
QCOMPARE(iq.to(), QLatin1String("francisco@denmark.lit/barracks"));
QCOMPARE(iq.from(), QLatin1String("pubsub.shakespeare.lit"));
QCOMPARE(iq.type(), QXmppIq::Result);
- QCOMPARE(iq.queryType(), QXmppPubSubIq<>::Items);
+ QCOMPARE(iq.queryType(), PubSubIq<>::Items);
QCOMPARE(iq.queryJid(), QString());
QCOMPARE(iq.queryNode(), QLatin1String("storage:bookmarks"));
QVERIFY(iq.itemsContinuation().has_value());
@@ -113,23 +115,23 @@ void tst_QXmppPubSubIq::testCreateNode()
"</pubsub>"
"</iq>");
- QXmppPubSubIq iq;
+ PubSubIq iq;
parsePacket(iq, xml);
QCOMPARE(iq.id(), QString("create1"));
QCOMPARE(iq.to(), QLatin1String("pubsub.shakespeare.lit"));
QCOMPARE(iq.from(), QLatin1String("hamlet@denmark.lit/elsinore"));
QCOMPARE(iq.type(), QXmppIq::Set);
- QCOMPARE(iq.queryType(), QXmppPubSubIq<>::Create);
+ QCOMPARE(iq.queryType(), PubSubIq<>::Create);
QCOMPARE(iq.queryJid(), QString());
QCOMPARE(iq.queryNode(), QLatin1String("princely_musings"));
serializePacket(iq, xml);
- iq = QXmppPubSubIq();
+ iq = PubSubIq();
iq.setId(QLatin1String("create1"));
iq.setTo(QLatin1String("pubsub.shakespeare.lit"));
iq.setFrom(QLatin1String("hamlet@denmark.lit/elsinore"));
iq.setType(QXmppIq::Set);
- iq.setQueryType(QXmppPubSubIq<>::Create);
+ iq.setQueryType(PubSubIq<>::Create);
iq.setQueryNode(QLatin1String("princely_musings"));
serializePacket(iq, xml);
}
@@ -143,23 +145,23 @@ void tst_QXmppPubSubIq::testDeleteNode()
"</pubsub>"
"</iq>");
- QXmppPubSubIq iq;
+ PubSubIq iq;
parsePacket(iq, xml);
QCOMPARE(iq.id(), QString("delete1"));
QCOMPARE(iq.to(), QLatin1String("pubsub.shakespeare.lit"));
QCOMPARE(iq.from(), QLatin1String("hamlet@denmark.lit/elsinore"));
QCOMPARE(iq.type(), QXmppIq::Set);
- QCOMPARE(iq.queryType(), QXmppPubSubIq<>::Delete);
+ QCOMPARE(iq.queryType(), PubSubIq<>::Delete);
QCOMPARE(iq.queryJid(), QString());
QCOMPARE(iq.queryNode(), QLatin1String("princely_musings"));
serializePacket(iq, xml);
- iq = QXmppPubSubIq<>();
+ iq = PubSubIq<>();
iq.setId(QLatin1String("delete1"));
iq.setTo(QLatin1String("pubsub.shakespeare.lit"));
iq.setFrom(QLatin1String("hamlet@denmark.lit/elsinore"));
iq.setType(QXmppIq::Set);
- iq.setQueryType(QXmppPubSubIq<>::Delete);
+ iq.setQueryType(PubSubIq<>::Delete);
iq.setQueryNode(QLatin1String("princely_musings"));
serializePacket(iq, xml);
}
@@ -179,13 +181,13 @@ void tst_QXmppPubSubIq::testPublish()
"</pubsub>"
"</iq>");
- QXmppPubSubIq<> iq;
+ PubSubIq<> iq;
parsePacket(iq, xml);
QCOMPARE(iq.id(), QLatin1String("items1"));
QCOMPARE(iq.to(), QLatin1String("pubsub.shakespeare.lit"));
QCOMPARE(iq.from(), QLatin1String("francisco@denmark.lit/barracks"));
QCOMPARE(iq.type(), QXmppIq::Result);
- QCOMPARE(iq.queryType(), QXmppPubSubIq<>::Publish);
+ QCOMPARE(iq.queryType(), PubSubIq<>::Publish);
QCOMPARE(iq.queryJid(), QString());
QCOMPARE(iq.queryNode(), QLatin1String("storage:bookmarks"));
serializePacket(iq, xml);
@@ -193,12 +195,12 @@ void tst_QXmppPubSubIq::testPublish()
// serialize using setters
QXmppPubSubItem item(QStringLiteral("current"));
- iq = QXmppPubSubIq();
+ iq = PubSubIq();
iq.setId(QLatin1String("items1"));
iq.setTo(QLatin1String("pubsub.shakespeare.lit"));
iq.setFrom(QLatin1String("francisco@denmark.lit/barracks"));
iq.setType(QXmppIq::Result);
- iq.setQueryType(QXmppPubSubIq<>::Publish);
+ iq.setQueryType(PubSubIq<>::Publish);
iq.setQueryJid({});
iq.setQueryNode(QLatin1String("storage:bookmarks"));
iq.setItems({ item });
@@ -221,25 +223,25 @@ void tst_QXmppPubSubIq::testRetractItem()
"</pubsub>"
"</iq>");
- QXmppPubSubIq<> iq;
+ PubSubIq<> iq;
parsePacket(iq, xml);
QCOMPARE(iq.id(), QString("retract1"));
QCOMPARE(iq.to(), QLatin1String("pubsub.shakespeare.lit"));
QCOMPARE(iq.from(), QLatin1String("hamlet@denmark.lit/elsinore"));
QCOMPARE(iq.type(), QXmppIq::Set);
- QCOMPARE(iq.queryType(), QXmppPubSubIq<>::Retract);
+ QCOMPARE(iq.queryType(), PubSubIq<>::Retract);
QCOMPARE(iq.queryJid(), QString());
QCOMPARE(iq.queryNode(), QLatin1String("princely_musings"));
QCOMPARE(iq.items().size(), 1);
QCOMPARE(iq.items().first().id(), QStringLiteral("ae890ac52d0df67ed7cfdf51b644e901"));
serializePacket(iq, xml);
- iq = QXmppPubSubIq();
+ iq = PubSubIq();
iq.setId(QLatin1String("retract1"));
iq.setTo(QLatin1String("pubsub.shakespeare.lit"));
iq.setFrom(QLatin1String("hamlet@denmark.lit/elsinore"));
iq.setType(QXmppIq::Set);
- iq.setQueryType(QXmppPubSubIq<>::Retract);
+ iq.setQueryType(PubSubIq<>::Retract);
iq.setQueryJid({});
iq.setQueryNode(QLatin1String("princely_musings"));
@@ -263,13 +265,13 @@ void tst_QXmppPubSubIq::testSubscribe()
"</pubsub>"
"</iq>");
- QXmppPubSubIq iq;
+ PubSubIq iq;
parsePacket(iq, xml);
QCOMPARE(iq.id(), QLatin1String("sub1"));
QCOMPARE(iq.to(), QLatin1String("pubsub.shakespeare.lit"));
QCOMPARE(iq.from(), QLatin1String("francisco@denmark.lit/barracks"));
QCOMPARE(iq.type(), QXmppIq::Set);
- QCOMPARE(iq.queryType(), QXmppPubSubIq<>::Subscribe);
+ QCOMPARE(iq.queryType(), PubSubIq<>::Subscribe);
QCOMPARE(iq.queryJid(), QLatin1String("francisco@denmark.lit"));
QCOMPARE(iq.queryNode(), QLatin1String("princely_musings"));
serializePacket(iq, xml);
@@ -290,24 +292,24 @@ void tst_QXmppPubSubIq::testSubscription()
"</pubsub>"
"</iq>");
- QXmppPubSubIq iq;
+ PubSubIq iq;
parsePacket(iq, xml);
QCOMPARE(iq.id(), QString("sub1"));
QCOMPARE(iq.to(), QString("francisco@denmark.lit/barracks"));
QCOMPARE(iq.from(), QString("pubsub.shakespeare.lit"));
QCOMPARE(iq.type(), QXmppIq::Result);
- QCOMPARE(iq.queryType(), QXmppPubSubIq<>::Subscription);
+ QCOMPARE(iq.queryType(), PubSubIq<>::Subscription);
QCOMPARE(iq.subscription()->jid(), QString("francisco@denmark.lit"));
QCOMPARE(iq.subscription()->node(), QString("princely_musings"));
QCOMPARE(iq.subscription()->subId(), QStringLiteral("ba49252aaa4f5d320c24d3766f0bdcade78c78d3"));
serializePacket(iq, xml);
- iq = QXmppPubSubIq();
+ iq = PubSubIq();
iq.setId("sub1");
iq.setTo("francisco@denmark.lit/barracks");
iq.setFrom("pubsub.shakespeare.lit");
iq.setType(QXmppIq::Result);
- iq.setQueryType(QXmppPubSubIq<>::Subscription);
+ iq.setQueryType(PubSubIq<>::Subscription);
iq.setSubscription(QXmppPubSubSubscription(
"francisco@denmark.lit",
"princely_musings",
@@ -328,13 +330,13 @@ void tst_QXmppPubSubIq::testSubscriptions()
"</pubsub>"
"</iq>");
- QXmppPubSubIq iq;
+ PubSubIq iq;
parsePacket(iq, xml);
QCOMPARE(iq.id(), QLatin1String("subscriptions1"));
QCOMPARE(iq.to(), QLatin1String("pubsub.shakespeare.lit"));
QCOMPARE(iq.from(), QLatin1String("francisco@denmark.lit/barracks"));
QCOMPARE(iq.type(), QXmppIq::Get);
- QCOMPARE(iq.queryType(), QXmppPubSubIq<>::Subscriptions);
+ QCOMPARE(iq.queryType(), PubSubIq<>::Subscriptions);
QCOMPARE(iq.queryJid(), QString());
QCOMPARE(iq.queryNode(), QString());
serializePacket(iq, xml);
@@ -375,7 +377,7 @@ void tst_QXmppPubSubIq::testIsPubSubIq()
QVERIFY(doc.setContent(xml, true));
QDomElement element = doc.documentElement();
- QCOMPARE(QXmppPubSubIq<>::isPubSubIq(element), isValid);
+ QCOMPARE(PubSubIq<>::isPubSubIq(element), isValid);
}
void tst_QXmppPubSubIq::testCustomItem()
@@ -392,13 +394,13 @@ void tst_QXmppPubSubIq::testCustomItem()
// test isPubSubIq also checks item validity
TestItem::isItemCalled = false;
- QVERIFY(QXmppPubSubIq<TestItem>::isPubSubIq(xmlToDom(xml)));
+ QVERIFY(PubSubIq<TestItem>::isPubSubIq(xmlToDom(xml)));
QVERIFY(TestItem::isItemCalled);
- QXmppPubSubIq<TestItem> iq;
+ PubSubIq<TestItem> iq;
parsePacket(iq, xml);
QCOMPARE(iq.type(), QXmppIq::Result);
- QCOMPARE(iq.queryType(), QXmppPubSubIq<>::Items);
+ QCOMPARE(iq.queryType(), PubSubIq<>::Items);
QCOMPARE(iq.queryJid(), QString());
QCOMPARE(iq.queryNode(), QStringLiteral("blah"));
QCOMPARE(iq.items().size(), 2);
@@ -414,10 +416,10 @@ void tst_QXmppPubSubIq::testCustomItem()
serializePacket(iq, xml);
- iq = QXmppPubSubIq<TestItem>();
+ iq = PubSubIq<TestItem>();
iq.setId("a1");
iq.setType(QXmppIq::Result);
- iq.setQueryType(QXmppPubSubIq<>::Items);
+ iq.setQueryType(PubSubIq<>::Items);
iq.setQueryNode("blah");
iq.setItems({ TestItem("42"), TestItem("23") });
serializePacket(iq, xml);
diff --git a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp
index 37e83c1e..fc7b50a2 100644
--- a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp
+++ b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp
@@ -18,7 +18,7 @@
#include "util.h"
#include <QObject>
-Q_DECLARE_METATYPE(QXmppPubSubIq<>);
+Q_DECLARE_METATYPE(QXmpp::Private::PubSubIq<>);
Q_DECLARE_METATYPE(std::optional<QXmppPubSubPublishOptions>);
using PSManager = QXmppPubSubManager;