diff options
| author | Steru <jerrydream111@gmail.com> | 2024-08-16 22:19:42 +0200 | 
|---|---|---|
| committer | Steru <jerrydream111@gmail.com> | 2024-08-16 23:58:46 +0200 | 
| commit | 88b1b119dfa35f36b64d81dbe6c84f46d86455c5 (patch) | |
| tree | 864ba9c747ef86d61b6aeb01e8985676f906bd3e /src/api | |
| parent | f24b4dcbd11336dabfd146c656e2437e4393b225 (diff) | |
Compacted competitors into one object, deleted API class (now in sportmodel).
Diffstat (limited to 'src/api')
| -rw-r--r-- | src/api/OlympicsAPI.cpp | 140 | ||||
| -rw-r--r-- | src/api/OlympicsAPI.h | 72 | 
2 files changed, 0 insertions, 212 deletions
| diff --git a/src/api/OlympicsAPI.cpp b/src/api/OlympicsAPI.cpp deleted file mode 100644 index 0334800..0000000 --- a/src/api/OlympicsAPI.cpp +++ /dev/null @@ -1,140 +0,0 @@ - -#include "OlympicsAPI.h" -#include <string> -#include <stdexcept> - -// networking -#include <QEventLoop> -#include <QNetworkAccessManager> -#include <QNetworkRequest> -#include <QNetworkReply> -#include <QUrl> -#include <QUrlQuery> - -// json parsing -#include <QFile> -#include <QJsonValue> -#include <QJsonDocument> -#include <QJsonObject> -#include <QVariantMap> -#include <QJsonArray> - - -using namespace std; - -/** - * @brief OlympicsAPI::getSportData Requests the current data from the Olympics API of a certain discipline. - * @param sport The discipline to request. - * @return The current information provided by the API endpoint. - */ -QJsonObject OlympicsAPI::getSportData(OlympicsAPI::Disciplines sport) { -    string shortName = this->getDisciplineShort(sport); - -    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())); - -        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 - -        if (reply->error() == QNetworkReply::NoError) { -            //success - -            QString strReply = (QString)reply->readAll(); - -            //parse json -            QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8()); - -            QJsonObject jsonObj = jsonResponse.object(); - -            delete reply; - -            return jsonObj; -        } -        else { -            //failure -            delete reply; - -            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(); -    } -} - -/** - * @brief OlympicsAPI::getDisciplineShort Get the discipline's short name defined by the IOC (International Olympic Committee) - * @param sport The sport you want to get the name from. - * @return The short name as a string. - */ -string OlympicsAPI::getDisciplineShort(OlympicsAPI::Disciplines sport) { -    switch (sport) { -    case OlympicsAPI::Disciplines::AquaticsArtisticSwimming: return "SWA"; -    case OlympicsAPI::Disciplines::AquaticsDiving: return "DIV"; -    case OlympicsAPI::Disciplines::AquaticsMarathonSwimming: return "OWS"; -    case OlympicsAPI::Disciplines::AquaticsSwimming: return "SWM"; -    case OlympicsAPI::Disciplines::AquaticsWaterPolo: return "WPO"; -    case OlympicsAPI::Disciplines::Archery: return "ARC"; -    case OlympicsAPI::Disciplines::Athletics: return "ATH"; -    case OlympicsAPI::Disciplines::Badminton: return "BDM"; -    case OlympicsAPI::Disciplines::Basketball3v3: return "BK3"; -    case OlympicsAPI::Disciplines::Basketball: return "BKB"; -    case OlympicsAPI::Disciplines::Boxing: return "BOX"; -    case OlympicsAPI::Disciplines::Breaking: return "BKG"; -    case OlympicsAPI::Disciplines::CanoeingSprint: return "CSP"; -    case OlympicsAPI::Disciplines::CanoeingSlalom: return "CSL"; -    case OlympicsAPI::Disciplines::CyclingBMXFreestyle: return "BMF"; -    case OlympicsAPI::Disciplines::CyclingBMXRacing: return "BMX"; -    case OlympicsAPI::Disciplines::CyclingMaountainBike: return "MTB"; -    case OlympicsAPI::Disciplines::CyclingRoad: return "CRD"; -    case OlympicsAPI::Disciplines::CyclingTrack: return "CTR"; -    case OlympicsAPI::Disciplines::EquestrianDressage: return "EDR"; -    case OlympicsAPI::Disciplines::EquestrianEventing: return "EVE"; -    case OlympicsAPI::Disciplines::EquestrianJumping: return "EJP"; -    case OlympicsAPI::Disciplines::Fencing: return "FEN"; -    case OlympicsAPI::Disciplines::FieldHockey: return "HOC"; -    case OlympicsAPI::Disciplines::Football: return "FBL"; -    case OlympicsAPI::Disciplines::Golf: return "GLF"; -    case OlympicsAPI::Disciplines::GymnasticsArtistic: return "GAR"; -    case OlympicsAPI::Disciplines::GymnasticsRhythmic: return "GRY"; -    case OlympicsAPI::Disciplines::GymnasticsTrampoline: return "GTR"; -    case OlympicsAPI::Disciplines::HandballIndoor: return "HBL"; -    case OlympicsAPI::Disciplines::Judo: return "JUD"; -    case OlympicsAPI::Disciplines::ModernPentathlon: return "MPN"; -    case OlympicsAPI::Disciplines::Rowing: return "ROW"; -    case OlympicsAPI::Disciplines::Rugby7: return "RU7"; -    case OlympicsAPI::Disciplines::Sailing: return "SAL"; -    case OlympicsAPI::Disciplines::Shooting: return "SHO"; -    case OlympicsAPI::Disciplines::Skateboarding: return "SKB"; -    case OlympicsAPI::Disciplines::SportClimbing: return "CLB"; -    case OlympicsAPI::Disciplines::Surfing: return "SRF"; -    case OlympicsAPI::Disciplines::TableTennis: return "TTE"; -    case OlympicsAPI::Disciplines::Taekwondo: return "TKW"; -    case OlympicsAPI::Disciplines::Tennis: return "TEN"; -    case OlympicsAPI::Disciplines::Triathlon: return "TRI"; -    case OlympicsAPI::Disciplines::VolleyballBeach: return "VBV"; -    case OlympicsAPI::Disciplines::VolleyballIndoor: return "VVO"; -    case OlympicsAPI::Disciplines::Weightlifting: return "WLF"; -    case OlympicsAPI::Disciplines::WrestlingFreestyle: return "WRE"; -    case OlympicsAPI::Disciplines::WrestlingGrecoRoman: return "WRG"; -    default: return "ARC"; // default, which should not be possible, because of enum -    } -} diff --git a/src/api/OlympicsAPI.h b/src/api/OlympicsAPI.h deleted file mode 100644 index a301cf8..0000000 --- a/src/api/OlympicsAPI.h +++ /dev/null @@ -1,72 +0,0 @@ - -#pragma once - -#define API_LINK "https://sph-s-api.olympics.com/summer/schedules/api/ENG/schedule/discipline/" - -#include <string> -#include <QJsonObject> - -// TODO: change this to true to use the olympics api, instead of the mock date in res/mock/ -#define USE_API_REQUEST false - -using namespace std; - -class OlympicsAPI { - -public: - -    enum Disciplines { -        AquaticsArtisticSwimming, -        AquaticsDiving, -        AquaticsMarathonSwimming, -        AquaticsSwimming, -        AquaticsWaterPolo, -        Archery, -        Athletics, -        Badminton, -        Basketball3v3, -        Basketball, -        Boxing, -        Breaking, -        CanoeingSprint, -        CanoeingSlalom, -        CyclingBMXFreestyle, -        CyclingBMXRacing, -        CyclingMaountainBike, -        CyclingRoad, -        CyclingTrack, -        EquestrianDressage, -        EquestrianEventing, -        EquestrianJumping, -        Fencing, -        FieldHockey, -        Football, -        Golf, -        GymnasticsArtistic, -        GymnasticsRhythmic, -        GymnasticsTrampoline, -        HandballIndoor, -        Judo, -        ModernPentathlon, -        Rowing, -        Rugby7, -        Sailing, -        Shooting, -        Skateboarding, -        SportClimbing, -        Surfing, -        TableTennis, -        Taekwondo, -        Tennis, -        Triathlon, -        VolleyballBeach, -        VolleyballIndoor, -        Weightlifting, -        WrestlingFreestyle, -        WrestlingGrecoRoman -    }; - -    QJsonObject getSportData(Disciplines sport); -    string getDisciplineShort(Disciplines sport); - -}; | 
