diff options
author | Steru <jerrydream111@gmail.com> | 2024-08-03 20:19:05 +0200 |
---|---|---|
committer | Steru <jerrydream111@gmail.com> | 2024-08-03 20:19:05 +0200 |
commit | d399c562f5fad76ed8018c712a635f49715a8fed (patch) | |
tree | ae54011fe27a607d43329ee4e9be98ad3a8fe770 /src/api/OlympicsAPI.cpp | |
parent | a767d83d81755710fc760a6d3dc040b4a379c16a (diff) |
Added another filter and sort functions. Also using mock data to test.
Diffstat (limited to 'src/api/OlympicsAPI.cpp')
-rw-r--r-- | src/api/OlympicsAPI.cpp | 60 |
1 files changed, 37 insertions, 23 deletions
diff --git a/src/api/OlympicsAPI.cpp b/src/api/OlympicsAPI.cpp index edcb021..4fe9701 100644 --- a/src/api/OlympicsAPI.cpp +++ b/src/api/OlympicsAPI.cpp @@ -12,6 +12,7 @@ #include <QUrlQuery> // json parsing +#include <QFile> #include <QJsonValue> #include <QJsonDocument> #include <QJsonObject> @@ -29,41 +30,54 @@ using namespace std; QJsonObject OlympicsAPI::getSportData(OlympicsAPI::Disciplines sport) { string shortName = this->getDisciplineShort(sport); - // create custom temporary event loop on stack - QEventLoop eventLoop; + if (USE_API_REQUEST) { + // create custom temporary event loop on stack + QEventLoop eventLoop; - // "quit()" the event-loop, when the network request "finished()" - QNetworkAccessManager mgr; - QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); + // "quit()" the event-loop, when the network request "finished()" + QNetworkAccessManager mgr; + QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); - QString endpoint = (API_LINK + shortName).c_str(); + QString endpoint = (API_LINK + shortName).c_str(); - // the HTTP request - QNetworkRequest req( (QUrl( endpoint )) ); - QNetworkReply *reply = mgr.get(req); - eventLoop.exec(); // blocks stack until "finished()" has been called + // the HTTP request + QNetworkRequest req( (QUrl( endpoint )) ); + QNetworkReply *reply = mgr.get(req); + eventLoop.exec(); // blocks stack until "finished()" has been called - if (reply->error() == QNetworkReply::NoError) { - //success + if (reply->error() == QNetworkReply::NoError) { + //success - QString strReply = (QString)reply->readAll(); + QString strReply = (QString)reply->readAll(); - //parse json - QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8()); + //parse json + QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8()); - QJsonObject jsonObj = jsonResponse.object(); + QJsonObject jsonObj = jsonResponse.object(); - delete reply; + delete reply; - return jsonObj; - } - else { - //failure - delete reply; + return jsonObj; + } + else { + //failure + delete reply; - throw invalid_argument("API request failed."); + throw invalid_argument("API request failed."); + } } + // if API is not used, open locally stored data + QString filePath = ("../../res/mock/" + shortName + ".json").c_str(); + QFile file( filePath ); + + if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + throw invalid_argument("Could not open file to read data of the given discipline."); + } else { + QString text = file.readAll(); + file.close(); + return (QJsonDocument::fromJson(text.toUtf8())).object(); + } } /** |