From 5d3bddac01de8b1d73f0831b7a4def00f67a7bf7 Mon Sep 17 00:00:00 2001 From: Nav Date: Mon, 18 Oct 2021 01:04:40 +0100 Subject: [PATCH] Latest version number query task --- CMakeLists.txt | 3 ++ .../Tasks/QueryLatestVersionNumber.cpp | 29 +++++++++++++++++++ .../Tasks/QueryLatestVersionNumber.hpp | 24 +++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 src/Insight/InsightWorker/Tasks/QueryLatestVersionNumber.cpp create mode 100644 src/Insight/InsightWorker/Tasks/QueryLatestVersionNumber.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c2d450c..9d8f6051 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,7 @@ find_package(Qt6Xml) find_package(Qt6Svg) find_package(Qt6UiTools) find_package(Qt6SvgWidgets) +find_package(Qt6Network) set(CMAKE_SKIP_BUILD_RPATH false) set(CMAKE_BUILD_RPATH_USE_ORIGIN true) @@ -137,6 +138,7 @@ add_executable(Bloom src/Insight/InsightWorker/Tasks/RefreshTargetPinStates.cpp src/Insight/InsightWorker/Tasks/SetTargetPinState.cpp src/Insight/InsightWorker/Tasks/ReadTargetMemory.cpp + src/Insight/InsightWorker/Tasks/QueryLatestVersionNumber.cpp # Error dialogue window src/Insight/UserInterfaces/InsightWindow/Widgets/ErrorDialogue/ErrorDialogue.cpp @@ -235,6 +237,7 @@ target_link_libraries(Bloom Qt6::Widgets) target_link_libraries(Bloom Qt6::Xml) target_link_libraries(Bloom Qt6::Svg) target_link_libraries(Bloom Qt6::SvgWidgets) +target_link_libraries(Bloom Qt6::Network) target_compile_options( Bloom diff --git a/src/Insight/InsightWorker/Tasks/QueryLatestVersionNumber.cpp b/src/Insight/InsightWorker/Tasks/QueryLatestVersionNumber.cpp new file mode 100644 index 00000000..e294c164 --- /dev/null +++ b/src/Insight/InsightWorker/Tasks/QueryLatestVersionNumber.cpp @@ -0,0 +1,29 @@ +#include "QueryLatestVersionNumber.hpp" + +#include +#include +#include +#include +#include +#include + +using namespace Bloom; + +void QueryLatestVersionNumber::run(TargetControllerConsole& targetControllerConsole) { + auto networkAccessManager = new QNetworkAccessManager(this); + auto queryVersionEndpointUrl = QUrl("http://bloom.local/latest-version"); + queryVersionEndpointUrl.setQuery(QUrlQuery({ + {"currentVersionNumber", this->currentVersionNumber} + })); + + auto response = networkAccessManager->get(QNetworkRequest(queryVersionEndpointUrl)); + this->connect(response, &QNetworkReply::finished, this, [this, response] { + const auto jsonResponseObject = QJsonDocument::fromJson(response->readAll()).object(); + + if (jsonResponseObject.contains("latestVersionNumber")) { + emit this->latestVersionNumberRetrieved( + jsonResponseObject.value("latestVersionNumber").toString() + ); + } + }); +} diff --git a/src/Insight/InsightWorker/Tasks/QueryLatestVersionNumber.hpp b/src/Insight/InsightWorker/Tasks/QueryLatestVersionNumber.hpp new file mode 100644 index 00000000..1e96f900 --- /dev/null +++ b/src/Insight/InsightWorker/Tasks/QueryLatestVersionNumber.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include "InsightWorkerTask.hpp" + +namespace Bloom +{ + class QueryLatestVersionNumber: public InsightWorkerTask + { + Q_OBJECT + + public: + QueryLatestVersionNumber(const QString& currentVersionNumber): + InsightWorkerTask(), currentVersionNumber(currentVersionNumber) {} + + signals: + void latestVersionNumberRetrieved(const QString& latestVersionNumber); + + protected: + void run(TargetControllerConsole& targetControllerConsole) override; + + private: + QString currentVersionNumber; + }; +}