More Json:: everywhere !

Signed-off-by: timoreo <contact@timoreo.fr>
This commit is contained in:
timoreo 2022-09-12 19:31:07 +02:00
parent a65f20a789
commit dcbd6cc1af
No known key found for this signature in database
GPG Key ID: 121A72C3512BA288

View File

@ -71,7 +71,7 @@ void JavaDownloader::downloadMojangJavaList(const QString& OS, bool isLegacy)
void JavaDownloader::parseMojangManifest(bool isLegacy, const QJsonArray& versionArray) void JavaDownloader::parseMojangManifest(bool isLegacy, const QJsonArray& versionArray)
{ {
setStatus(tr("Downloading java from Mojang")); setStatus(tr("Downloading java from Mojang"));
auto url = versionArray[0].toObject()["manifest"].toObject()["url"].toString(); auto url = Json::ensureString(Json::ensureObject(Json::ensureObject(versionArray[0]), "manifest"), "url");
auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network());
auto files = new QByteArray(); auto files = new QByteArray();
@ -103,22 +103,22 @@ void JavaDownloader::downloadMojangJava(bool isLegacy, const QJsonDocument& doc)
auto output = FS::PathCombine(QString("java"), (isLegacy ? "java-legacy" : "java-current")); auto output = FS::PathCombine(QString("java"), (isLegacy ? "java-legacy" : "java-current"));
FS::ensureFolderPathExists(output); FS::ensureFolderPathExists(output);
std::vector<File> toDownload; std::vector<File> toDownload;
auto list = doc.object()["files"].toObject(); auto list = Json::ensureObject(Json::ensureObject(doc.object()), "files");
for (const auto& paths : list.keys()) { for (const auto& paths : list.keys()) {
auto file = FS::PathCombine(output, paths); auto file = FS::PathCombine(output, paths);
auto type = list[paths].toObject()["type"].toString(); auto type = Json::requireString(Json::requireObject(list, paths), "type");
if (type == "directory") { if (type == "directory") {
FS::ensureFolderPathExists(file); FS::ensureFolderPathExists(file);
} else if (type == "link") { } else if (type == "link") {
// this is linux only ! // this is linux only !
auto target = FS::PathCombine(file, "../" + list[paths].toObject()["target"].toString()); auto target = FS::PathCombine(file, "../" + Json::requireString(Json::requireObject(list, paths), "target"));
QFile(target).link(file); QFile(target).link(file);
} else if (type == "file") { } else if (type == "file") {
// TODO download compressed version if it exists ? // TODO download compressed version if it exists ?
auto raw = list[paths].toObject()["downloads"].toObject()["raw"].toObject(); auto raw = Json::requireObject(Json::requireObject(Json::requireObject(list, paths), "downloads"), "raw");
auto isExec = list[paths].toObject()["executable"].toBool(); auto isExec = Json::ensureBoolean(Json::requireObject(list, paths), "executable", false);
auto f = File{ file, raw["url"].toString(), QByteArray::fromHex(raw["sha1"].toString().toLatin1()), isExec }; auto f = File{ file, Json::requireString(raw, "url"), QByteArray::fromHex(Json::ensureString(raw, "sha1").toLatin1()), isExec };
toDownload.push_back(f); toDownload.push_back(f);
} }
} }
@ -183,7 +183,7 @@ void JavaDownloader::downloadAzulMeta(const QString& OS, bool isLegacy, const Ne
qWarning() << *metaResponse; qWarning() << *metaResponse;
return; return;
} }
auto array = doc.array(); auto array = Json::ensureArray(doc.array());
if (!array.empty()) { if (!array.empty()) {
downloadAzulJava(isLegacy, array); downloadAzulJava(isLegacy, array);
} else { } else {