/* * 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 class FilterLeaf { public: enum Action { NotMatched, Allow, Block, Redirect }; enum UrlMatchType { InvalidMatch, RegularExpressionMatch, StringContains, StringStartsWith, StringEndsWith, StringEquals, DomainMatch }; FilterLeaf(FilterLeaf &&other); FilterLeaf &operator=(FilterLeaf &&other); virtual ~FilterLeaf() = default; virtual bool match(const QUrl &requestUrl) const = 0; virtual Action action() const = 0; const QString request() const; const QString redirect() const; protected: explicit FilterLeaf() = default; // rule matching UrlMatchType matchType = InvalidMatch; QHash resourceTypeOptions; QString m_request; // rule action bool m_isBlocking; QString m_redirect; }; Q_DECLARE_METATYPE(FilterLeaf::Action) #endif // SMOLBOTE_FILTERLEAF_H