#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; /** * @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; protected: bool m_isEnabled = false; bool m_isException = false; UrlMatchType urlMatchType = InvalidMatch; QHash m_resourceTypeOptions; QStringList allowedDomains, blockedDomains; QString match; QRegularExpression regexp; }; #endif // SMOLBOTE_FILTERRULE_H