summaryrefslogtreecommitdiffstats
path: root/backend/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'backend/tasks')
-rw-r--r--backend/tasks/GameUpdateTask.cpp140
-rw-r--r--backend/tasks/GameUpdateTask.h82
-rw-r--r--backend/tasks/LoginTask.cpp7
-rw-r--r--backend/tasks/LoginTask.h7
-rw-r--r--backend/tasks/UserInfo.cpp49
-rw-r--r--backend/tasks/UserInfo.h41
6 files changed, 9 insertions, 317 deletions
diff --git a/backend/tasks/GameUpdateTask.cpp b/backend/tasks/GameUpdateTask.cpp
deleted file mode 100644
index f49b551c..00000000
--- a/backend/tasks/GameUpdateTask.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Copyright 2013 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "GameUpdateTask.h"
-
-#include <QtNetwork>
-
-#include <QFile>
-#include <QFileInfo>
-#include <QTextStream>
-#include <QDataStream>
-
-#include <QDebug>
-
-#include "BaseInstance.h"
-#include "lists/MinecraftVersionList.h"
-#include "VersionFactory.h"
-#include "OneSixVersion.h"
-
-#include "pathutils.h"
-
-
-GameUpdateTask::GameUpdateTask(BaseInstance *inst, QObject *parent) :
- Task(parent)
-{
- m_inst = inst;
-}
-
-void GameUpdateTask::executeTask()
-{
- // Get a pointer to the version object that corresponds to the instance's version.
- targetVersion = (MinecraftVersion *)MinecraftVersionList::getMainList().findVersion(m_inst->intendedVersionId());
- if(targetVersion == NULL)
- {
- emit gameUpdateComplete();
- return;
- }
-
- setStatus("Getting the version files from Mojang.");
-
- QString urlstr("http://s3.amazonaws.com/Minecraft.Download/versions/");
- urlstr += targetVersion->descriptor() + "/" + targetVersion->descriptor() + ".json";
- auto dljob = DownloadJob::create(QUrl(urlstr));
- specificVersionDownloadJob.reset(new JobList());
- specificVersionDownloadJob->add(dljob);
- connect(specificVersionDownloadJob.data(), SIGNAL(finished()), SLOT(versionFileFinished()));
- connect(specificVersionDownloadJob.data(), SIGNAL(failed()), SLOT(versionFileFailed()));
- connect(specificVersionDownloadJob.data(), SIGNAL(progress(qint64,qint64)), SLOT(updateDownloadProgress(qint64,qint64)));
- download_queue.enqueue(specificVersionDownloadJob);
-
- QEventLoop loop;
- loop.exec();
-}
-
-void GameUpdateTask::versionFileFinished()
-{
- JobPtr firstJob = specificVersionDownloadJob->getFirstJob();
- auto DlJob = firstJob.dynamicCast<DownloadJob>();
- FullVersionFactory parser;
- auto version = parser.parse(DlJob->m_data);
-
- if(!version)
- {
- error(parser.error_string);
- exit(0);
- }
-
- // save the version file in $instanceId/version.json and versions/$version/$version.json
- QString version_id = targetVersion->descriptor();
- QString inst_dir = m_inst->rootDir();
- QString version1 = PathCombine(inst_dir, "/version.json");
- QString version2 = QString("versions/") + version_id + "/" + version_id + ".json";
- DownloadJob::ensurePathExists(version1);
- DownloadJob::ensurePathExists(version2);
- QFile vfile1 (version1);
- QFile vfile2 (version2);
- vfile1.open(QIODevice::Truncate | QIODevice::WriteOnly );
- vfile2.open(QIODevice::Truncate | QIODevice::WriteOnly );
- vfile1.write(DlJob->m_data);
- vfile2.write(DlJob->m_data);
- vfile1.close();
- vfile2.close();
-
- // download the right jar, save it in versions/$version/$version.jar
- QString urlstr("http://s3.amazonaws.com/Minecraft.Download/versions/");
- urlstr += targetVersion->descriptor() + "/" + targetVersion->descriptor() + ".jar";
- QString targetstr ("versions/");
- targetstr += targetVersion->descriptor() + "/" + targetVersion->descriptor() + ".jar";
- auto dljob = DownloadJob::create(QUrl(urlstr), targetstr);
-
- jarlibDownloadJob.reset(new JobList());
- jarlibDownloadJob->add(dljob);
- connect(jarlibDownloadJob.data(), SIGNAL(finished()), SLOT(jarlibFinished()));
- connect(jarlibDownloadJob.data(), SIGNAL(failed()), SLOT(jarlibFailed()));
- connect(jarlibDownloadJob.data(), SIGNAL(progress(qint64,qint64)), SLOT(updateDownloadProgress(qint64,qint64)));
- // determine and download all the libraries, save them in libraries/whatever...
- download_queue.enqueue(jarlibDownloadJob);
-}
-
-void GameUpdateTask::jarlibFinished()
-{
- exit(1);
-}
-
-void GameUpdateTask::jarlibFailed()
-{
- error("Failed to download the binary garbage. Try again. Maybe. IF YOU DARE");
- exit(0);
-}
-
-void GameUpdateTask::versionFileFailed()
-{
- error("Failed to download the version description. Try again.");
- exit(0);
-}
-
-void GameUpdateTask::error(const QString &msg)
-{
- emit gameUpdateError(msg);
-}
-
-void GameUpdateTask::updateDownloadProgress(qint64 current, qint64 total)
-{
- // The progress on the current file is current / total
- float currentDLProgress = (float) current / (float) total;
- setProgress((int)(currentDLProgress * 100)); // convert to percentage
-}
-
diff --git a/backend/tasks/GameUpdateTask.h b/backend/tasks/GameUpdateTask.h
deleted file mode 100644
index f13f42d1..00000000
--- a/backend/tasks/GameUpdateTask.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Copyright 2013 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <QObject>
-
-#include <QList>
-
-#include <QNetworkAccessManager>
-#include <QUrl>
-#include "dlqueue.h"
-
-#include "Task.h"
-#include "libmmc_config.h"
-
-class MinecraftVersion;
-class BaseInstance;
-
-/*!
- * The game update task is the task that handles downloading instances' files.
- */
-class LIBMULTIMC_EXPORT GameUpdateTask : public Task
-{
- Q_OBJECT
-public:
- explicit GameUpdateTask(BaseInstance *inst, QObject *parent = 0);
-
- virtual void executeTask();
-
-public slots:
- virtual void error(const QString &msg);
-
-private slots:
- void updateDownloadProgress(qint64 current, qint64 total);
-
- void versionFileFinished();
- void versionFileFailed();
-
- void jarlibFinished();
- void jarlibFailed();
-
-signals:
- /*!
- * \brief Signal emitted when the game update is complete.
- * \param response The login response received from login task.
- */
- void gameUpdateComplete();
-
- /*!
- * \brief Signal emitted if an error occurrs during the update.
- * \param errorMsg An error message to be displayed to the user.
- */
- void gameUpdateError(const QString &errorMsg);
-
-private:
- BaseInstance *m_inst;
-
- QString m_subStatusMsg;
-
- JobListPtr legacyDownloadJob;
- JobListPtr specificVersionDownloadJob;
- JobListPtr jarlibDownloadJob;
- JobListQueue download_queue;
-
- // target version, determined during this task
- MinecraftVersion *targetVersion;
-};
-
-
diff --git a/backend/tasks/LoginTask.cpp b/backend/tasks/LoginTask.cpp
index 999a718e..88cdbacc 100644
--- a/backend/tasks/LoginTask.cpp
+++ b/backend/tasks/LoginTask.cpp
@@ -40,12 +40,11 @@ void LoginTask::executeTask()
QUrl loginURL("https://login.minecraft.net/");
QNetworkRequest netRequest(loginURL);
- netRequest.setHeader(QNetworkRequest::ContentTypeHeader,
- "application/x-www-form-urlencoded");
+ netRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
QUrlQuery params;
- params.addQueryItem("user", uInfo.username());
- params.addQueryItem("password", uInfo.password());
+ params.addQueryItem("user", uInfo.username);
+ params.addQueryItem("password", uInfo.password);
params.addQueryItem("version", "13");
netReply = netMgr.post(netRequest, params.query(QUrl::EncodeSpaces).toUtf8());
diff --git a/backend/tasks/LoginTask.h b/backend/tasks/LoginTask.h
index cb606204..3f72bb0b 100644
--- a/backend/tasks/LoginTask.h
+++ b/backend/tasks/LoginTask.h
@@ -18,9 +18,14 @@
#include "Task.h"
-#include "UserInfo.h"
#include "libmmc_config.h"
+struct UserInfo
+{
+ QString username;
+ QString password;
+};
+
struct LoginResponse
{
QString username;
diff --git a/backend/tasks/UserInfo.cpp b/backend/tasks/UserInfo.cpp
deleted file mode 100644
index 82225309..00000000
--- a/backend/tasks/UserInfo.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright 2013 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "UserInfo.h"
-
-UserInfo::UserInfo(const QString &username, const QString &password, QObject *parent) :
- QObject(parent)
-{
- this->m_username = username;
- this->m_password = password;
-}
-
-UserInfo::UserInfo(const UserInfo &other)
-{
- this->m_username = other.m_username;
- this->m_password = other.m_password;
-}
-
-QString UserInfo::username() const
-{
- return m_username;
-}
-
-void UserInfo::setUsername(const QString &username)
-{
- this->m_username = username;
-}
-
-QString UserInfo::password() const
-{
- return m_password;
-}
-
-void UserInfo::setPassword(const QString &password)
-{
- this->m_password = password;
-}
diff --git a/backend/tasks/UserInfo.h b/backend/tasks/UserInfo.h
deleted file mode 100644
index 280f98de..00000000
--- a/backend/tasks/UserInfo.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright 2013 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef USERINFO_H
-#define USERINFO_H
-
-#include <QObject>
-
-#include "libmmc_config.h"
-
-class LIBMULTIMC_EXPORT UserInfo : public QObject
-{
- Q_OBJECT
-public:
- explicit UserInfo(const QString& username, const QString& password, QObject *parent = 0);
- explicit UserInfo(const UserInfo& other);
-
- QString username() const;
- void setUsername(const QString& username);
-
- QString password() const;
- void setPassword(const QString& password);
-
-protected:
- QString m_username;
- QString m_password;
-};
-
-#endif // USERINFO_H