diff --git a/src/Cloud/Strava.cpp b/src/Cloud/Strava.cpp index 6048528cb..b730f0bc5 100644 --- a/src/Cloud/Strava.cpp +++ b/src/Cloud/Strava.cpp @@ -686,6 +686,53 @@ Strava::addSamples(RideFile* ret, QString remoteid) } } +void +Strava::addEquipment(RideFile* ret, QString gear_id) +{ + printd("Strava::addEquipment(%s)\n", gear_id.toStdString().c_str()); + + // do we have a token ? + QString token = getSetting(GC_STRAVA_TOKEN, "").toString(); + if (token == "") return; + + // lets connect and get equipment info + QString urlstr = QString("https://www.strava.com/api/v3/gear/%1").arg(gear_id); + + QUrl url = QUrl( urlstr ); + printd("url:%s\n", url.url().toStdString().c_str()); + + // request using the bearer token + QNetworkRequest request(url); + request.setRawHeader("Authorization", (QString("Bearer %1").arg(token)).toLatin1()); + + // put the file + QNetworkReply *reply = nam->get(request); + + // blocking request + QEventLoop loop; + connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); + loop.exec(); + + if (reply->error() != QNetworkReply::NoError) { + qDebug() << "error" << reply->errorString(); + return; + } + // did we get a good response ? + QByteArray r = reply->readAll(); + printd("response: %s\n", r.toStdString().c_str()); + + QJsonParseError parseError; + QJsonDocument document = QJsonDocument::fromJson(r, &parseError); + + // if path was returned all is good, lets set Equipment + if (parseError.error == QJsonParseError::NoError) { + // Just name, for now + if (!document["name"].isNull()) { + ret->setTag("Equipment", document["name"].toString()); + } + } +} + void Strava:: fixLapSwim(RideFile* ret, QJsonArray laps) { @@ -950,6 +997,8 @@ Strava::prepareResponse(QByteArray* data) } else { addSamples(ride, QString("%1").arg(each["id"].toVariant().toULongLong())); + + if (!each["gear_id"].isNull()) addEquipment(ride, each["gear_id"].toString()); // laps? if (!each["laps"].isNull()) { QJsonArray laps = each["laps"].toArray(); diff --git a/src/Cloud/Strava.h b/src/Cloud/Strava.h index 45ee2f57c..85d10c10e 100644 --- a/src/Cloud/Strava.h +++ b/src/Cloud/Strava.h @@ -77,6 +77,7 @@ class Strava : public CloudService { QByteArray* prepareResponse(QByteArray* data); void addSamples(RideFile* ret, QString remoteid); + void addEquipment(RideFile* ret, QString gear_id); void fixLapSwim(RideFile* ret, QJsonArray laps); void fixSmartRecording(RideFile* ret); diff --git a/src/Resources/xml/metadata.xml b/src/Resources/xml/metadata.xml index 9026640f4..c1197db07 100644 --- a/src/Resources/xml/metadata.xml +++ b/src/Resources/xml/metadata.xml @@ -102,6 +102,13 @@ "*" 0 + + "Workout" + "Equipment" + 0 + "" + 0 + "Workout" "Objective"