/* * 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://library.iserlohn-fortress.net/aqua/smolbote.git * * SPDX-License-Identifier: GPL-3.0 */ #include "filterinterface.h" #include #include #include #include #include class QTextStream; namespace AdblockPlus { class Rule; class FilterList : public Filter { Q_DISABLE_COPY(FilterList) public: explicit FilterList() = default; ~FilterList(); enum ParseResultState { Ok, InvalidFormat, }; struct ParseResult { int lines_total = 0; int lines_comments = 0; int lines_ignored = 0; int lines_parsed = 0; int lines_failed = 0; ParseResultState state; }; ParseResult parse(QTextStream &stream); void filter(QWebEngineUrlRequestInfo &info) const override; bool isUpToDate() const override; QDateTime modified() const { return lastModified; } QDateTime expiresOn() const { return expires; } private: void parseComment(QString &line); bool parseRule(const QString &line); QDateTime lastModified; QDateTime expires; QVector m_rules; }; } // namespace AdblockPlus