diff options
author | timoreo22 <timo.oreo34@gmail.com> | 2022-05-21 06:34:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-21 06:34:43 +0200 |
commit | 92e8aaf36f72b7527322add169b253d0698939d0 (patch) | |
tree | f90ccb0973386de577f6f9d08064ddee53a74f15 /launcher/modplatform/flame/FileResolvingTask.cpp | |
parent | 88a93945d4c9a11bf53016133335d359b819585e (diff) | |
parent | 3b4b34b3695e655f591347754a724804bea96d71 (diff) | |
download | PrismLauncher-92e8aaf36f72b7527322add169b253d0698939d0.tar.gz PrismLauncher-92e8aaf36f72b7527322add169b253d0698939d0.tar.bz2 PrismLauncher-92e8aaf36f72b7527322add169b253d0698939d0.zip |
Merge pull request #608 from timoreo22/feature/curseforge-fix
Very Temporary Fix for curseforge
Diffstat (limited to 'launcher/modplatform/flame/FileResolvingTask.cpp')
-rw-r--r-- | launcher/modplatform/flame/FileResolvingTask.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/launcher/modplatform/flame/FileResolvingTask.cpp b/launcher/modplatform/flame/FileResolvingTask.cpp index 95924a68..0deb99c4 100644 --- a/launcher/modplatform/flame/FileResolvingTask.cpp +++ b/launcher/modplatform/flame/FileResolvingTask.cpp @@ -31,7 +31,21 @@ void Flame::FileResolvingTask::netJobFinished() for (auto& bytes : results) { auto& out = m_toProcess.files[index]; try { - failed &= (!out.parseFromBytes(bytes)); + bool fail = (!out.parseFromBytes(bytes)); + if(fail){ + //failed :( probably disabled mod, try to add to the list + auto doc = Json::requireDocument(bytes); + if (!doc.isObject()) { + throw JSONValidationError(QString("data is not an object? that's not supposed to happen")); + } + auto obj = Json::ensureObject(doc.object(), "data"); + //FIXME : HACK, MAY NOT WORK FOR LONG + out.url = QUrl(QString("https://media.forgecdn.net/files/%1/%2/%3") + .arg(QString::number(QString::number(out.fileId).leftRef(4).toInt()) + ,QString::number(QString::number(out.fileId).rightRef(3).toInt()) + ,QUrl::toPercentEncoding(out.fileName)), QUrl::TolerantMode); + } + failed &= fail; } catch (const JSONValidationError& e) { qCritical() << "Resolving of" << out.projectId << out.fileId << "failed because of a parsing error:"; qCritical() << e.cause(); |