summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rbutil/rbutilqt/httpget.cpp18
-rw-r--r--rbutil/rbutilqt/httpget.h11
-rw-r--r--rbutil/rbutilqt/rbutilqt.cpp5
-rw-r--r--rbutil/rbutilqt/version.h7
4 files changed, 29 insertions, 12 deletions
diff --git a/rbutil/rbutilqt/httpget.cpp b/rbutil/rbutilqt/httpget.cpp
index b349a2f4be..129545d158 100644
--- a/rbutil/rbutilqt/httpget.cpp
+++ b/rbutil/rbutilqt/httpget.cpp
@@ -26,6 +26,7 @@
QDir HttpGet::m_globalCache; //< global cach path value for new objects
QUrl HttpGet::m_globalProxy; //< global proxy value for new objects
bool HttpGet::m_globalDumbCache = false; //< globally set cache "dumb" mode
+QString HttpGet::m_globalUserAgent; //< globally set user agent for requests
HttpGet::HttpGet(QObject *parent)
: QObject(parent)
@@ -199,13 +200,19 @@ bool HttpGet::getFile(const QUrl &url)
m_hash = QCryptographicHash::hash(url.toEncoded(), QCryptographicHash::Md5).toHex();
m_path = QString(QUrl::toPercentEncoding(url.path(), "/"));
+ // construct request header
+ m_header.setValue("Host", url.host());
+ m_header.setValue("User-Agent", m_globalUserAgent);
+ m_header.setValue("Connection", "Keep-Alive");
+
if(m_dumbCache || !m_usecache) {
getFileFinish();
}
else {
- // request HTTP header
+ // schedule HTTP header request
connect(this, SIGNAL(headerFinished()), this, SLOT(getFileFinish()));
- headRequest = http.head(m_path + m_query);
+ m_header.setRequest("HEAD", m_path + m_query);
+ headRequest = http.request(m_header);
}
return true;
@@ -262,15 +269,16 @@ void HttpGet::getFileFinish()
else {
qDebug() << "[HTTP] cache DISABLED";
}
-
+ // schedule GET request
+ m_header.setRequest("GET", m_path + m_query);
if(outputToBuffer) {
qDebug() << "[HTTP] downloading to buffer.";
- getRequest = http.get(m_path + m_query);
+ getRequest = http.request(m_header);
}
else {
qDebug() << "[HTTP] downloading to file:"
<< qPrintable(outputFile->fileName());
- getRequest = http.get(m_path + m_query, outputFile);
+ getRequest = http.request(m_header, 0, outputFile);
}
qDebug() << "[HTTP] GET request scheduled, id:" << getRequest;
diff --git a/rbutil/rbutilqt/httpget.h b/rbutil/rbutilqt/httpget.h
index 72a76e43c1..ba4cbc821e 100644
--- a/rbutil/rbutilqt/httpget.h
+++ b/rbutil/rbutilqt/httpget.h
@@ -57,6 +57,8 @@ class HttpGet : public QObject
{ m_globalProxy = p; }
static void setGlobalDumbCache(bool b) //< set "dumb" (ignore server status) caching mode
{ m_globalDumbCache = b; }
+ static void setGlobalUserAgent(QString u) //< set global user agent string
+ { m_globalUserAgent = u; }
public slots:
void abort(void);
@@ -89,14 +91,17 @@ class HttpGet : public QObject
QString m_cachefile; // cached filename
bool m_cached;
QUrl m_proxy;
- static QDir m_globalCache; //< global cache path value
- static QUrl m_globalProxy; //< global proxy value
- static bool m_globalDumbCache; //< cache "dumb" mode global setting
QDateTime m_serverTimestamp; //< timestamp of file on server
QString m_query; //< constructed query to pass http getter
QString m_path; //< constructed path to pass http getter
QString m_hash; //< caching hash
bool m_dumbCache; //< true if caching should ignore the server header
+ QHttpRequestHeader m_header;
+
+ static QDir m_globalCache; //< global cache path value
+ static QUrl m_globalProxy; //< global proxy value
+ static bool m_globalDumbCache; //< cache "dumb" mode global setting
+ static QString m_globalUserAgent; //< global user agent string
};
#endif
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp
index 8921eadb9a..e64a1a6eb3 100644
--- a/rbutil/rbutilqt/rbutilqt.cpp
+++ b/rbutil/rbutilqt/rbutilqt.cpp
@@ -57,7 +57,8 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
settings = new RbSettings();
settings->open();
-
+ HttpGet::setGlobalUserAgent("rbutil/"VERSION);
+
m_gotInfo = false;
// manual tab
@@ -241,7 +242,7 @@ void RbUtilQt::about()
QString rline = r.readAll();
about.browserCredits->insertPlainText(rline);
about.browserCredits->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
- QString title = QString("<b>The Rockbox Utility</b><br/>Version %1").arg(VERSION);
+ QString title = QString("<b>The Rockbox Utility</b><br/>Version %1").arg(FULLVERSION);
about.labelTitle->setText(title);
about.labelHomepage->setText("<a href='http://www.rockbox.org'>http://www.rockbox.org</a>");
diff --git a/rbutil/rbutilqt/version.h b/rbutil/rbutilqt/version.h
index c0ba2bf848..8027b574f9 100644
--- a/rbutil/rbutilqt/version.h
+++ b/rbutil/rbutilqt/version.h
@@ -19,9 +19,12 @@
*
****************************************************************************/
-#define VERSION "SVN $Revision$ (m1.0.6), built "__DATE__" "__TIME__
-
// PUREVERSION is needed to be able to just compare versions. It does not
// contain a build timestamp because it needs to be the same in different
// files
+// VERSION is the plain version number, used for http User-Agent string.
+#define VERSION "m1.0.6"
#define PUREVERSION "SVN $Revision$"
+
+#define FULLVERSION PUREVERSION" ("VERSION"), built "__DATE__" "__TIME__
+