forked from blue/squawk
75 lines
2.0 KiB
C++
75 lines
2.0 KiB
C++
/*
|
|
* Created by victoria on 2021-05-12.
|
|
*/
|
|
|
|
#include "qxmppfactories.h"
|
|
|
|
#include <QDebug>
|
|
|
|
bool QXmpp::Factories::elementMatches(const QXmppElement &element,
|
|
const QString &tagName,
|
|
const QString &xmlns) {
|
|
if (element.tagName() != tagName) {
|
|
qWarning() << "tag name: expected = " << tagName
|
|
<< ", got = " << element.tagName();
|
|
return false;
|
|
}
|
|
|
|
if (!xmlns.isEmpty() && element.attribute("xmlns") != xmlns) {
|
|
qWarning() << "xmlns: expected = " << xmlns
|
|
<< ", got = " << element.attribute("xmlns");
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
QXmppElement QXmpp::Factories::createElement(const QString &tagName,
|
|
const QString &xmlns) {
|
|
QXmppElement el{};
|
|
el.setTagName(tagName);
|
|
|
|
if (!xmlns.isEmpty())
|
|
el.setAttribute("xmlns", xmlns);
|
|
|
|
return el;
|
|
}
|
|
|
|
QXmppElement QXmpp::Factories::createValue(const QString &value) {
|
|
auto el = createElement("value");
|
|
el.setValue(value);
|
|
|
|
return el;
|
|
}
|
|
|
|
QXmppElement QXmpp::Factories::createField(const QString &key,
|
|
const QString &value, bool hidden) {
|
|
auto field = createElement("field");
|
|
field.setAttribute("var", key);
|
|
if (hidden)
|
|
field.setAttribute("type", "hidden");
|
|
field.appendChild(createValue(value));
|
|
|
|
return field;
|
|
}
|
|
|
|
QXmppElement
|
|
QXmpp::Factories::createOpenPublishOptions(const QString &maxItems) {
|
|
auto formType = createField(
|
|
"FORM_TYPE", "http://jabber.org/protocol/pubsub#publish-options", true);
|
|
auto accessModel = createField("pubsub#access_model", "open");
|
|
|
|
auto x = createElement("x", "jabber:x:data");
|
|
x.setAttribute("type", "submit");
|
|
|
|
x.appendChild(formType);
|
|
x.appendChild(accessModel);
|
|
|
|
if (!maxItems.isEmpty())
|
|
x.appendChild(createField("pubsub#max_items", maxItems));
|
|
|
|
auto publishOptions = createElement("publish-options");
|
|
publishOptions.appendChild(x);
|
|
|
|
return publishOptions;
|
|
} |