2014-11-24 14:52:34 +00:00
|
|
|
#include "BlacklistedRequestHandler.h"
|
|
|
|
#include "NetworkReplyProxy.h"
|
|
|
|
#include "NoOpReply.h"
|
|
|
|
|
|
|
|
BlacklistedRequestHandler::BlacklistedRequestHandler(
|
|
|
|
RequestHandler *next,
|
|
|
|
QObject *parent
|
|
|
|
) : RequestHandler(parent) {
|
|
|
|
m_next = next;
|
|
|
|
}
|
|
|
|
|
|
|
|
QNetworkReply* BlacklistedRequestHandler::handleRequest(
|
|
|
|
NetworkAccessManager *manager,
|
|
|
|
QNetworkAccessManager::Operation operation,
|
|
|
|
QNetworkRequest &request,
|
|
|
|
QIODevice *outgoingData
|
|
|
|
) {
|
|
|
|
if (this->isBlacklisted(request.url())) {
|
|
|
|
return new NetworkReplyProxy(new NoOpReply(request), this);
|
|
|
|
} else {
|
|
|
|
return m_next->handleRequest(manager, operation, request, outgoingData);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void BlacklistedRequestHandler::setUrlBlacklist(QStringList urlBlacklist) {
|
|
|
|
m_urlBlacklist.clear();
|
|
|
|
|
|
|
|
QStringListIterator iter(urlBlacklist);
|
|
|
|
while (iter.hasNext()) {
|
|
|
|
m_urlBlacklist << iter.next();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool BlacklistedRequestHandler::isBlacklisted(QUrl url) {
|
|
|
|
QString urlString = url.toString();
|
|
|
|
QStringListIterator iter(m_urlBlacklist);
|
|
|
|
|
|
|
|
while (iter.hasNext()) {
|
|
|
|
QRegExp blacklisted = QRegExp(iter.next());
|
|
|
|
blacklisted.setPatternSyntax(QRegExp::Wildcard);
|
|
|
|
|
|
|
|
if(urlString.contains(blacklisted)) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
2014-11-14 19:55:14 +00:00
|
|
|
|
|
|
|
void BlacklistedRequestHandler::blockUrl(const QString &url) {
|
|
|
|
m_urlBlacklist.append(url);
|
|
|
|
}
|