File tree Expand file tree Collapse file tree 2 files changed +47
-0
lines changed Expand file tree Collapse file tree 2 files changed +47
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments