/* * 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/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #ifndef SMOLBOTE_FILTERRULE_H #define SMOLBOTE_FILTERRULE_H #include #include #include #include #include #include class FilterRule { public: enum UrlMatchType { InvalidMatch, RegularExpressionMatch, StringContains, StringStartsWith, StringEndsWith, StringEquals, DomainMatch }; FilterRule() = default; bool isEnabled() const; bool isBlocking() const; /** * @brief matchesDomain * @param domain * @return */ bool matchesDomain(const QString &domain) const; /** * @brief matchesType * @param type * @return true if type matches, false otherwise */ bool matchesType(QWebEngineUrlRequestInfo::ResourceType type) const; /** * @brief matchesUrl * @param url * @return */ bool matchesUrl(const QUrl &url) const; QString toString() const; protected: bool m_isEnabled = false; bool m_isBlocking = true; QString originalFilter; UrlMatchType urlMatchType = InvalidMatch; QHash m_resourceTypeOptions; QStringList allowedDomains, blockedDomains; QString match; QRegularExpression regexp; }; #endif // SMOLBOTE_FILTERRULE_H