Mercurial > hg > svapp
diff framework/VersionTester.cpp @ 290:a3fcaad1a269 tonioni
Merge from the default branch
author | Chris Cannam |
---|---|
date | Fri, 12 Jul 2013 13:26:41 +0100 |
parents | 8cb01cd2441d |
children | 068235cf5bf7 |
line wrap: on
line diff
--- a/framework/VersionTester.cpp Fri Apr 19 15:37:27 2013 +0100 +++ b/framework/VersionTester.cpp Fri Jul 12 13:26:41 2013 +0100 @@ -23,24 +23,31 @@ #include <iostream> -#include <QHttp> +#include <QNetworkAccessManager> + VersionTester::VersionTester(QString hostname, QString versionFilePath, QString myVersion) : + m_myVersion(myVersion), + m_reply(0), m_httpFailed(false), - m_myVersion(myVersion) + m_nm(new QNetworkAccessManager) { - QHttp *http = new QHttp(); - connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), - this, SLOT(httpResponseHeaderReceived(const QHttpResponseHeader &))); - connect(http, SIGNAL(done(bool)), - this, SLOT(httpDone(bool))); - http->setHost(hostname); - http->get(versionFilePath); + QUrl url(QString("http://%1/%2").arg(hostname).arg(versionFilePath)); + std::cerr << "VersionTester: URL is " << url << std::endl; + m_reply = m_nm->get(QNetworkRequest(url)); + connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + this, SLOT(error(QNetworkReply::NetworkError))); + connect(m_reply, SIGNAL(finished()), this, SLOT(finished())); } VersionTester::~VersionTester() { + if (m_reply) { + m_reply->abort(); + m_reply->deleteLater(); + } + delete m_nm; } bool @@ -69,20 +76,28 @@ } void -VersionTester::httpResponseHeaderReceived(const QHttpResponseHeader &h) +VersionTester::error(QNetworkReply::NetworkError) { - if (h.statusCode() / 100 != 2) m_httpFailed = true; + std::cerr << "VersionTester: error: " << m_reply->errorString() << std::endl; + m_httpFailed = true; } void -VersionTester::httpDone(bool error) +VersionTester::finished() { - QHttp *http = const_cast<QHttp *>(dynamic_cast<const QHttp *>(sender())); - if (!http) return; - http->deleteLater(); - if (error || m_httpFailed) return; + QNetworkReply *r = m_reply; + m_reply = 0; - QByteArray responseData = http->readAll(); + r->deleteLater(); + if (m_httpFailed) return; + + int status = r->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + if (status / 100 != 2) { + std::cerr << "VersionTester: error: http status = " << status << std::endl; + return; + } + + QByteArray responseData = r->readAll(); QString str = QString::fromUtf8(responseData.data()); QStringList lines = str.split('\n', QString::SkipEmptyParts); if (lines.empty()) return;