summaryrefslogtreecommitdiffstats
path: root/src/nam.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nam.h')
-rw-r--r--src/nam.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/nam.h b/src/nam.h
new file mode 100644
index 0000000..ec2bb17
--- /dev/null
+++ b/src/nam.h
@@ -0,0 +1,38 @@
+#ifndef NAM_H_
+#define NAM_H_
+
+#include <QNetworkAccessManager>
+#include <QRegularExpression>
+#include <QNetworkReply>
+
+/**
+ * Block certain requests based on URL
+ */
+class SlxNetworkAccessManager : public QNetworkAccessManager
+{
+Q_OBJECT
+public:
+ SlxNetworkAccessManager(QRegularExpression blackList, QRegularExpression whiteList, QObject *parent = nullptr)
+ : QNetworkAccessManager(parent), _black(blackList), _white(whiteList) {}
+protected:
+ QNetworkReply* createRequest(QNetworkAccessManager::Operation op,
+ const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr) override;
+private:
+ QRegularExpression _black, _white;
+};
+
+
+class SlxDisabledNetworkReply : public QNetworkReply
+{
+ Q_OBJECT
+public:
+ SlxDisabledNetworkReply(QObject *parent, const QNetworkRequest &req,
+ QNetworkAccessManager::Operation op);
+
+ ~SlxDisabledNetworkReply() {}
+ void abort() override { }
+protected:
+ qint64 readData(char *, qint64) override { return -1; }
+};
+
+#endif