aboutsummaryrefslogtreecommitdiff
path: root/staging/hostlist/filterlist.hpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2020-04-18 22:34:49 +0300
committerAqua-sama <aqua@iserlohn-fortress.net>2020-04-21 20:14:57 +0300
commitf76ef20b832428aa1090d7f5df749909828f9bd8 (patch)
tree61fb6147cf772d3e70e6d21d8c7b43ec74e0cdf8 /staging/hostlist/filterlist.hpp
parentAdd staging/hostlist (diff)
downloadsmolbote-f76ef20b832428aa1090d7f5df749909828f9bd8.tar.xz
Hostlist: test list parsing
Diffstat (limited to 'staging/hostlist/filterlist.hpp')
-rw-r--r--staging/hostlist/filterlist.hpp27
1 files changed, 21 insertions, 6 deletions
diff --git a/staging/hostlist/filterlist.hpp b/staging/hostlist/filterlist.hpp
index 24243e5..6edc19d 100644
--- a/staging/hostlist/filterlist.hpp
+++ b/staging/hostlist/filterlist.hpp
@@ -17,9 +17,29 @@ namespace Hostlist
class Filterlist final : public Filter
{
public:
+ typedef uint DomainHash;
+ struct Rule {
+ QString domain;
+ QString redirect;
+ };
+
Filterlist() = default;
~Filterlist() = default;
+ [[nodiscard]] bool findMatch(const QString &domain) const
+ {
+ const auto hash = qHash(domain, 0);
+ const auto found = rules.find(hash);
+ if(found != rules.end()) {
+ return true;
+ }
+ return false;
+ }
+ int count() const
+ {
+ return rules.size();
+ }
+
[[nodiscard]] bool filter(QWebEngineUrlRequestInfo &info) const
{
return false;
@@ -29,12 +49,7 @@ public:
return true;
}
- typedef uint DomainHash;
- struct Rule {
- QString domain;
- QString redirect;
- };
-
+ bool load(QIODevice &device);
[[nodiscard]] static std::map<DomainHash, Rule> parseRule(const QString &line);
private: