Mercurial > hg > easyhg
comparison src/versiontester.cpp @ 672:88fa1544b407
Merge from branch qt5. There's much more to be done before we can make another release, but clearly it's going to be done using qt5
author | Chris Cannam |
---|---|
date | Wed, 05 Dec 2018 09:44:10 +0000 |
parents | f9b805d8cab4 |
children |
comparison
equal
deleted
inserted
replaced
665:88061103b878 | 672:88fa1544b407 |
---|---|
18 #include "versiontester.h" | 18 #include "versiontester.h" |
19 #include "debug.h" | 19 #include "debug.h" |
20 | 20 |
21 #include <iostream> | 21 #include <iostream> |
22 | 22 |
23 #include <QHttp> | 23 #include <QNetworkAccessManager> |
24 | |
25 static QNetworkAccessManager nm; | |
24 | 26 |
25 VersionTester::VersionTester(QString hostname, QString versionFilePath, | 27 VersionTester::VersionTester(QString hostname, QString versionFilePath, |
26 QString myVersion) : | 28 QString myVersion) : |
27 m_httpFailed(false), | 29 m_myVersion(myVersion), |
28 m_myVersion(myVersion) | 30 m_reply(0), |
31 m_httpFailed(false) | |
29 { | 32 { |
30 QHttp *http = new QHttp(); | 33 QUrl url(QString("http://%1/%2").arg(hostname).arg(versionFilePath)); |
31 connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), | 34 std::cerr << "VersionTester: URL is " << url << std::endl; |
32 this, SLOT(httpResponseHeaderReceived(const QHttpResponseHeader &))); | 35 m_reply = nm.get(QNetworkRequest(url)); |
33 connect(http, SIGNAL(done(bool)), | 36 connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), |
34 this, SLOT(httpDone(bool))); | 37 this, SLOT(error(QNetworkReply::NetworkError))); |
35 http->setHost(hostname); | 38 connect(m_reply, SIGNAL(finished()), this, SLOT(finished())); |
36 http->get(versionFilePath); | |
37 } | 39 } |
38 | 40 |
39 VersionTester::~VersionTester() | 41 VersionTester::~VersionTester() |
40 { | 42 { |
43 if (m_reply) { | |
44 m_reply->abort(); | |
45 m_reply->deleteLater(); | |
46 } | |
41 } | 47 } |
42 | 48 |
43 bool | 49 bool |
44 VersionTester::isVersionNewerThan(QString a, QString b) | 50 VersionTester::isVersionNewerThan(QString a, QString b) |
45 { | 51 { |
64 } | 70 } |
65 return false; | 71 return false; |
66 } | 72 } |
67 | 73 |
68 void | 74 void |
69 VersionTester::httpResponseHeaderReceived(const QHttpResponseHeader &h) | 75 VersionTester::error(QNetworkReply::NetworkError) |
70 { | 76 { |
71 if (h.statusCode() / 100 != 2) m_httpFailed = true; | 77 std::cerr << "VersionTester: error: " << m_reply->errorString() << std::endl; |
78 m_httpFailed = true; | |
72 } | 79 } |
73 | 80 |
74 void | 81 void |
75 VersionTester::httpDone(bool error) | 82 VersionTester::finished() |
76 { | 83 { |
77 QHttp *http = const_cast<QHttp *>(dynamic_cast<const QHttp *>(sender())); | 84 m_reply->deleteLater(); |
78 if (!http) return; | 85 if (m_httpFailed) return; |
79 http->deleteLater(); | |
80 if (error || m_httpFailed) return; | |
81 | 86 |
82 QByteArray responseData = http->readAll(); | 87 int status = m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); |
88 if (status / 100 != 2) { | |
89 std::cerr << "VersionTester: error: http status = " << status << std::endl; | |
90 return; | |
91 } | |
92 | |
93 QByteArray responseData = m_reply->readAll(); | |
83 QString str = QString::fromUtf8(responseData.data()); | 94 QString str = QString::fromUtf8(responseData.data()); |
84 QStringList lines = str.split('\n', QString::SkipEmptyParts); | 95 QStringList lines = str.split('\n', QString::SkipEmptyParts); |
85 if (lines.empty()) return; | 96 if (lines.empty()) return; |
86 | 97 |
87 QString latestVersion = lines[0]; | 98 QString latestVersion = lines[0]; |
88 DEBUG << "Comparing current version \"" << m_myVersion | 99 DEBUG << "Comparing current version \"" << m_myVersion |
89 << "\" with latest version \"" << latestVersion | 100 << "\" with latest version \"" << latestVersion |
90 << "\"" << endl; | 101 << "\"" << endl; |
91 if (isVersionNewerThan(latestVersion, m_myVersion)) { | 102 if (isVersionNewerThan(latestVersion, m_myVersion)) { |
92 emit newerVersionAvailable(latestVersion); | 103 emit newerVersionAvailable(latestVersion); |
93 } | 104 } |
94 } | 105 } |
95 | 106 |
96 |