From a060459e1a880e814c7fd9801ef1171fa2783af0 Mon Sep 17 00:00:00 2001 From: Craig Watson Date: Fri, 6 Nov 2015 09:28:51 +0100 Subject: [PATCH] Removed obsolete QHttp functions; added new checkUpdate() and associated functions --- src/core/UBApplicationController.cpp | 71 +++++++++++++++------------- src/core/UBApplicationController.h | 6 +-- src/core/UBDownloadManager.cpp | 5 +- 3 files changed, 42 insertions(+), 40 deletions(-) diff --git a/src/core/UBApplicationController.cpp b/src/core/UBApplicationController.cpp index 5d7e5ce6..6f0908e8 100644 --- a/src/core/UBApplicationController.cpp +++ b/src/core/UBApplicationController.cpp @@ -24,6 +24,7 @@ #include #include +#include #include "UBApplicationController.h" @@ -87,7 +88,6 @@ UBApplicationController::UBApplicationController(UBBoardView *pControlView, , mAutomaticCheckForUpdates(false) , mCheckingForUpdates(false) , mIsShowingDesktop(false) - , mHttp(0) { mDisplayManager = new UBDisplayManager(this); @@ -138,7 +138,6 @@ UBApplicationController::~UBApplicationController() delete mBlackScene; delete mMirror; - if (mHttp) delete mHttp; delete(mOpenSankoreImporter); mOpenSankoreImporter = NULL; @@ -479,45 +478,53 @@ void UBApplicationController::showDesktop(bool dontSwitchFrontProcess) UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); } - void UBApplicationController::checkUpdate(QString urlString) { - if(mHttp) - mHttp->deleteLater(); - QUrl url(urlString); - mHttp = new QHttp(url.host()); - connect(mHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(updateRequestFinished(int,bool))); - connect(mHttp, SIGNAL(responseHeaderReceived(QHttpResponseHeader)), this, SLOT(updateHeaderReceived(QHttpResponseHeader))); - - mHttp->get(url.path()); + //connect(networkAccessManager, &QNetworkAccessManager::finished, + // this, &UBApplicationController::updateRequestFinished); + + connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)), + this, SLOT(updateRequestFinished(QNetworkReply*))); + + networkAccessManager->get(QNetworkRequest(QUrl(urlString))); + } -void UBApplicationController::updateHeaderReceived(QHttpResponseHeader header) + + +void UBApplicationController::updateRequestFinished(QNetworkReply * reply) { - if(header.statusCode() == 302 && header.hasKey("Location")){ - mHttp->close(); - checkUpdate(header.value("Location")); + if (reply->error()) { + qWarning() << "HTTP Error"; + return; } + // Check if we are being redirected. If so, call checkUpdate again + QVariant redirect_target = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); -} + if (!redirect_target.isNull()) { + // The returned URL might be relative. resolved() creates an absolute url from it + QUrl redirect_url(reply->url().resolved(redirect_target.toUrl())); -void UBApplicationController::updateRequestFinished(int id, bool error) -{ - if (error){ - qWarning() << "http command id" << id << "return an error"; - } - else{ - QString responseString = QString(mHttp->readAll()); - qDebug() << responseString; - if (!responseString.isEmpty() && responseString.contains("version") && responseString.contains("url")){ - mHttp->close(); - mHttp->deleteLater(); - mHttp = 0; - downloadJsonFinished(responseString); - } - } -} + checkUpdate(redirect_url.toString()); + return; + } + + + // No error and no redirect => we read the whole response + + QString responseString = QString(reply->readAll()); + qDebug() << responseString; + if (!responseString.isEmpty() && + responseString.contains("version") && + responseString.contains("url")) { + + reply->close(); + reply->deleteLater(); + + downloadJsonFinished(responseString); + } +} void UBApplicationController::downloadJsonFinished(QString currentJson) diff --git a/src/core/UBApplicationController.h b/src/core/UBApplicationController.h index a33da6d7..cdcb5051 100644 --- a/src/core/UBApplicationController.h +++ b/src/core/UBApplicationController.h @@ -29,8 +29,6 @@ #define UBAPPLICATIONCONTROLLER_H_ #include -#include -#include class UBBoardView; @@ -146,8 +144,7 @@ class UBApplicationController : public QObject void checkAtLaunch(); private slots: - void updateRequestFinished(int id, bool error); - void updateHeaderReceived(QHttpResponseHeader header); + void updateRequestFinished(QNetworkReply * reply); protected: @@ -186,7 +183,6 @@ class UBApplicationController : public QObject QNetworkAccessManager *networkAccessManager; void downloadJsonFinished(QString updateString); - QHttp* mHttp; }; #endif /* UBAPPLICATIONCONTROLLER_H_ */ diff --git a/src/core/UBDownloadManager.cpp b/src/core/UBDownloadManager.cpp index ed365520..666f5690 100644 --- a/src/core/UBDownloadManager.cpp +++ b/src/core/UBDownloadManager.cpp @@ -77,7 +77,7 @@ void UBAsyncLocalFileDownloader::run() if (mDesc.originalSrcUrl.isEmpty()) mDesc.originalSrcUrl = mDesc.srcUrl; - QString uuid = QUuid::createUuid(); + QString uuid = QUuid::createUuid().toString(); UBPersistenceManager::persistenceManager()->addFileToDocument(UBApplication::boardController->selectedDocument(), mDesc.srcUrl, destDirectory, @@ -399,8 +399,7 @@ void UBDownloadManager::startFileDownload(sDownloadFileDesc desc) connect(http, SIGNAL(downloadFinished(int, bool, QUrl, QUrl, QString, QByteArray, QPointF, QSize, bool)), this, SLOT(onDownloadFinished(int, bool, QUrl, QUrl, QString, QByteArray, QPointF, QSize, bool))); //the desc.srcUrl is encoded. So we have to decode it before. - QUrl url; - url.setEncodedUrl(desc.srcUrl.toUtf8()); + QUrl url = QUrl::fromEncoded(desc.srcUrl.toUtf8()); // We send here the request and store its reply in order to be able to cancel it if needed mDownloads[desc.id] = dynamic_cast(http->get(url, desc.pos, desc.size, desc.isBackground)); }