Work on issue #6

This commit is contained in:
Alex Spataru 2017-05-23 05:43:37 -05:00
parent 401f79cdfc
commit e0c7e41212
7 changed files with 80 additions and 9 deletions

View File

@ -1,2 +1,2 @@
# Style and format recursively
astyle --style=linux --indent=spaces --align-pointer=type --indent-preproc-block --indent-preproc-define --indent-col1-comments --pad-first-paren-out --pad-oper --attach-namespaces --remove-brackets --convert-tabs --close-templates --max-code-length=100 --max-instatement-indent=50 --lineend=windows --suffix=none --recursive ../../*.h ../../*.c ../../*.cpp ../../*.cc
astyle --style=linux --indent=spaces --align-pointer=type --indent-preproc-block --indent-preproc-define --indent-col1-comments --pad-first-paren-out --pad-oper --attach-namespaces --remove-brackets --convert-tabs --close-templates --max-code-length=100 --max-instatement-indent=50 --lineend=windows --suffix=none --recursive ../../*.h ../../*.cpp ../../*.cc

View File

@ -89,6 +89,7 @@ public:
QString getPlatformKey (const QString& url) const;
QString getLatestVersion (const QString& url) const;
QString getModuleVersion (const QString& url) const;
QString getUserAgentString (const QString& url) const;
public slots:
void checkForUpdates (const QString& url);
@ -98,6 +99,7 @@ public slots:
void setPlatformKey (const QString& url, const QString& platform);
void setModuleVersion (const QString& url, const QString& version);
void setDownloaderEnabled (const QString& url, const bool enabled);
void setUserAgentString (const QString& url, const QString& agent);
void setUseCustomAppcast (const QString& url, const bool customAppcast);
void setUseCustomInstallProcedures (const QString& url, const bool custom);

View File

@ -112,9 +112,14 @@ void Downloader::startDownload (const QUrl& url)
m_ui->downloadLabel->setText (tr ("Downloading updates"));
m_ui->timeLabel->setText (tr ("Time remaining") + ": " + tr ("unknown"));
/* Configure the network request */
QNetworkRequest request (url);
if (!m_userAgentString.isEmpty())
request.setRawHeader ("User-Agent", m_userAgentString.toUtf8());
/* Start download */
m_startTime = QDateTime::currentDateTime().toTime_t();
m_reply = m_manager->get (QNetworkRequest (url));
m_reply = m_manager->get (request);
/* Ensure that downloads directory exists */
if (!DOWNLOAD_DIR.exists())
@ -384,6 +389,14 @@ qreal Downloader::round (const qreal& input)
return roundf (input * 100) / 100;
}
/**
* Changes the user-agent string used to communicate with the remote HTTP server
*/
void Downloader::setUserAgentString (const QString& agent)
{
m_userAgentString = agent;
}
/**
* If the \a custom parameter is set to \c true, then the \c Downloader will not
* attempt to open the downloaded file.

View File

@ -60,6 +60,7 @@ public slots:
void setUrlId (const QString& url);
void startDownload (const QUrl& url);
void setFileName (const QString& file);
void setUserAgentString (const QString& agent);
void setUseCustomInstallProcedures (const bool custom);
private slots:
@ -80,6 +81,7 @@ private:
QString m_fileName;
Ui::Downloader* m_ui;
QNetworkReply* m_reply;
QString m_userAgentString;
bool m_useCustomProcedures;
QNetworkAccessManager* m_manager;
};

View File

@ -229,6 +229,18 @@ QString QSimpleUpdater::getModuleVersion (const QString& url) const
return getUpdater (url)->moduleVersion();
}
/**
* Returns the user-agent string used by the updater to communicate with
* the remote HTTP(S) server.
*
* \note If an \c Updater instance registered with the given \a url is not
* found, that \c Updater instance will be initialized automatically
*/
QString QSimpleUpdater::getUserAgentString (const QString& url) const
{
return getUpdater (url)->userAgentString();
}
/**
* Instructs the \c Updater instance with the registered \c url to download and
* interpret the update definitions file.
@ -330,6 +342,19 @@ void QSimpleUpdater::setDownloaderEnabled (const QString& url,
getUpdater (url)->setDownloaderEnabled (enabled);
}
/**
* Changes the user-agent string used by the updater to communicate
* with the remote server
*
* \note If an \c Updater instance registered with the given \a url is not
* found, that \c Updater instance will be initialized automatically
*/
void QSimpleUpdater::setUserAgentString (const QString& url,
const QString& agent)
{
getUpdater (url)->setUserAgentString (agent);
}
/**
* If the \a customAppcast parameter is set to \c true, then the \c Updater
* will not try to read the network reply from the server, instead, it will

View File

@ -67,6 +67,9 @@ Updater::Updater()
m_platform = "ios";
#endif
setUserAgentString (QString ("%1/%2 (Qt; QSimpleUpdater)").arg (qApp->applicationName(),
qApp->applicationVersion()));
connect (m_downloader, SIGNAL (downloadFinished (QString, QString)),
this, SIGNAL (downloadFinished (QString, QString)));
connect (m_manager, SIGNAL (finished (QNetworkReply*)),
@ -147,6 +150,15 @@ QString Updater::latestVersion() const
return m_latestVersion;
}
/**
* Returns the user-agent header used by the client when communicating
* with the server through HTTP
*/
QString Updater::userAgentString() const
{
return m_userAgentString;
}
/**
* Returns the "local" version of the installed module
*/
@ -221,7 +233,11 @@ bool Updater::useCustomInstallProcedures() const
*/
void Updater::checkForUpdates()
{
m_manager->get (QNetworkRequest (url()));
QNetworkRequest request (url());
if (!userAgentString().isEmpty())
request.setRawHeader ("User-Agent", userAgentString().toUtf8());
m_manager->get (request);
}
/**
@ -261,6 +277,18 @@ void Updater::setNotifyOnFinish (const bool notify)
m_notifyOnFinish = notify;
}
/**
* Changes the user agent string used to identify the client application
* from the server in a HTTP session.
*
* By default, the user agent will co
*/
void Updater::setUserAgentString (const QString& agent)
{
m_userAgentString = agent;
m_downloader->setUserAgentString (agent);
}
/**
* Changes the module \a version
* \note The module version is used to compare the local and remote versions.
@ -331,9 +359,8 @@ void Updater::onReply (QNetworkReply* reply)
}
/* There was a network error */
if (reply->error() != QNetworkReply::NoError)
{
setUpdateAvailable(false);
if (reply->error() != QNetworkReply::NoError) {
setUpdateAvailable (false);
emit checkingFinished (url());
return;
}
@ -349,9 +376,8 @@ void Updater::onReply (QNetworkReply* reply)
QJsonDocument document = QJsonDocument::fromJson (reply->readAll());
/* JSON is invalid */
if (document.isNull())
{
setUpdateAvailable(false);
if (document.isNull()) {
setUpdateAvailable (false);
emit checkingFinished (url());
return;
}

View File

@ -63,6 +63,7 @@ public:
QString platformKey() const;
QString moduleVersion() const;
QString latestVersion() const;
QString userAgentString() const;
bool customAppcast() const;
bool notifyOnUpdate() const;
@ -77,6 +78,7 @@ public slots:
void setModuleName (const QString& name);
void setNotifyOnUpdate (const bool notify);
void setNotifyOnFinish (const bool notify);
void setUserAgentString (const QString& agent);
void setModuleVersion (const QString& version);
void setDownloaderEnabled (const bool enabled);
void setPlatformKey (const QString& platformKey);
@ -92,6 +94,7 @@ private:
private:
QString m_url;
QString m_userAgentString;
bool m_customAppcast;
bool m_notifyOnUpdate;