File indexing completed on 2024-05-12 04:42:38

0001 /*
0002     SPDX-FileCopyrightText: 2024 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #ifndef KPUBLICTRANSPORT_MOTISPARSER_H
0007 #define KPUBLICTRANSPORT_MOTISPARSER_H
0008 
0009 #include <QUrl>
0010 
0011 class QJsonObject;
0012 
0013 namespace KPublicTransport {
0014 
0015 class Location;
0016 class Journey;
0017 class Stopover;
0018 
0019 /** Response parsing for Motis. */
0020 class MotisParser
0021 {
0022 public:
0023     explicit MotisParser(QString locIdentifierType);
0024 
0025     [[nodiscard]] std::vector<Journey> parseConnections(const QByteArray &data);
0026     [[nodiscard]] std::vector<Stopover> parseEvents(const QByteArray &data);
0027     [[nodiscard]] std::vector<Location> parseStations(const QByteArray &data);
0028 
0029     [[nodiscard]] bool hasError() const;
0030     [[nodiscard]] QString errorMessage() const;
0031 
0032 private:
0033     [[nodiscard]] Journey parseConnection(const QJsonObject &con) const;
0034     [[nodiscard]] Location parseStation(const QJsonObject &station) const;
0035     [[nodiscard]] QJsonObject parseContent(const QByteArray &data);
0036 
0037     QString m_locIdentifierType;
0038     QString m_errorMsg;
0039 };
0040 
0041 }
0042 
0043 #endif