Skip to content

Commit ea164be

Browse files
fixed redirects
git-svn-id: https://instead-launcher.googlecode.com/svn/trunk@478 5a6d72ec-0354-11df-adb7-1be7f7e3f636
1 parent cce9711 commit ea164be

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

urlresolver.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include "urlresolver.h"
2+
3+
QUrl UrlResolver::resolve(const QUrl &origUrl) {
4+
bool done=false;
5+
QNetworkAccessManager nam;
6+
QUrl lastRedirectUrl=origUrl;
7+
QNetworkRequest req=request(origUrl);
8+
QNetworkReply *rep=nam.get(req);
9+
while(!done) {
10+
while(!rep->isFinished()) {
11+
qApp->processEvents();
12+
}
13+
QUrl possibleRedirectUrl = rep->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
14+
if(!possibleRedirectUrl.isEmpty() &&
15+
lastRedirectUrl!=possibleRedirectUrl) {
16+
lastRedirectUrl=possibleRedirectUrl;
17+
rep->deleteLater();
18+
req=request(possibleRedirectUrl);
19+
rep=nam.get(req);
20+
} else {
21+
lastRedirectUrl=rep->url();
22+
rep->deleteLater();
23+
done=true;
24+
}
25+
}
26+
return lastRedirectUrl;
27+
}
28+
29+
QNetworkRequest UrlResolver::request(const QUrl &url) {
30+
QNetworkRequest req(url);
31+
req.setRawHeader("User-Agent", "Wget/1.14 (linux-gnu)");
32+
return req;
33+
}

urlresolver.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#ifndef URLRESOLVER_H
2+
#define URLRESOLVER_H
3+
4+
#include <QtCore>
5+
#include <QtNetwork>
6+
7+
class UrlResolver {
8+
public:
9+
static QUrl resolve(const QUrl &origUrl);
10+
private:
11+
static QNetworkRequest request(const QUrl &url);
12+
};
13+
14+
#endif // URLRESOLVER_H

0 commit comments

Comments
 (0)