File indexing completed on 2025-02-02 05:02:32
0001 /* 0002 SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org> 0003 SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 0006 #ifndef ONLINETICKETRETRIEVALJOB_H 0007 #define ONLINETICKETRETRIEVALJOB_H 0008 0009 #include <QObject> 0010 0011 class QIODevice; 0012 class QNetworkAccessManager; 0013 class QNetworkReply; 0014 0015 /** Online ticket retrieval job. */ 0016 class OnlineTicketRetrievalJob : public QObject 0017 { 0018 Q_OBJECT 0019 public: 0020 /* 0021 * @param sourceId Identifier of the service the ticket is retrieved from. 0022 * @param arguments Service-specific arguments needed for retrieving a ticket. 0023 */ 0024 explicit OnlineTicketRetrievalJob(const QString &sourceId, const QVariantMap &arguments, QNetworkAccessManager *nam, QObject *parent = nullptr); 0025 ~OnlineTicketRetrievalJob(); 0026 0027 /** Retrieved ticket(s), e.g. as KItinerary::TrainReservation instances. */ 0028 [[nodiscard]] QVector<QVariant> result() const; 0029 [[nodiscard]] QString errorMessage() const; 0030 0031 Q_SIGNALS: 0032 /** Emitted when the job finished, regardless of success. 0033 * Deletion of the job afterwards is consumer responsibility. 0034 */ 0035 void finished(); 0036 0037 private: 0038 void dbRequestFindOrder(const QVariantMap &arguments); 0039 static QString dbParseKwid(QIODevice *io); 0040 void dbRequestOrderDetails(const QVariantMap &arguments); 0041 0042 void handleReply(QNetworkReply *reply); 0043 0044 QVector<QVariant> m_result; 0045 QString m_errorMsg; 0046 QNetworkAccessManager *m_nam; 0047 }; 0048 0049 #endif // ONLINETICKETRETRIEVALJOB_H