Commit a060459e authored by Craig Watson's avatar Craig Watson

Removed obsolete QHttp functions; added new checkUpdate() and associated functions

parent 087738d5
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <QScriptValue> #include <QScriptValue>
#include <QScriptEngine> #include <QScriptEngine>
#include <QUrl>
#include "UBApplicationController.h" #include "UBApplicationController.h"
...@@ -87,7 +88,6 @@ UBApplicationController::UBApplicationController(UBBoardView *pControlView, ...@@ -87,7 +88,6 @@ UBApplicationController::UBApplicationController(UBBoardView *pControlView,
, mAutomaticCheckForUpdates(false) , mAutomaticCheckForUpdates(false)
, mCheckingForUpdates(false) , mCheckingForUpdates(false)
, mIsShowingDesktop(false) , mIsShowingDesktop(false)
, mHttp(0)
{ {
mDisplayManager = new UBDisplayManager(this); mDisplayManager = new UBDisplayManager(this);
...@@ -138,7 +138,6 @@ UBApplicationController::~UBApplicationController() ...@@ -138,7 +138,6 @@ UBApplicationController::~UBApplicationController()
delete mBlackScene; delete mBlackScene;
delete mMirror; delete mMirror;
if (mHttp) delete mHttp;
delete(mOpenSankoreImporter); delete(mOpenSankoreImporter);
mOpenSankoreImporter = NULL; mOpenSankoreImporter = NULL;
...@@ -479,47 +478,55 @@ void UBApplicationController::showDesktop(bool dontSwitchFrontProcess) ...@@ -479,47 +478,55 @@ void UBApplicationController::showDesktop(bool dontSwitchFrontProcess)
UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
} }
void UBApplicationController::checkUpdate(QString urlString) void UBApplicationController::checkUpdate(QString urlString)
{ {
if(mHttp) //connect(networkAccessManager, &QNetworkAccessManager::finished,
mHttp->deleteLater(); // this, &UBApplicationController::updateRequestFinished);
QUrl url(urlString);
mHttp = new QHttp(url.host()); connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)),
connect(mHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(updateRequestFinished(int,bool))); this, SLOT(updateRequestFinished(QNetworkReply*)));
connect(mHttp, SIGNAL(responseHeaderReceived(QHttpResponseHeader)), this, SLOT(updateHeaderReceived(QHttpResponseHeader)));
networkAccessManager->get(QNetworkRequest(QUrl(urlString)));
mHttp->get(url.path());
} }
void UBApplicationController::updateHeaderReceived(QHttpResponseHeader header)
void UBApplicationController::updateRequestFinished(QNetworkReply * reply)
{ {
if(header.statusCode() == 302 && header.hasKey("Location")){ if (reply->error()) {
mHttp->close(); qWarning() << "HTTP Error";
checkUpdate(header.value("Location")); 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) checkUpdate(redirect_url.toString());
{ return;
if (error){
qWarning() << "http command id" << id << "return an error";
} }
else{
QString responseString = QString(mHttp->readAll());
// No error and no redirect => we read the whole response
QString responseString = QString(reply->readAll());
qDebug() << responseString; qDebug() << responseString;
if (!responseString.isEmpty() && responseString.contains("version") && responseString.contains("url")){
mHttp->close(); if (!responseString.isEmpty() &&
mHttp->deleteLater(); responseString.contains("version") &&
mHttp = 0; responseString.contains("url")) {
reply->close();
reply->deleteLater();
downloadJsonFinished(responseString); downloadJsonFinished(responseString);
} }
}
} }
void UBApplicationController::downloadJsonFinished(QString currentJson) void UBApplicationController::downloadJsonFinished(QString currentJson)
{ {
QScriptValue scriptValue; QScriptValue scriptValue;
......
...@@ -29,8 +29,6 @@ ...@@ -29,8 +29,6 @@
#define UBAPPLICATIONCONTROLLER_H_ #define UBAPPLICATIONCONTROLLER_H_
#include <QtGui> #include <QtGui>
#include <QFtp>
#include <QHttpResponseHeader>
class UBBoardView; class UBBoardView;
...@@ -146,8 +144,7 @@ class UBApplicationController : public QObject ...@@ -146,8 +144,7 @@ class UBApplicationController : public QObject
void checkAtLaunch(); void checkAtLaunch();
private slots: private slots:
void updateRequestFinished(int id, bool error); void updateRequestFinished(QNetworkReply * reply);
void updateHeaderReceived(QHttpResponseHeader header);
protected: protected:
...@@ -186,7 +183,6 @@ class UBApplicationController : public QObject ...@@ -186,7 +183,6 @@ class UBApplicationController : public QObject
QNetworkAccessManager *networkAccessManager; QNetworkAccessManager *networkAccessManager;
void downloadJsonFinished(QString updateString); void downloadJsonFinished(QString updateString);
QHttp* mHttp;
}; };
#endif /* UBAPPLICATIONCONTROLLER_H_ */ #endif /* UBAPPLICATIONCONTROLLER_H_ */
...@@ -77,7 +77,7 @@ void UBAsyncLocalFileDownloader::run() ...@@ -77,7 +77,7 @@ void UBAsyncLocalFileDownloader::run()
if (mDesc.originalSrcUrl.isEmpty()) if (mDesc.originalSrcUrl.isEmpty())
mDesc.originalSrcUrl = mDesc.srcUrl; mDesc.originalSrcUrl = mDesc.srcUrl;
QString uuid = QUuid::createUuid(); QString uuid = QUuid::createUuid().toString();
UBPersistenceManager::persistenceManager()->addFileToDocument(UBApplication::boardController->selectedDocument(), UBPersistenceManager::persistenceManager()->addFileToDocument(UBApplication::boardController->selectedDocument(),
mDesc.srcUrl, mDesc.srcUrl,
destDirectory, destDirectory,
...@@ -399,8 +399,7 @@ void UBDownloadManager::startFileDownload(sDownloadFileDesc desc) ...@@ -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))); 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. //the desc.srcUrl is encoded. So we have to decode it before.
QUrl url; QUrl url = QUrl::fromEncoded(desc.srcUrl.toUtf8());
url.setEncodedUrl(desc.srcUrl.toUtf8());
// We send here the request and store its reply in order to be able to cancel it if needed // We send here the request and store its reply in order to be able to cancel it if needed
mDownloads[desc.id] = dynamic_cast<QObject *>(http->get(url, desc.pos, desc.size, desc.isBackground)); mDownloads[desc.id] = dynamic_cast<QObject *>(http->get(url, desc.pos, desc.size, desc.isBackground));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment