aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/flame/FileResolvingTask.cpp
diff options
context:
space:
mode:
authortimoreo22 <timo.oreo34@gmail.com>2022-05-21 06:34:43 +0200
committerGitHub <noreply@github.com>2022-05-21 06:34:43 +0200
commit92e8aaf36f72b7527322add169b253d0698939d0 (patch)
treef90ccb0973386de577f6f9d08064ddee53a74f15 /launcher/modplatform/flame/FileResolvingTask.cpp
parent88a93945d4c9a11bf53016133335d359b819585e (diff)
parent3b4b34b3695e655f591347754a724804bea96d71 (diff)
downloadPrismLauncher-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.cpp16
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();