aboutsummaryrefslogtreecommitdiffstats
path: root/src/module/mods/ver_check/VersionCheckTask.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/module/mods/ver_check/VersionCheckTask.cpp')
-rw-r--r--src/module/mods/ver_check/VersionCheckTask.cpp171
1 files changed, 0 insertions, 171 deletions
diff --git a/src/module/mods/ver_check/VersionCheckTask.cpp b/src/module/mods/ver_check/VersionCheckTask.cpp
deleted file mode 100644
index 5ea9c48e..00000000
--- a/src/module/mods/ver_check/VersionCheckTask.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric <[email protected]>
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric <[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#include "VersionCheckTask.h"
-
-#include <GFSDKBasic.h>
-#include <GFSDKExtra.h>
-#include <GFSDKLog.h>
-
-#include <QMetaType>
-#include <QtNetwork>
-
-VersionCheckTask::VersionCheckTask()
- : network_manager_(new QNetworkAccessManager(this)),
- current_version_(GFProjectVersion()) {
- qRegisterMetaType<SoftwareVersion>("SoftwareVersion");
- version_.current_version = current_version_;
-}
-
-auto VersionCheckTask::Run() -> int {
- GFModuleLogDebug(
- fmt::format("current project version: {}", current_version_).c_str());
- QString latest_version_url =
- "https://api.github.com/repos/saturneric/gpgfrontend/releases/latest";
-
- QNetworkRequest latest_request(latest_version_url);
- latest_request.setHeader(QNetworkRequest::UserAgentHeader,
- GFHttpRequestUserAgent());
-
- latest_reply_ = network_manager_->get(latest_request);
- connect(latest_reply_, &QNetworkReply::finished, this,
- &VersionCheckTask::slot_parse_latest_version_info);
- return 0;
-}
-
-void VersionCheckTask::slot_parse_latest_version_info() {
- if (latest_reply_ == nullptr) {
- version_.latest_version = current_version_;
- version_.loading_done = false;
- } else if (latest_reply_->error() != QNetworkReply::NoError) {
- GFModuleLogError(fmt::format("latest version request error: ",
- latest_reply_->errorString())
- .c_str());
- version_.latest_version = current_version_;
- } else {
- latest_reply_bytes_ = latest_reply_->readAll();
- auto latest_reply_json = QJsonDocument::fromJson(latest_reply_bytes_);
-
- if (latest_reply_json.isObject()) {
- QString latest_version = latest_reply_json["tag_name"].toString();
-
- QRegularExpression re(R"(^[vV](\d+\.)?(\d+\.)?(\*|\d+))");
- auto version_match = re.match(latest_version);
- if (version_match.hasMatch()) {
- latest_version = version_match.captured(0);
- GFModuleLogInfo(fmt::format("latest released version from github: {}",
- latest_version)
- .c_str());
- } else {
- latest_version = current_version_;
- GFModuleLogWarn(
- fmt::format("latest version unknown, set to current version: {}",
- current_version_)
- .c_str());
- }
-
- bool prerelease = latest_reply_json["prerelease"].toBool();
- bool draft = latest_reply_json["draft"].toBool();
- auto publish_date = latest_reply_json["published_at"].toString();
- auto release_note = latest_reply_json["body"].toString();
- version_.latest_version = latest_version;
- version_.latest_prerelease_version_from_remote = prerelease;
- version_.latest_draft_from_remote = draft;
- version_.publish_date = publish_date;
- version_.release_note = release_note;
- } else {
- GFModuleLogWarn(fmt::format("cannot parse data got from github: {}",
- latest_reply_bytes_)
- .c_str());
- }
- }
-
- if (latest_reply_ != nullptr) {
- latest_reply_->deleteLater();
- }
-
- try {
- QString current_version_url =
- "https://api.github.com/repos/saturneric/gpgfrontend/releases/tags/" +
- current_version_;
- GFModuleLogDebug(
- fmt::format("current version info query url: {}", current_version_url)
- .c_str());
-
- QNetworkRequest current_request(current_version_url);
- current_request.setHeader(QNetworkRequest::UserAgentHeader,
- GFHttpRequestUserAgent());
-
- current_reply_ = network_manager_->get(current_request);
-
- connect(current_reply_, &QNetworkReply::finished, this,
- &VersionCheckTask::slot_parse_current_version_info);
- } catch (...) {
- GFModuleLogError("current version request create error");
- }
-}
-
-void VersionCheckTask::slot_parse_current_version_info() {
- if (current_reply_ == nullptr) {
- // loading done
- version_.loading_done = false;
-
- } else if (current_reply_->error() != QNetworkReply::NoError) {
- GFModuleLogError(fmt::format("current version request network error: {}",
- current_reply_->errorString())
- .c_str());
-
- // loading done
- version_.loading_done = true;
- version_.current_version_publish_in_remote = false;
- } else {
- version_.current_version_publish_in_remote = true;
- current_reply_bytes_ = current_reply_->readAll();
- auto current_reply_json = QJsonDocument::fromJson(current_reply_bytes_);
-
- if (current_reply_json.isObject()) {
- bool current_prerelease = current_reply_json["prerelease"].toBool();
- bool current_draft = current_reply_json["draft"].toBool();
- version_.latest_prerelease_version_from_remote = current_prerelease;
- version_.latest_draft_from_remote = current_draft;
- // loading done
- version_.loading_done = true;
- } else {
- GFModuleLogWarn(fmt::format("cannot parse data got from github: {}",
- current_reply_bytes_)
- .c_str());
- }
- }
-
- GFModuleLogDebug(fmt::format("current version parse done: {}",
- version_.current_version_publish_in_remote)
- .c_str());
-
- if (current_reply_ != nullptr) current_reply_->deleteLater();
- emit SignalUpgradeVersion(version_);
-}