File indexing completed on 2024-05-12 04:42:39
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KPUBLICTRANSPORT_OPENJOURNEYPLANNERBACKEND_H 0008 #define KPUBLICTRANSPORT_OPENJOURNEYPLANNERBACKEND_H 0009 0010 #include "abstractbackend.h" 0011 0012 #include <QByteArray> 0013 #include <QUrl> 0014 0015 class QNetworkRequest; 0016 0017 namespace KPublicTransport { 0018 0019 class OpenJourneyPlannerParser; 0020 class OpenJourneyPlannerRequestBuilder; 0021 0022 /** Backend for OpenJourneyPlanner services 0023 * Due to its similarities, this might also be viable for TRIAS-based services. 0024 */ 0025 class OpenJourneyPlannerBackend : public AbstractBackend 0026 { 0027 Q_GADGET 0028 Q_PROPERTY(QUrl endpoint MEMBER m_endpoint) 0029 Q_PROPERTY(QString authorization MEMBER m_authorization) 0030 Q_PROPERTY(QString requestorRef MEMBER m_requestorRef) 0031 Q_PROPERTY(bool useTrias MEMBER m_useTrias) 0032 /** Override the default HTTP ContentType header in the request. */ 0033 Q_PROPERTY(QByteArray contentType MEMBER m_contentType) 0034 /** Location identifier type for UIC station codes. 0035 * Typically "uic" or "ibnr". 0036 */ 0037 Q_PROPERTY(QString uicLocationIdentifierType MEMBER m_uicLocationIdentifierType) 0038 0039 public: 0040 static inline constexpr const char* type() { return "openJourneyPlanner"; } 0041 AbstractBackend::Capabilities capabilities() const override; 0042 bool needsLocationQuery(const Location &loc, AbstractBackend::QueryType type) const override; 0043 bool queryLocation(const LocationRequest &request, LocationReply *reply, QNetworkAccessManager *nam) const override; 0044 bool queryStopover(const StopoverRequest &request, StopoverReply *reply, QNetworkAccessManager *nam) const override; 0045 bool queryJourney(const JourneyRequest &request, JourneyReply * reply, QNetworkAccessManager *nam) const override; 0046 0047 private: 0048 QNetworkRequest networkRequest() const; 0049 OpenJourneyPlannerRequestBuilder requestBuilder() const; 0050 OpenJourneyPlannerParser parser() const; 0051 0052 QUrl m_endpoint; 0053 QString m_authorization; 0054 QString m_requestorRef = QStringLiteral("KPublicTransport"); 0055 bool m_useTrias = false; 0056 QByteArray m_contentType = "application/xml"; 0057 QString m_uicLocationIdentifierType; 0058 }; 0059 0060 } 0061 0062 #endif // KPUBLICTRANSPORT_OPENJOURNEYPLANNERBACKEND_H