2019-12-04 18:32:57 +01:00

85 lines
2.3 KiB
C++

#include "token.h"
#include <QJsonArray>
#include <qjsondocument.h>
#include <utility>
Token::~Token()
= default;
QByteArray Token::tokensToColnodJson(const QHash<QString, std::shared_ptr<Token>> &tokens)
{
QJsonObject items;
QJsonArray jsonTokens;
for (const auto& token : tokens)
{
jsonTokens.push_back(QJsonValue(QJsonDocument::fromJson(token->jsonData()).object()));
}
items.insert("items", jsonTokens);
QJsonDocument doc;
doc.setObject(items);
return doc.toJson();
}
QByteArray Token::jsonData(const QSet<QString> &filters) const
{
auto variantMap = this->toVariantMap(filters);
auto enabled = variantMap["enabled"].toBool();
auto noValidity = variantMap["noValidity"].toBool();
variantMap.remove("enabled");
variantMap.remove("noValidity");
variantMap.remove("lastModified");
variantMap.remove("deleted");
variantMap.remove("lastUpdate");
QVariantList flags;
if ( enabled ) {
flags << "Enabled";
}
if ( noValidity ) {
flags << "NoValidity";
}
variantMap.insert("flags", flags);
QJsonDocument doc = QJsonDocument::fromVariant(variantMap);
return doc.toJson(QJsonDocument::Compact);
}
bool Token::fromJson(const QByteArray &data)
{
QJsonDocument doc = QJsonDocument::fromJson(data);
QVariantMap variant = qvariant_cast<QVariantMap>(doc.toVariant());
QVariantList flags = variant["flags"].toList();
for (const auto &value : flags) {
if ( value.toString() == "Enabled") {
variant.insert("enabled", true);
}
if ( value.toString() == "NoValidity") {
variant.insert("noValidity", true);
}
}
variant.remove("flags");
auto lastUpdate = variant["lastUpdate"].toLongLong();
variant["lastUpdate"] = QDateTime::fromMSecsSinceEpoch(lastUpdate);
variant.insert("lastModified", QDateTime::fromMSecsSinceEpoch(lastUpdate));
// Populate this object data
bool res = fromVariantMap(variant);
return res;
}
QByteArray Token::idsToJSON(const QList<QString> &ids)
{
QJsonArray jsonIds;
for (const auto& id : ids)
{
jsonIds.push_back(id);
}
QJsonObject items;
items.insert("items", jsonIds);
QJsonDocument doc;
doc.setObject(items);
return doc.toJson();
}