File indexing completed on 2024-04-28 04:42:42
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Han Young <hanyoung@protonmail.com> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 #pragma once 0007 #include "alertfeedentry.h" 0008 #include <QJsonDocument> 0009 #include <QXmlStreamReader> 0010 #include <memory> 0011 namespace KWeatherCore 0012 { 0013 class FeedParser : public QObject 0014 { 0015 Q_OBJECT 0016 public: 0017 FeedParser(const QJsonDocument &configFile, QObject *parent = nullptr); 0018 void setConfig(const QJsonDocument &configFile); 0019 std::unique_ptr<std::vector<std::unique_ptr<AlertFeedEntry>>> parse(const QByteArray &data) const; 0020 0021 private: 0022 std::unique_ptr<AlertFeedEntry> parseOneEntry(QXmlStreamReader &reader) const; 0023 QUrl parseCapElement(QXmlStreamReader &reader) const; 0024 void parsePolygonElement(QXmlStreamReader &reader, AlertFeedEntry &entry) const; 0025 QUrl m_url; 0026 QString m_entryMarker; 0027 QString m_titleMarker; 0028 bool m_hasCap; 0029 QString m_capLinkElementMarker; 0030 QString m_capValueType; // ie. "attribute" 0031 QString m_capValueMarker; // ie. "href" 0032 QString m_summaryMarker; 0033 bool m_hasArea; 0034 QString m_areaNameMarker; 0035 QString m_polygonMarker; 0036 QString m_FIPS6Marker; 0037 QString m_UGCMarker; 0038 QString m_urgencyMarker; 0039 QString m_severityMarker; 0040 QString m_certaintyMarker; 0041 bool m_hasDate; 0042 QString m_dateMarker; 0043 QString m_dateFormat; 0044 }; 0045 }