File indexing completed on 2024-04-28 04:41:45
0001 /* 0002 SPDX-FileCopyrightText: 2020 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include <../lib/datatypes/backend_p.h> 0008 #include <../lib/backends/hafasmgatebackend.h> 0009 0010 #include <KPublicTransport/Backend> 0011 #include <KPublicTransport/Manager> 0012 0013 #include <QCoreApplication> 0014 #include <QDebug> 0015 #include <QJsonArray> 0016 #include <QJsonDocument> 0017 #include <QJsonObject> 0018 #include <QNetworkAccessManager> 0019 #include <QNetworkReply> 0020 #include <QNetworkRequest> 0021 0022 using namespace KPublicTransport; 0023 0024 static void listConGroups(const QByteArray &data) 0025 { 0026 const auto svcResL = QJsonDocument::fromJson(data).object().value(QLatin1String("svcResL")).toArray(); 0027 if (svcResL.empty()) { 0028 qDebug() << "empty reponse" << data; 0029 return; 0030 } 0031 0032 const auto res = svcResL.at(0).toObject().value(QLatin1String("res")).toObject(); 0033 const auto conGrpL = res.value(QLatin1String("conGrpL")).toArray(); 0034 for (const auto &conGrpV : conGrpL) { 0035 const auto conGrpObj = conGrpV.toObject(); 0036 qDebug() << conGrpObj.value(QLatin1String("name")).toString(); 0037 const auto requests = conGrpObj.value(QLatin1String("requests")).toArray(); 0038 for (const auto requestV : requests) { 0039 const auto requestObj = requestV.toObject(); 0040 qDebug() << " " << requestObj.value(QLatin1String("id")).toString(); 0041 } 0042 } 0043 } 0044 0045 int main(int argc, char **argv) 0046 { 0047 QCoreApplication app(argc, argv); 0048 0049 QNetworkAccessManager nam; 0050 nam.setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy); 0051 0052 Manager ptMgr; 0053 int jobCount = 0; 0054 0055 for (const auto &backend : ptMgr.backends()) { 0056 const auto impl = dynamic_cast<const HafasMgateBackend*>(BackendPrivate::impl(backend)); 0057 if (!impl) { 0058 continue; 0059 } 0060 0061 QJsonObject req; 0062 req.insert(QLatin1String("getConGroups"), true); 0063 QJsonObject serverInfo; 0064 serverInfo.insert(QLatin1String("meth"), QLatin1String("ServerInfo")); 0065 serverInfo.insert(QLatin1String("req"), req); 0066 0067 QByteArray postData; 0068 const auto netReq = impl->makePostRequest(serverInfo, postData); 0069 ++jobCount; 0070 auto netReply = nam.post(netReq, postData); 0071 QObject::connect(netReply, &QNetworkReply::finished, &nam, [netReply, &jobCount, backend]() { 0072 --jobCount; 0073 netReply->deleteLater(); 0074 0075 qDebug() << "************************************************" << backend.identifier(); 0076 if (netReply->error() != QNetworkReply::NoError) { 0077 qWarning() << netReply->errorString(); 0078 } else { 0079 listConGroups(netReply->readAll()); 0080 } 0081 0082 if (jobCount == 0) { 0083 QCoreApplication::quit(); 0084 } 0085 }); 0086 } 0087 0088 return app.exec(); 0089 }