aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppPubSubIq.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2019-12-06 23:47:54 +0100
committerLNJ <lnj@kaidan.im>2019-12-08 23:08:44 +0100
commitd40b65c144a8f7042299bdcc387494ae01a60a46 (patch)
tree8f261fc1ebd816145c080b130a208f33e3aa2087 /src/base/QXmppPubSubIq.cpp
parente286527c1974ac334811aee35f0fe33dcace44d5 (diff)
downloadqxmpp-d40b65c144a8f7042299bdcc387494ae01a60a46.tar.gz
Refactor QXmppPubSubIq and add missing tests
Diffstat (limited to 'src/base/QXmppPubSubIq.cpp')
-rw-r--r--src/base/QXmppPubSubIq.cpp49
1 files changed, 24 insertions, 25 deletions
diff --git a/src/base/QXmppPubSubIq.cpp b/src/base/QXmppPubSubIq.cpp
index 6dd485dd..5e742845 100644
--- a/src/base/QXmppPubSubIq.cpp
+++ b/src/base/QXmppPubSubIq.cpp
@@ -29,23 +29,23 @@
#include "QXmppConstants_p.h"
#include "QXmppUtils.h"
-static const char *ns_pubsub = "http://jabber.org/protocol/pubsub";
-
-static const char *pubsub_queries[] = {
- "affiliations",
- "default",
- "items",
- "publish",
- "retract",
- "subscribe",
- "subscription",
- "subscriptions",
- "unsubscribe",
+static const QStringList PUBSUB_QUERIES = {
+ QStringLiteral("affiliations"),
+ QStringLiteral("default"),
+ QStringLiteral("items"),
+ QStringLiteral("publish"),
+ QStringLiteral("retract"),
+ QStringLiteral("subscribe"),
+ QStringLiteral("subscription"),
+ QStringLiteral("subscriptions"),
+ QStringLiteral("unsubscribe"),
};
class QXmppPubSubIqPrivate : public QSharedData
{
public:
+ QXmppPubSubIqPrivate();
+
QXmppPubSubIq::QueryType queryType;
QString queryJid;
QString queryNode;
@@ -54,6 +54,11 @@ public:
QString subscriptionType;
};
+QXmppPubSubIqPrivate::QXmppPubSubIqPrivate()
+ : queryType(QXmppPubSubIq::ItemsQuery)
+{
+}
+
QXmppPubSubIq::QXmppPubSubIq()
: d(new QXmppPubSubIqPrivate)
{
@@ -148,8 +153,7 @@ void QXmppPubSubIq::setItems(const QList<QXmppPubSubItem> &items)
/// \cond
bool QXmppPubSubIq::isPubSubIq(const QDomElement &element)
{
- const QDomElement pubSubElement = element.firstChildElement("pubsub");
- return pubSubElement.namespaceURI() == ns_pubsub;
+ return element.firstChildElement("pubsub").namespaceURI() == ns_pubsub;
}
void QXmppPubSubIq::parseElementFromChild(const QDomElement &element)
@@ -160,21 +164,16 @@ void QXmppPubSubIq::parseElementFromChild(const QDomElement &element)
// determine query type
const QString tagName = queryElement.tagName();
- for (int i = ItemsQuery; i <= SubscriptionsQuery; i++)
- {
- if (tagName == pubsub_queries[i])
- {
- d->queryType = static_cast<QueryType>(i);
- break;
- }
- }
+ int queryType = PUBSUB_QUERIES.indexOf(queryElement.tagName());
+ if (queryType > -1)
+ d->queryType = QueryType(queryType);
+
d->queryJid = queryElement.attribute("jid");
d->queryNode = queryElement.attribute("node");
// parse contents
QDomElement childElement;
- switch (d->queryType)
- {
+ switch (d->queryType) {
case QXmppPubSubIq::ItemsQuery:
case QXmppPubSubIq::PublishQuery:
case QXmppPubSubIq::RetractQuery:
@@ -202,7 +201,7 @@ void QXmppPubSubIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
writer->writeAttribute("xmlns", ns_pubsub);
// write query type
- writer->writeStartElement(pubsub_queries[d->queryType]);
+ writer->writeStartElement(PUBSUB_QUERIES.at(d->queryType));
helperToXmlAddAttribute(writer, "jid", d->queryJid);
helperToXmlAddAttribute(writer, "node", d->queryNode);