diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-04-10 15:53:05 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-05-01 00:00:14 +0200 |
commit | b6d455a02bd338e9dc0faa09d4d8177ecd8d569a (patch) | |
tree | 41982bca1ede50049f2f8c7109dd18edeefde6d0 /libraries/logic/status | |
parent | 47e37635f50c09b4f9a9ee7699e3120bab3e4088 (diff) | |
download | MultiMC-b6d455a02bd338e9dc0faa09d4d8177ecd8d569a.tar MultiMC-b6d455a02bd338e9dc0faa09d4d8177ecd8d569a.tar.gz MultiMC-b6d455a02bd338e9dc0faa09d4d8177ecd8d569a.tar.lz MultiMC-b6d455a02bd338e9dc0faa09d4d8177ecd8d569a.tar.xz MultiMC-b6d455a02bd338e9dc0faa09d4d8177ecd8d569a.zip |
NOISSUE reorganize and document libraries
Diffstat (limited to 'libraries/logic/status')
-rw-r--r-- | libraries/logic/status/StatusChecker.cpp | 153 | ||||
-rw-r--r-- | libraries/logic/status/StatusChecker.h | 60 |
2 files changed, 0 insertions, 213 deletions
diff --git a/libraries/logic/status/StatusChecker.cpp b/libraries/logic/status/StatusChecker.cpp deleted file mode 100644 index 13cac037..00000000 --- a/libraries/logic/status/StatusChecker.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* Copyright 2013-2015 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 "StatusChecker.h" - -#include <net/URLConstants.h> - -#include <QByteArray> - -#include <QDebug> - -StatusChecker::StatusChecker() -{ - -} - -void StatusChecker::timerEvent(QTimerEvent *e) -{ - QObject::timerEvent(e); - reloadStatus(); -} - -void StatusChecker::reloadStatus() -{ - if (isLoadingStatus()) - { - // qDebug() << "Ignored request to reload status. Currently reloading already."; - return; - } - - // qDebug() << "Reloading status."; - - NetJob* job = new NetJob("Status JSON"); - job->addNetAction(ByteArrayDownload::make(URLConstants::MOJANG_STATUS_URL)); - QObject::connect(job, &NetJob::succeeded, this, &StatusChecker::statusDownloadFinished); - QObject::connect(job, &NetJob::failed, this, &StatusChecker::statusDownloadFailed); - m_statusNetJob.reset(job); - emit statusLoading(true); - job->start(); -} - -void StatusChecker::statusDownloadFinished() -{ - qDebug() << "Finished loading status JSON."; - m_statusEntries.clear(); - QByteArray data; - { - ByteArrayDownloadPtr dl = std::dynamic_pointer_cast<ByteArrayDownload>(m_statusNetJob->first()); - data = dl->m_data; - m_statusNetJob.reset(); - } - - QJsonParseError jsonError; - QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &jsonError); - - if (jsonError.error != QJsonParseError::NoError) - { - fail("Error parsing status JSON:" + jsonError.errorString()); - return; - } - - if (!jsonDoc.isArray()) - { - fail("Error parsing status JSON: JSON root is not an array"); - return; - } - - QJsonArray root = jsonDoc.array(); - - for(auto status = root.begin(); status != root.end(); ++status) - { - QVariantMap map = (*status).toObject().toVariantMap(); - - for (QVariantMap::const_iterator iter = map.begin(); iter != map.end(); ++iter) - { - QString key = iter.key(); - QVariant value = iter.value(); - - if(value.type() == QVariant::Type::String) - { - m_statusEntries.insert(key, value.toString()); - //qDebug() << "Status JSON object: " << key << m_statusEntries[key]; - } - else - { - fail("Malformed status JSON: expected status type to be a string."); - return; - } - } - } - - succeed(); -} - -void StatusChecker::statusDownloadFailed(QString reason) -{ - fail(tr("Failed to load status JSON:\n%1").arg(reason)); -} - - -QMap<QString, QString> StatusChecker::getStatusEntries() const -{ - return m_statusEntries; -} - -bool StatusChecker::isLoadingStatus() const -{ - return m_statusNetJob.get() != nullptr; -} - -QString StatusChecker::getLastLoadErrorMsg() const -{ - return m_lastLoadError; -} - -void StatusChecker::succeed() -{ - if(m_prevEntries != m_statusEntries) - { - emit statusChanged(m_statusEntries); - m_prevEntries = m_statusEntries; - } - m_lastLoadError = ""; - qDebug() << "Status loading succeeded."; - m_statusNetJob.reset(); - emit statusLoading(false); -} - -void StatusChecker::fail(const QString& errorMsg) -{ - if(m_prevEntries != m_statusEntries) - { - emit statusChanged(m_statusEntries); - m_prevEntries = m_statusEntries; - } - m_lastLoadError = errorMsg; - qDebug() << "Failed to load status:" << errorMsg; - m_statusNetJob.reset(); - emit statusLoading(false); -} - diff --git a/libraries/logic/status/StatusChecker.h b/libraries/logic/status/StatusChecker.h deleted file mode 100644 index c1a54dba..00000000 --- a/libraries/logic/status/StatusChecker.h +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright 2013-2015 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 <QString> -#include <QList> - -#include <net/NetJob.h> - -#include "multimc_logic_export.h" - -class MULTIMC_LOGIC_EXPORT StatusChecker : public QObject -{ - Q_OBJECT -public: - StatusChecker(); - - QString getLastLoadErrorMsg() const; - - bool isLoadingStatus() const; - - QMap<QString, QString> getStatusEntries() const; - - void Q_SLOT reloadStatus(); - -protected: - virtual void timerEvent(QTimerEvent *); - -signals: - void statusLoading(bool loading); - void statusChanged(QMap<QString, QString> newStatus); - -protected slots: - void statusDownloadFinished(); - void statusDownloadFailed(QString reason); - -protected: - QMap<QString, QString> m_prevEntries; - QMap<QString, QString> m_statusEntries; - NetJobPtr m_statusNetJob; - QString m_lastLoadError; - - void Q_SLOT succeed(); - void Q_SLOT fail(const QString& errorMsg); -}; - |