/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote * * SPDX-License-Identifier: GPL-3.0 */ #ifndef SMOLBOTE_FILTERLEAF_H #define SMOLBOTE_FILTERLEAF_H #include #include #include #include #include #include #include class FilterLeaf { public: enum Action { NotMatched, Allow, Block, Redirect }; enum UrlMatchType { InvalidMatch, RegularExpressionMatch, StringContains, StringStartsWith, StringEndsWith, StringEquals, DomainMatch }; virtual ~FilterLeaf() = default; virtual bool match(const QUrl &requestUrl) const = 0; virtual std::pair action() const = 0; const QString request() const; std::optional option(QWebEngineUrlRequestInfo::ResourceType opt) const; protected: // rule matching UrlMatchType matchType = InvalidMatch; QHash resourceTypeOptions; QString m_request; // rule action bool m_isBlocking; }; Q_DECLARE_METATYPE(FilterLeaf::Action) #endif // SMOLBOTE_FILTERLEAF_H