File indexing completed on 2024-05-12 04:42:36
0001 /* 0002 SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KPUBLICTRANSPORT_HAFASMGATEPARSER_H 0008 #define KPUBLICTRANSPORT_HAFASMGATEPARSER_H 0009 0010 #include "kpublictransport_export.h" 0011 #include "hafasparser.h" 0012 #include "hafasconfiguration.h" 0013 0014 #include <KPublicTransport/Disruption> 0015 #include <KPublicTransport/Line> 0016 #include <KPublicTransport/Reply> 0017 0018 #include <unordered_map> 0019 #include <vector> 0020 0021 #include <QColor> 0022 0023 class QByteArray; 0024 class QJsonValue; 0025 0026 namespace KPublicTransport { 0027 0028 class Journey; 0029 class Location; 0030 class Stopover; 0031 0032 struct Ico { 0033 QColor bg; 0034 QColor fg; 0035 }; 0036 0037 /** Hafas response parser. 0038 * @internal exported for unit tests only 0039 */ 0040 class KPUBLICTRANSPORT_EXPORT HafasMgateParser : public HafasParser 0041 { 0042 public: 0043 HafasMgateParser(); 0044 ~HafasMgateParser(); 0045 void setProductNameMappings(std::vector<HafasMgateProductNameMapping> &&productNameMappings); 0046 0047 std::vector<Stopover> parseDepartures(const QByteArray &data) const; 0048 std::vector<Location> parseLocations(const QByteArray &data) const; 0049 std::vector<Journey> parseJourneys(const QByteArray &data); 0050 0051 static QDateTime parseDateTime(const QString &date, const QJsonValue &time, const QJsonValue &tzOffset); 0052 0053 QString m_previousJourneyContext; 0054 QString m_nextJourneyContext; 0055 private: 0056 Q_DISABLE_COPY(HafasMgateParser) 0057 std::vector<Stopover> parseStationBoardResponse(const QJsonObject &obj) const; 0058 std::vector<Route> parseProducts(const QJsonArray &prodL, const std::vector<Ico> &icos) const; 0059 std::vector<Location> parseLocations(const QJsonArray &locL) const; 0060 std::vector<Journey> parseTripSearch(const QJsonObject &obj); 0061 bool parseError(const QJsonObject &obj) const; 0062 0063 std::vector<HafasMgateProductNameMapping> m_productNameMappings; 0064 }; 0065 0066 } 0067 0068 #endif // KPUBLICTRANSPORT_HAFASMGATEPARSER_H