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 }