summaryrefslogtreecommitdiff
path: root/src/api/OlympicsAPI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/OlympicsAPI.cpp')
-rw-r--r--src/api/OlympicsAPI.cpp60
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();
+ }
}
/**