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_HAFASQUERYBACKEND_H
0008 #define KPUBLICTRANSPORT_HAFASQUERYBACKEND_H
0009 
0010 #include "hafasbackend.h"
0011 #include "hafasqueryparser.h"
0012 
0013 namespace KPublicTransport {
0014 
0015 /** Backends for the Hafas "query.exe" based providers. */
0016 class HafasQueryBackend : public HafasBackend
0017 {
0018     Q_GADGET
0019 public:
0020     HafasQueryBackend();
0021     ~HafasQueryBackend() override;
0022 
0023     void init() override;
0024     static inline constexpr const char* type() { return "hafasQuery"; }
0025     Capabilities capabilities() const override;
0026     bool needsLocationQuery(const Location &loc, QueryType type) const override;
0027     bool queryLocation(const LocationRequest &request, LocationReply *reply, QNetworkAccessManager *nam) const override;
0028     bool queryStopover(const StopoverRequest &request, StopoverReply *reply, QNetworkAccessManager *nam) const override;
0029     bool queryJourney(const JourneyRequest &request, JourneyReply *reply, QNetworkAccessManager *nam) const override;
0030 
0031 private:
0032     bool queryLocationByName(const LocationRequest &request, LocationReply *reply, QNetworkAccessManager *nam) const;
0033     bool queryLocationByCoordinate(const LocationRequest &request, LocationReply *reply, QNetworkAccessManager *nam) const;
0034 
0035     QString locationId(const Location &loc) const;
0036 
0037     mutable HafasQueryParser m_parser;
0038 };
0039 
0040 }
0041 
0042 #endif // KPUBLICTRANSPORT_HAFASQUERYBACKEND_H