File indexing completed on 2024-05-05 16:49:21
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 "alertinfo.h" 0009 #include <QJsonDocument> 0010 #include <QXmlStreamReader> 0011 #include <memory> 0012 namespace KWeatherCore 0013 { 0014 class FeedParser : public QObject 0015 { 0016 Q_OBJECT 0017 public: 0018 FeedParser(const QJsonDocument &configFile, QObject *parent = nullptr); 0019 void setConfig(const QJsonDocument &configFile); 0020 std::unique_ptr<std::vector<std::unique_ptr<AlertFeedEntry>>> 0021 parse(const QByteArray &data) const; 0022 0023 private: 0024 std::unique_ptr<AlertFeedEntry> 0025 parseOneEntry(QXmlStreamReader &reader) const; 0026 QUrl parseCapElement(QXmlStreamReader &reader) const; 0027 void parsePolygonElement(QXmlStreamReader &reader, 0028 AlertFeedEntry &entry) const; 0029 QUrl m_url; 0030 QString m_entryMarker; 0031 QString m_titleMarker; 0032 bool m_hasCap; 0033 QString m_capLinkElementMarker; 0034 QString m_capValueType; // ie. "attribute" 0035 QString m_capValueMarker; // ie. "href" 0036 QString m_summaryMarker; 0037 bool m_hasArea; 0038 QString m_areaNameMarker; 0039 QString m_polygonMarker; 0040 QString m_FIPS6Marker; 0041 QString m_UGCMarker; 0042 QString m_urgencyMarker; 0043 QString m_severityMarker; 0044 QString m_certaintyMarker; 0045 bool m_hasDate; 0046 QString m_dateMarker; 0047 QString m_dateFormat; 0048 }; 0049 }