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 }