Remove ensure JSON helpers
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
@@ -374,8 +374,8 @@ Task::Ptr EnsureMetadataTask::flameVersionsTask()
|
||||
}
|
||||
|
||||
for (auto match : data_arr) {
|
||||
auto match_obj = Json::ensureObject(match, {});
|
||||
auto file_obj = Json::ensureObject(match_obj, "file", {});
|
||||
auto match_obj = match.toObject();
|
||||
auto file_obj = match_obj["file"].toObject();
|
||||
|
||||
if (match_obj.isEmpty() || file_obj.isEmpty()) {
|
||||
qWarning() << "Fingerprint match is empty!";
|
||||
@@ -383,7 +383,7 @@ Task::Ptr EnsureMetadataTask::flameVersionsTask()
|
||||
return;
|
||||
}
|
||||
|
||||
auto fingerprint = QString::number(Json::ensureVariant(file_obj, "fileFingerprint").toUInt());
|
||||
auto fingerprint = QString::number(file_obj["fileFingerprint"].toInteger());
|
||||
auto resource = m_resources.find(fingerprint);
|
||||
if (resource == m_resources.end()) {
|
||||
qWarning() << "Invalid fingerprint from the API response.";
|
||||
|
||||
@@ -97,7 +97,7 @@ Task::Ptr ResourceAPI::getProjectVersions(VersionSearchArgs&& args, Callback<QVe
|
||||
|
||||
QVector<ModPlatform::IndexedVersion> unsortedVersions;
|
||||
try {
|
||||
auto arr = doc.isObject() ? Json::ensureArray(doc.object(), "data") : doc.array();
|
||||
auto arr = doc.isObject() ? doc.object()["data"].toArray() : doc.array();
|
||||
|
||||
for (auto versionIter : arr) {
|
||||
auto obj = versionIter.toObject();
|
||||
@@ -213,7 +213,7 @@ Task::Ptr ResourceAPI::getDependencyVersion(DependencySearchArgs&& args, Callbac
|
||||
if (args.dependency.version.length() != 0 && doc.isObject()) {
|
||||
arr.append(doc.object());
|
||||
} else {
|
||||
arr = doc.isObject() ? Json::ensureArray(doc.object(), "data") : doc.array();
|
||||
arr = doc.isObject() ? doc.object()["data"].toArray() : doc.array();
|
||||
}
|
||||
|
||||
QVector<ModPlatform::IndexedVersion> versions;
|
||||
|
||||
@@ -40,8 +40,8 @@ void ATLauncher::loadIndexedPack(ATLauncher::IndexedPack& m, QJsonObject& obj)
|
||||
loadIndexedVersion(version, versionObj);
|
||||
m.versions.append(version);
|
||||
}
|
||||
m.system = Json::ensureBoolean(obj, QString("system"), false);
|
||||
m.description = Json::ensureString(obj, "description", "");
|
||||
m.system = obj["system"].toBool();
|
||||
m.description = obj["description"].toString("");
|
||||
|
||||
static const QRegularExpression s_regex("[^A-Za-z0-9]");
|
||||
m.safeName = Json::requireString(obj, "name").replace(s_regex, "").toLower() + ".png";
|
||||
|
||||
@@ -100,20 +100,20 @@ static ATLauncher::ModType parseModType(QString rawType)
|
||||
static void loadVersionLoader(ATLauncher::VersionLoader& p, QJsonObject& obj)
|
||||
{
|
||||
p.type = Json::requireString(obj, "type");
|
||||
p.choose = Json::ensureBoolean(obj, QString("choose"), false);
|
||||
p.choose = obj["choose"].toBool();
|
||||
|
||||
auto metadata = Json::requireObject(obj, "metadata");
|
||||
p.latest = Json::ensureBoolean(metadata, QString("latest"), false);
|
||||
p.recommended = Json::ensureBoolean(metadata, QString("recommended"), false);
|
||||
p.latest = metadata["latest"].toBool();
|
||||
p.recommended = metadata["recommended"].toBool();
|
||||
|
||||
// Minecraft Forge
|
||||
if (p.type == "forge") {
|
||||
p.version = Json::ensureString(metadata, "version", "");
|
||||
p.version = metadata["version"].toString("");
|
||||
}
|
||||
|
||||
// Fabric Loader
|
||||
if (p.type == "fabric") {
|
||||
p.version = Json::ensureString(metadata, "loader", "");
|
||||
p.version = metadata["loader"].toString("");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ static void loadVersionLibrary(ATLauncher::VersionLibrary& p, QJsonObject& obj)
|
||||
p.download_raw = Json::requireString(obj, "download");
|
||||
p.download = parseDownloadType(p.download_raw);
|
||||
|
||||
p.server = Json::ensureString(obj, "server", "");
|
||||
p.server = obj["server"].toString("");
|
||||
}
|
||||
|
||||
static void loadVersionConfigs(ATLauncher::VersionConfigs& p, QJsonObject& obj)
|
||||
@@ -141,7 +141,7 @@ static void loadVersionMod(ATLauncher::VersionMod& p, QJsonObject& obj)
|
||||
p.version = Json::requireString(obj, "version");
|
||||
p.url = Json::requireString(obj, "url");
|
||||
p.file = Json::requireString(obj, "file");
|
||||
p.md5 = Json::ensureString(obj, "md5", "");
|
||||
p.md5 = obj["md5"].toString("");
|
||||
|
||||
p.download_raw = Json::requireString(obj, "download");
|
||||
p.download = parseDownloadType(p.download_raw);
|
||||
@@ -161,7 +161,7 @@ static void loadVersionMod(ATLauncher::VersionMod& p, QJsonObject& obj)
|
||||
if (obj.contains("extractTo")) {
|
||||
p.extractTo_raw = Json::requireString(obj, "extractTo");
|
||||
p.extractTo = parseModType(p.extractTo_raw);
|
||||
p.extractFolder = Json::ensureString(obj, "extractFolder", "").replace("%s%", "/");
|
||||
p.extractFolder = obj["extractFolder"].toString("").replace("%s%", "/");
|
||||
}
|
||||
|
||||
if (obj.contains("decompType")) {
|
||||
@@ -170,23 +170,23 @@ static void loadVersionMod(ATLauncher::VersionMod& p, QJsonObject& obj)
|
||||
p.decompFile = Json::requireString(obj, "decompFile");
|
||||
}
|
||||
|
||||
p.description = Json::ensureString(obj, QString("description"), "");
|
||||
p.optional = Json::ensureBoolean(obj, QString("optional"), false);
|
||||
p.recommended = Json::ensureBoolean(obj, QString("recommended"), false);
|
||||
p.selected = Json::ensureBoolean(obj, QString("selected"), false);
|
||||
p.hidden = Json::ensureBoolean(obj, QString("hidden"), false);
|
||||
p.library = Json::ensureBoolean(obj, QString("library"), false);
|
||||
p.group = Json::ensureString(obj, QString("group"), "");
|
||||
p.description = obj["description"].toString("");
|
||||
p.optional = obj["optional"].toBool();
|
||||
p.recommended = obj["recommended"].toBool();
|
||||
p.selected = obj["selected"].toBool();
|
||||
p.hidden = obj["hidden"].toBool();
|
||||
p.library = obj["library"].toBool();
|
||||
p.group = obj["group"].toString("");
|
||||
if (obj.contains("depends")) {
|
||||
auto dependsArr = Json::requireArray(obj, "depends");
|
||||
for (const auto depends : dependsArr) {
|
||||
p.depends.append(Json::requireString(depends));
|
||||
}
|
||||
}
|
||||
p.colour = Json::ensureString(obj, QString("colour"), "");
|
||||
p.warning = Json::ensureString(obj, QString("warning"), "");
|
||||
p.colour = obj["colour"].toString("");
|
||||
p.warning = obj["warning"].toString("");
|
||||
|
||||
p.client = Json::ensureBoolean(obj, QString("client"), false);
|
||||
p.client = obj["client"].toBool();
|
||||
|
||||
// computed
|
||||
p.effectively_hidden = p.hidden || p.library;
|
||||
@@ -194,20 +194,20 @@ static void loadVersionMod(ATLauncher::VersionMod& p, QJsonObject& obj)
|
||||
|
||||
static void loadVersionMessages(ATLauncher::VersionMessages& m, QJsonObject& obj)
|
||||
{
|
||||
m.install = Json::ensureString(obj, "install", "");
|
||||
m.update = Json::ensureString(obj, "update", "");
|
||||
m.install = obj["install"].toString("");
|
||||
m.update = obj["update"].toString("");
|
||||
}
|
||||
|
||||
static void loadVersionMainClass(ATLauncher::PackVersionMainClass& m, QJsonObject& obj)
|
||||
{
|
||||
m.mainClass = Json::ensureString(obj, "mainClass", "");
|
||||
m.depends = Json::ensureString(obj, "depends", "");
|
||||
m.mainClass = obj["mainClass"].toString("");
|
||||
m.depends = obj["depends"].toString("");
|
||||
}
|
||||
|
||||
static void loadVersionExtraArguments(ATLauncher::PackVersionExtraArguments& a, QJsonObject& obj)
|
||||
{
|
||||
a.arguments = Json::ensureString(obj, "arguments", "");
|
||||
a.depends = Json::ensureString(obj, "depends", "");
|
||||
a.arguments = obj["arguments"].toString("");
|
||||
a.depends = obj["depends"].toString("");
|
||||
}
|
||||
|
||||
static void loadVersionKeep(ATLauncher::VersionKeep& k, QJsonObject& obj)
|
||||
@@ -272,7 +272,7 @@ void ATLauncher::loadVersion(PackVersion& v, QJsonObject& obj)
|
||||
{
|
||||
v.version = Json::requireString(obj, "version");
|
||||
v.minecraft = Json::requireString(obj, "minecraft");
|
||||
v.noConfigs = Json::ensureBoolean(obj, QString("noConfigs"), false);
|
||||
v.noConfigs = obj["noConfigs"].toBool();
|
||||
|
||||
if (obj.contains("mainClass")) {
|
||||
auto main = Json::requireObject(obj, "mainClass");
|
||||
@@ -314,22 +314,22 @@ void ATLauncher::loadVersion(PackVersion& v, QJsonObject& obj)
|
||||
loadVersionConfigs(v.configs, configsObj);
|
||||
}
|
||||
|
||||
auto colourObj = Json::ensureObject(obj, "colours");
|
||||
auto colourObj = obj["colours"].toObject();
|
||||
for (const auto& key : colourObj.keys()) {
|
||||
v.colours[key] = Json::requireString(colourObj.value(key), "colour");
|
||||
}
|
||||
|
||||
auto warningsObj = Json::ensureObject(obj, "warnings");
|
||||
auto warningsObj = obj["warnings"].toObject();
|
||||
for (const auto& key : warningsObj.keys()) {
|
||||
v.warnings[key] = Json::requireString(warningsObj.value(key), "warning");
|
||||
}
|
||||
|
||||
auto messages = Json::ensureObject(obj, "messages");
|
||||
auto messages = obj["messages"].toObject();
|
||||
loadVersionMessages(v.messages, messages);
|
||||
|
||||
auto keeps = Json::ensureObject(obj, "keeps");
|
||||
auto keeps = obj["keeps"].toObject();
|
||||
loadVersionKeeps(v.keeps, keeps);
|
||||
|
||||
auto deletes = Json::ensureObject(obj, "deletes");
|
||||
auto deletes = obj["deletes"].toObject();
|
||||
loadVersionDeletes(v.deletes, deletes);
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ QString FlameAPI::getModFileChangelog(int modId, int fileId)
|
||||
return;
|
||||
}
|
||||
|
||||
changelog = Json::ensureString(doc.object(), "data");
|
||||
changelog = doc.object()["data"].toString();
|
||||
});
|
||||
|
||||
QObject::connect(netJob.get(), &NetJob::finished, [&lock] { lock.quit(); });
|
||||
@@ -92,7 +92,7 @@ QString FlameAPI::getModDescription(int modId)
|
||||
return;
|
||||
}
|
||||
|
||||
description = Json::ensureString(doc.object(), "data");
|
||||
description = doc.object()["data"].toString();
|
||||
});
|
||||
|
||||
QObject::connect(netJob.get(), &NetJob::finished, [&lock] { lock.quit(); });
|
||||
|
||||
@@ -140,7 +140,7 @@ class FlameAPI : public ResourceAPI {
|
||||
return url;
|
||||
}
|
||||
|
||||
QJsonArray documentToArray(QJsonDocument& obj) const override { return Json::ensureArray(obj.object(), "data"); }
|
||||
QJsonArray documentToArray(QJsonDocument& obj) const override { return obj.object()["data"].toArray(); }
|
||||
void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj) const override { FlameMod::loadIndexedPack(m, obj); }
|
||||
ModPlatform::IndexedVersion loadIndexedPackVersion(QJsonObject& obj, ModPlatform::ResourceType resourceType) const override
|
||||
{
|
||||
|
||||
@@ -15,17 +15,17 @@ void FlameMod::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||
pack.provider = ModPlatform::ResourceProvider::FLAME;
|
||||
pack.name = Json::requireString(obj, "name");
|
||||
pack.slug = Json::requireString(obj, "slug");
|
||||
pack.websiteUrl = Json::ensureString(Json::ensureObject(obj, "links"), "websiteUrl", "");
|
||||
pack.description = Json::ensureString(obj, "summary", "");
|
||||
pack.websiteUrl = obj["links"].toObject()["websiteUrl"].toString("");
|
||||
pack.description = obj["summary"].toString("");
|
||||
|
||||
QJsonObject logo = Json::ensureObject(obj, "logo");
|
||||
pack.logoName = Json::ensureString(logo, "title");
|
||||
pack.logoUrl = Json::ensureString(logo, "thumbnailUrl");
|
||||
QJsonObject logo = obj["logo"].toObject();
|
||||
pack.logoName = logo["title"].toString();
|
||||
pack.logoUrl = logo["thumbnailUrl"].toString();
|
||||
if (pack.logoUrl.isEmpty()) {
|
||||
pack.logoUrl = Json::ensureString(logo, "url");
|
||||
pack.logoUrl = logo["url"].toString();
|
||||
}
|
||||
|
||||
auto authors = Json::ensureArray(obj, "authors");
|
||||
auto authors = obj["authors"].toArray();
|
||||
for (auto authorIter : authors) {
|
||||
auto author = Json::requireObject(authorIter);
|
||||
ModPlatform::ModpackAuthor packAuthor;
|
||||
@@ -40,17 +40,17 @@ void FlameMod::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||
|
||||
void FlameMod::loadURLs(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||
{
|
||||
auto links_obj = Json::ensureObject(obj, "links");
|
||||
auto links_obj = obj["links"].toObject();
|
||||
|
||||
pack.extraData.issuesUrl = Json::ensureString(links_obj, "issuesUrl");
|
||||
pack.extraData.issuesUrl = links_obj["issuesUrl"].toString();
|
||||
if (pack.extraData.issuesUrl.endsWith('/'))
|
||||
pack.extraData.issuesUrl.chop(1);
|
||||
|
||||
pack.extraData.sourceUrl = Json::ensureString(links_obj, "sourceUrl");
|
||||
pack.extraData.sourceUrl = links_obj["sourceUrl"].toString();
|
||||
if (pack.extraData.sourceUrl.endsWith('/'))
|
||||
pack.extraData.sourceUrl.chop(1);
|
||||
|
||||
pack.extraData.wikiUrl = Json::ensureString(links_obj, "wikiUrl");
|
||||
pack.extraData.wikiUrl = links_obj["wikiUrl"].toString();
|
||||
if (pack.extraData.wikiUrl.endsWith('/'))
|
||||
pack.extraData.wikiUrl.chop(1);
|
||||
|
||||
@@ -136,8 +136,8 @@ auto FlameMod::loadIndexedPackVersion(QJsonObject& obj, bool load_changelog) ->
|
||||
file.fileId = Json::requireInteger(obj, "id");
|
||||
file.date = Json::requireString(obj, "fileDate");
|
||||
file.version = Json::requireString(obj, "displayName");
|
||||
file.downloadUrl = Json::ensureString(obj, "downloadUrl");
|
||||
file.fileName = Json::requireString(obj, "fileName");
|
||||
file.downloadUrl = obj["downloadUrl"].toString();
|
||||
file.fileName = obj["fileName"].toString();
|
||||
file.fileName = FS::RemoveInvalidPathChars(file.fileName);
|
||||
|
||||
ModPlatform::IndexedVersionType::VersionType ver_type;
|
||||
@@ -156,11 +156,11 @@ auto FlameMod::loadIndexedPackVersion(QJsonObject& obj, bool load_changelog) ->
|
||||
}
|
||||
file.version_type = ModPlatform::IndexedVersionType(ver_type);
|
||||
|
||||
auto hash_list = Json::ensureArray(obj, "hashes");
|
||||
auto hash_list = obj["hashes"].toArray();
|
||||
for (auto h : hash_list) {
|
||||
auto hash_entry = Json::ensureObject(h);
|
||||
auto hash_entry = h.toObject();
|
||||
auto hash_types = ModPlatform::ProviderCapabilities::hashType(ModPlatform::ResourceProvider::FLAME);
|
||||
auto hash_algo = enumToString(Json::ensureInteger(hash_entry, "algo", 1, "algorithm"));
|
||||
auto hash_algo = enumToString(hash_entry["algo"].toInt(1));
|
||||
if (hash_types.contains(hash_algo)) {
|
||||
file.hash = Json::requireString(hash_entry, "value");
|
||||
file.hash_type = hash_algo;
|
||||
@@ -168,9 +168,9 @@ auto FlameMod::loadIndexedPackVersion(QJsonObject& obj, bool load_changelog) ->
|
||||
}
|
||||
}
|
||||
|
||||
auto dependencies = Json::ensureArray(obj, "dependencies");
|
||||
auto dependencies = obj["dependencies"].toArray();
|
||||
for (auto d : dependencies) {
|
||||
auto dep = Json::ensureObject(d);
|
||||
auto dep = d.toObject();
|
||||
ModPlatform::Dependency dependency;
|
||||
dependency.addonId = Json::requireInteger(dep, "modId");
|
||||
switch (Json::requireInteger(dep, "relationType")) {
|
||||
|
||||
@@ -199,8 +199,8 @@ void FlamePackExportTask::makeApiRequest()
|
||||
return;
|
||||
}
|
||||
for (auto match : dataArr) {
|
||||
auto matchObj = Json::ensureObject(match, {});
|
||||
auto fileObj = Json::ensureObject(matchObj, "file", {});
|
||||
auto matchObj = match.toObject();
|
||||
auto fileObj = matchObj["file"].toObject();
|
||||
|
||||
if (matchObj.isEmpty() || fileObj.isEmpty()) {
|
||||
qWarning() << "Fingerprint match is empty!";
|
||||
@@ -208,7 +208,7 @@ void FlamePackExportTask::makeApiRequest()
|
||||
return;
|
||||
}
|
||||
|
||||
auto fingerprint = QString::number(Json::ensureVariant(fileObj, "fileFingerprint").toUInt());
|
||||
auto fingerprint = QString::number(fileObj["fileFingerprint"].toInteger());
|
||||
auto mod = pendingHashes.find(fingerprint);
|
||||
if (mod == pendingHashes.end()) {
|
||||
qWarning() << "Invalid fingerprint from the API response.";
|
||||
@@ -216,7 +216,7 @@ void FlamePackExportTask::makeApiRequest()
|
||||
}
|
||||
|
||||
setStatus(tr("Parsing API response from CurseForge for '%1'...").arg(mod->name));
|
||||
if (Json::ensureBoolean(fileObj, "isAvailable", false, "isAvailable"))
|
||||
if (fileObj["isAvailable"].toBool())
|
||||
resolvedFiles.insert(mod->path, { Json::requireInteger(fileObj, "modId"), Json::requireInteger(fileObj, "id"),
|
||||
mod->enabled, mod->isMod });
|
||||
}
|
||||
@@ -429,4 +429,4 @@ QByteArray FlamePackExportTask::generateHTML()
|
||||
}
|
||||
content = "<ul>" + content + "</ul>";
|
||||
return content.toUtf8();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,13 +5,13 @@ static void loadFileV1(Flame::File& f, QJsonObject& file)
|
||||
{
|
||||
f.projectId = Json::requireInteger(file, "projectID");
|
||||
f.fileId = Json::requireInteger(file, "fileID");
|
||||
f.required = Json::ensureBoolean(file, QString("required"), true);
|
||||
f.required = file["required"].toBool(true);
|
||||
}
|
||||
|
||||
static void loadModloaderV1(Flame::Modloader& m, QJsonObject& modLoader)
|
||||
{
|
||||
m.id = Json::requireString(modLoader, "id");
|
||||
m.primary = Json::ensureBoolean(modLoader, QString("primary"), false);
|
||||
m.primary = modLoader["primary"].toBool();
|
||||
}
|
||||
|
||||
static void loadMinecraftV1(Flame::Minecraft& m, QJsonObject& minecraft)
|
||||
@@ -19,15 +19,15 @@ static void loadMinecraftV1(Flame::Minecraft& m, QJsonObject& minecraft)
|
||||
m.version = Json::requireString(minecraft, "version");
|
||||
// extra libraries... apparently only used for a custom Minecraft launcher in the 1.2.5 FTB retro pack
|
||||
// intended use is likely hardcoded in the 'Flame' client, the manifest says nothing
|
||||
m.libraries = Json::ensureString(minecraft, QString("libraries"), QString());
|
||||
auto arr = Json::ensureArray(minecraft, "modLoaders", QJsonArray());
|
||||
m.libraries = minecraft["libraries"].toString();
|
||||
auto arr = minecraft["modLoaders"].toArray();
|
||||
for (QJsonValueRef item : arr) {
|
||||
auto obj = Json::requireObject(item);
|
||||
Flame::Modloader loader;
|
||||
loadModloaderV1(loader, obj);
|
||||
m.modLoaders.append(loader);
|
||||
}
|
||||
m.recommendedRAM = Json::ensureInteger(minecraft, "recommendedRam", 0);
|
||||
m.recommendedRAM = minecraft["recommendedRam"].toInt();
|
||||
}
|
||||
|
||||
static void loadManifestV1(Flame::Manifest& pack, QJsonObject& manifest)
|
||||
@@ -36,11 +36,11 @@ static void loadManifestV1(Flame::Manifest& pack, QJsonObject& manifest)
|
||||
|
||||
loadMinecraftV1(pack.minecraft, mc);
|
||||
|
||||
pack.name = Json::ensureString(manifest, QString("name"), "Unnamed");
|
||||
pack.version = Json::ensureString(manifest, QString("version"), QString());
|
||||
pack.author = Json::ensureString(manifest, QString("author"), "Anonymous");
|
||||
pack.name = manifest["name"].toString("Unnamed");
|
||||
pack.version = manifest["version"].toString();
|
||||
pack.author = manifest["author"].toString("Anonymous");
|
||||
|
||||
auto arr = Json::ensureArray(manifest, "files", QJsonArray());
|
||||
auto arr = manifest["files"].toArray();
|
||||
for (auto item : arr) {
|
||||
auto obj = Json::requireObject(item);
|
||||
|
||||
@@ -50,7 +50,7 @@ static void loadManifestV1(Flame::Manifest& pack, QJsonObject& manifest)
|
||||
pack.files.insert(file.fileId, file);
|
||||
}
|
||||
|
||||
pack.overrides = Json::ensureString(manifest, "overrides", "overrides");
|
||||
pack.overrides = manifest["overrides"].toString("overrides");
|
||||
|
||||
pack.is_loaded = true;
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ Modpack parseDirectory(QString path)
|
||||
modpack.name = Json::requireString(root, "name", "name");
|
||||
modpack.version = Json::requireString(root, "version", "version");
|
||||
modpack.mcVersion = Json::requireString(root, "mcVersion", "mcVersion");
|
||||
modpack.jvmArgs = Json::ensureVariant(root, "jvmArgs", {}, "jvmArgs");
|
||||
modpack.jvmArgs = root["jvmArgs"].toVariant();
|
||||
modpack.totalPlayTime = Json::requireInteger(root, "totalPlayTime", "totalPlayTime");
|
||||
} catch (const Exception& e) {
|
||||
qDebug() << "Couldn't load ftb instance json: " << e.cause();
|
||||
|
||||
@@ -147,7 +147,7 @@ QList<ModPlatform::Category> ModrinthAPI::loadCategories(std::shared_ptr<QByteAr
|
||||
for (auto val : arr) {
|
||||
auto cat = Json::requireObject(val);
|
||||
auto name = Json::requireString(cat, "name");
|
||||
if (Json::ensureString(cat, "project_type", "") == projectType)
|
||||
if (cat["project_type"].toString() == projectType)
|
||||
categories.push_back({ name, name });
|
||||
}
|
||||
|
||||
|
||||
@@ -371,8 +371,8 @@ bool ModrinthCreationTask::parseManifest(const QString& index_path,
|
||||
|
||||
if (set_internal_data) {
|
||||
if (m_managed_version_id.isEmpty())
|
||||
m_managed_version_id = Json::ensureString(obj, "versionId", {}, "Managed ID");
|
||||
m_managed_name = Json::ensureString(obj, "name", {}, "Managed Name");
|
||||
m_managed_version_id = obj["versionId"].toString();
|
||||
m_managed_name = obj["name"].toString();
|
||||
}
|
||||
|
||||
auto jsonFiles = Json::requireIsArrayOf<QJsonObject>(obj, "files", "modrinth.index.json");
|
||||
@@ -381,10 +381,10 @@ bool ModrinthCreationTask::parseManifest(const QString& index_path,
|
||||
File file;
|
||||
file.path = Json::requireString(modInfo, "path").replace("\\", "/");
|
||||
|
||||
auto env = Json::ensureObject(modInfo, "env");
|
||||
auto env = modInfo["env"].toObject();
|
||||
// 'env' field is optional
|
||||
if (!env.isEmpty()) {
|
||||
QString support = Json::ensureString(env, "client", "unsupported");
|
||||
QString support = env["client"].toString("unsupported");
|
||||
if (support == "unsupported") {
|
||||
continue;
|
||||
} else if (support == "optional") {
|
||||
@@ -399,7 +399,7 @@ bool ModrinthCreationTask::parseManifest(const QString& index_path,
|
||||
// Do not use requireUrl, which uses StrictMode, instead use QUrl's default TolerantMode
|
||||
// (as Modrinth seems to incorrectly handle spaces)
|
||||
|
||||
auto download_arr = Json::ensureArray(modInfo, "downloads");
|
||||
auto download_arr = modInfo["downloads"].toArray();
|
||||
for (auto download : download_arr) {
|
||||
qWarning() << download.toString();
|
||||
bool is_last = download.toString() == download_arr.last().toString();
|
||||
|
||||
@@ -36,31 +36,31 @@ bool shouldDownloadOnSide(QString side)
|
||||
// https://docs.modrinth.com/api-spec/#tag/projects/operation/getProject
|
||||
void Modrinth::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||
{
|
||||
pack.addonId = Json::ensureString(obj, "project_id");
|
||||
pack.addonId = obj["project_id"].toString();
|
||||
if (pack.addonId.toString().isEmpty())
|
||||
pack.addonId = Json::requireString(obj, "id");
|
||||
|
||||
pack.provider = ModPlatform::ResourceProvider::MODRINTH;
|
||||
pack.name = Json::requireString(obj, "title");
|
||||
|
||||
pack.slug = Json::ensureString(obj, "slug", "");
|
||||
pack.slug = obj["slug"].toString("");
|
||||
if (!pack.slug.isEmpty())
|
||||
pack.websiteUrl = "https://modrinth.com/mod/" + pack.slug;
|
||||
else
|
||||
pack.websiteUrl = "";
|
||||
|
||||
pack.description = Json::ensureString(obj, "description", "");
|
||||
pack.description = obj["description"].toString("");
|
||||
|
||||
pack.logoUrl = Json::ensureString(obj, "icon_url", "");
|
||||
pack.logoName = QString("%1.%2").arg(Json::ensureString(obj, "slug"), QFileInfo(QUrl(pack.logoUrl).fileName()).suffix());
|
||||
pack.logoUrl = obj["icon_url"].toString("");
|
||||
pack.logoName = QString("%1.%2").arg(obj["slug"].toString()), QFileInfo(QUrl(pack.logoUrl).fileName()).suffix();
|
||||
|
||||
ModPlatform::ModpackAuthor modAuthor;
|
||||
modAuthor.name = Json::ensureString(obj, "author", QObject::tr("No author(s)"));
|
||||
modAuthor.name = obj["author"].toString(QObject::tr("No author(s)"));
|
||||
modAuthor.url = api.getAuthorURL(modAuthor.name);
|
||||
pack.authors.append(modAuthor);
|
||||
|
||||
auto client = shouldDownloadOnSide(Json::ensureString(obj, "client_side"));
|
||||
auto server = shouldDownloadOnSide(Json::ensureString(obj, "server_side"));
|
||||
auto client = shouldDownloadOnSide(obj["client_side"].toString());
|
||||
auto server = shouldDownloadOnSide(obj["server_side"].toString());
|
||||
|
||||
if (server && client) {
|
||||
pack.side = ModPlatform::Side::UniversalSide;
|
||||
@@ -76,38 +76,38 @@ void Modrinth::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||
|
||||
void Modrinth::loadExtraPackData(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||
{
|
||||
pack.extraData.issuesUrl = Json::ensureString(obj, "issues_url");
|
||||
pack.extraData.issuesUrl = obj["issues_url"].toString();
|
||||
if (pack.extraData.issuesUrl.endsWith('/'))
|
||||
pack.extraData.issuesUrl.chop(1);
|
||||
|
||||
pack.extraData.sourceUrl = Json::ensureString(obj, "source_url");
|
||||
pack.extraData.sourceUrl = obj["source_url"].toString();
|
||||
if (pack.extraData.sourceUrl.endsWith('/'))
|
||||
pack.extraData.sourceUrl.chop(1);
|
||||
|
||||
pack.extraData.wikiUrl = Json::ensureString(obj, "wiki_url");
|
||||
pack.extraData.wikiUrl = obj["wiki_url"].toString();
|
||||
if (pack.extraData.wikiUrl.endsWith('/'))
|
||||
pack.extraData.wikiUrl.chop(1);
|
||||
|
||||
pack.extraData.discordUrl = Json::ensureString(obj, "discord_url");
|
||||
pack.extraData.discordUrl = obj["discord_url"].toString();
|
||||
if (pack.extraData.discordUrl.endsWith('/'))
|
||||
pack.extraData.discordUrl.chop(1);
|
||||
|
||||
auto donate_arr = Json::ensureArray(obj, "donation_urls");
|
||||
auto donate_arr = obj["donation_urls"].toArray();
|
||||
for (auto d : donate_arr) {
|
||||
auto d_obj = Json::requireObject(d);
|
||||
|
||||
ModPlatform::DonationData donate;
|
||||
|
||||
donate.id = Json::ensureString(d_obj, "id");
|
||||
donate.platform = Json::ensureString(d_obj, "platform");
|
||||
donate.url = Json::ensureString(d_obj, "url");
|
||||
donate.id = d_obj["id"].toString();
|
||||
donate.platform = d_obj["platform"].toString();
|
||||
donate.url = d_obj["url"].toString();
|
||||
|
||||
pack.extraData.donate.append(donate);
|
||||
}
|
||||
|
||||
pack.extraData.status = Json::ensureString(obj, "status");
|
||||
pack.extraData.status = obj["status"].toString();
|
||||
|
||||
pack.extraData.body = Json::ensureString(obj, "body").remove("<br>");
|
||||
pack.extraData.body = obj["body"].toString().remove("<br>");
|
||||
|
||||
pack.extraDataLoaded = true;
|
||||
}
|
||||
@@ -147,12 +147,12 @@ ModPlatform::IndexedVersion Modrinth::loadIndexedPackVersion(QJsonObject& obj, Q
|
||||
|
||||
file.changelog = Json::requireString(obj, "changelog");
|
||||
|
||||
auto dependencies = Json::ensureArray(obj, "dependencies");
|
||||
auto dependencies = obj["dependencies"].toArray();
|
||||
for (auto d : dependencies) {
|
||||
auto dep = Json::ensureObject(d);
|
||||
auto dep = d.toObject();
|
||||
ModPlatform::Dependency dependency;
|
||||
dependency.addonId = Json::ensureString(dep, "project_id");
|
||||
dependency.version = Json::ensureString(dep, "version_id");
|
||||
dependency.addonId = dep["project_id"].toString();
|
||||
dependency.version = dep["version_id"].toString();
|
||||
auto depType = Json::requireString(dep, "dependency_type");
|
||||
|
||||
if (depType == "required")
|
||||
|
||||
@@ -37,7 +37,7 @@ void loadPack(Pack& v, QJsonObject& obj)
|
||||
static void loadPackBuildMod(PackBuildMod& b, QJsonObject& obj)
|
||||
{
|
||||
b.name = Json::requireString(obj, "name");
|
||||
b.version = Json::ensureString(obj, "version", "");
|
||||
b.version = obj["version"].toString("");
|
||||
b.md5 = Json::requireString(obj, "md5");
|
||||
b.url = Json::requireString(obj, "url");
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ void Technic::TechnicPackProcessor::run(SettingsObjectPtr globalSettings,
|
||||
try {
|
||||
QJsonDocument doc = Json::requireDocument(data);
|
||||
QJsonObject root = Json::requireObject(doc, "version.json");
|
||||
QString packMinecraftVersion = Json::ensureString(root, "inheritsFrom", QString(), "");
|
||||
QString packMinecraftVersion = root["inheritsFrom"].toString();
|
||||
if (packMinecraftVersion.isEmpty()) {
|
||||
if (fmlMinecraftVersion.isEmpty()) {
|
||||
emit failed(tr("Could not understand \"version.json\":\ninheritsFrom is missing"));
|
||||
@@ -151,21 +151,21 @@ void Technic::TechnicPackProcessor::run(SettingsObjectPtr globalSettings,
|
||||
packMinecraftVersion = fmlMinecraftVersion;
|
||||
}
|
||||
components->setComponentVersion("net.minecraft", packMinecraftVersion, true);
|
||||
for (auto library : Json::ensureArray(root, "libraries", {})) {
|
||||
for (auto library : root["libraries"].toArray()) {
|
||||
if (!library.isObject()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto libraryObject = Json::ensureObject(library, {}, "");
|
||||
auto libraryName = Json::ensureString(libraryObject, "name", "", "");
|
||||
auto libraryObject = library.toObject();
|
||||
auto libraryName = libraryObject["name"].toString();
|
||||
|
||||
if (libraryName.startsWith("net.neoforged.fancymodloader:")) { // it is neoforge
|
||||
// no easy way to get the version from the libs so use the arguments
|
||||
auto arguments = Json::ensureObject(root, "arguments", {});
|
||||
auto arguments = root["arguments"].toObject();
|
||||
bool isVersionArg = false;
|
||||
QString neoforgeVersion;
|
||||
for (auto arg : Json::ensureArray(arguments, "game", {})) {
|
||||
auto argument = Json::ensureString(arg, "");
|
||||
for (auto arg : arguments["game"].toArray()) {
|
||||
auto argument = arg.toString("");
|
||||
if (isVersionArg) {
|
||||
neoforgeVersion = argument;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user