1
0
Fork 0
forked from len0rd/rockbox

Add setting the User-Agent for http requests to HttpGet class. Make rbutil set its own user agent string.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18366 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Riebeling 2008-08-30 20:51:50 +00:00
parent 76a3959ac2
commit 90f92b216b
4 changed files with 29 additions and 12 deletions

View file

@ -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;

View file

@ -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

View file

@ -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>");

View file

@ -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__