File indexing completed on 2024-04-28 04:41:41

0001 /*
0002     SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #ifndef KPUBLICTRANSPORT_RESTONBOARDBACKEND_H
0007 #define KPUBLICTRANSPORT_RESTONBOARDBACKEND_H
0008 
0009 #include "kpublictransportonboard_export.h"
0010 #include "abstractonboardbackend_p.h"
0011 
0012 class QNetworkRequest;
0013 
0014 namespace KPublicTransport {
0015 
0016 /** Backend that uses an REST API.
0017  *  Primarily used as interface for unit tests of parser code.
0018  *  @internal exported only for unit tests
0019  */
0020 class KPUBLICTRANSPORTONBOARD_EXPORT RestOnboardBackend : public AbstractOnboardBackend
0021 {
0022     Q_OBJECT
0023 public:
0024     ~RestOnboardBackend();
0025 
0026     void requestPosition(QNetworkAccessManager *nam) override final;
0027     void requestJourney(QNetworkAccessManager *nam) override final;
0028 
0029     virtual QNetworkRequest createPositionRequest() const = 0;
0030     virtual QNetworkRequest createJourneyRequest() const = 0;
0031     virtual PositionData parsePositionData(const QJsonValue &response) const = 0;
0032     virtual Journey parseJourneyData(const QJsonValue &response) const = 0;
0033 
0034 protected:
0035     explicit RestOnboardBackend(QObject *parent = nullptr);
0036 };
0037 
0038 }
0039 
0040 #endif // KPUBLICTRANSPORT_RESTONBOARDBACKEND_H