2022-03-30 17:56:27 +08:00
|
|
|
#ifndef B0B88BD6_CF1E_4E87_926A_E6DBE6B9B19C
|
|
|
|
#define B0B88BD6_CF1E_4E87_926A_E6DBE6B9B19C
|
|
|
|
|
2022-04-24 14:52:13 +08:00
|
|
|
|
2022-03-30 17:56:27 +08:00
|
|
|
#include <utility>
|
2022-04-24 14:52:13 +08:00
|
|
|
#include <QList>
|
|
|
|
#include <QMap>
|
|
|
|
#include <QJsonObject>
|
|
|
|
#include <QJsonDocument>
|
|
|
|
#include <QJsonArray>
|
|
|
|
#include <QDebug>
|
2022-03-30 17:56:27 +08:00
|
|
|
|
2022-04-24 14:52:13 +08:00
|
|
|
namespace Methods
|
2022-03-30 17:56:27 +08:00
|
|
|
{
|
2022-04-24 14:52:13 +08:00
|
|
|
struct Task
|
|
|
|
{
|
|
|
|
QString id;
|
|
|
|
QString runId;
|
|
|
|
QString type{"task"};
|
|
|
|
QString date;
|
2022-05-25 11:46:28 +08:00
|
|
|
QString filePath;
|
2022-04-24 14:52:13 +08:00
|
|
|
QList<QString> arguments;
|
|
|
|
QMap<QString, QString> environments;
|
|
|
|
};
|
|
|
|
|
|
|
|
inline void toJson(QByteArray &array, const Task &task) {
|
|
|
|
QJsonArray argArray;
|
|
|
|
for (auto arg : task.arguments) {
|
|
|
|
argArray.append(arg);
|
|
|
|
}
|
|
|
|
|
|
|
|
QVariantMap envsMap;
|
|
|
|
for (auto it = task.environments.constBegin(); it != task.environments.constEnd(); ++it) {
|
|
|
|
envsMap.insert(it.key(), it.value());
|
|
|
|
}
|
|
|
|
|
|
|
|
QJsonObject obj = {
|
|
|
|
{"type", task.type},
|
|
|
|
{"id", task.id},
|
2022-05-25 11:46:28 +08:00
|
|
|
{"runId", task.runId},
|
|
|
|
{"filePath", task.filePath},
|
2022-04-24 14:52:13 +08:00
|
|
|
{"date", task.date},
|
|
|
|
{"arguments", argArray},
|
|
|
|
{"environments", QJsonObject::fromVariantMap(envsMap)}
|
|
|
|
};
|
|
|
|
|
|
|
|
array = QJsonDocument(obj).toJson();
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void fromJson(const QByteArray &array, Task &task) {
|
|
|
|
QJsonDocument doc = QJsonDocument::fromJson(array);
|
|
|
|
if (!doc.isObject()) {
|
|
|
|
qWarning() << "fromJson task failed";
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
QJsonObject obj = doc.object();
|
2022-05-25 11:46:28 +08:00
|
|
|
if (obj.contains("id")) {
|
|
|
|
task.id = obj.value("id").toString();
|
|
|
|
}
|
|
|
|
if (obj.contains("runId")) {
|
|
|
|
task.runId = obj.value("runId").toString();
|
|
|
|
}
|
|
|
|
if (obj.contains("filePath")) {
|
|
|
|
task.filePath = obj.value("filePath").toString();
|
|
|
|
}
|
|
|
|
if (obj.contains("date")) {
|
|
|
|
task.date = obj.value("date").toString();
|
2022-04-24 14:52:13 +08:00
|
|
|
}
|
|
|
|
|
2022-05-25 11:46:28 +08:00
|
|
|
if (obj.contains("arguments")) {
|
|
|
|
for (auto arg : obj.value("arguments").toArray()) {
|
|
|
|
task.arguments.append(arg.toString());
|
|
|
|
}
|
2022-04-24 14:52:13 +08:00
|
|
|
}
|
2022-05-25 11:46:28 +08:00
|
|
|
if (obj.contains("environments")) {
|
|
|
|
QVariantMap envsMap = obj.value("environments").toObject().toVariantMap();
|
|
|
|
for (auto it = envsMap.constBegin(); it != envsMap.constEnd(); ++it) {
|
|
|
|
task.environments.insert(it.key(), it.value().toString());
|
|
|
|
}
|
2022-04-24 14:52:13 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
} // namespace Methods
|
2022-03-30 17:56:27 +08:00
|
|
|
|
|
|
|
#endif /* B0B88BD6_CF1E_4E87_926A_E6DBE6B9B19C */
|