mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-04-15 05:32:21 +00:00
@@ -31,3 +31,8 @@ http://localhost:12021 Default base URL
|
||||
before=yyyy/mm/dd
|
||||
series=xxx where xxx is one of watts,hr,cad,speed,nm,vam.xPower,NP
|
||||
Returns an aggregate of the best mean maximal values over the date range
|
||||
|
||||
/<athlete>/measures List supported measures groups (Body/Hrv for now)
|
||||
/<athlete>/measures/<group> Fetch Measures from <group> for a Date Range
|
||||
since=yyyy/mm/dd
|
||||
before=yyyy/mm/dd
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "Zones.h"
|
||||
#include "HrZones.h"
|
||||
#include "PaceZones.h"
|
||||
#include "Measures.h"
|
||||
|
||||
#include <QTemporaryFile>
|
||||
#include <QFile>
|
||||
@@ -98,6 +99,15 @@ APIWebService::athleteData(QStringList &paths, HttpRequest &request, HttpRespons
|
||||
return;
|
||||
}
|
||||
|
||||
// GET Measures
|
||||
if (paths[0] == "measures") {
|
||||
|
||||
// http://localhost:12021/athlete/measures
|
||||
paths.removeFirst();
|
||||
listMeasures(athlete, paths, request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
} else if (paths.count() == 3) {
|
||||
|
||||
QString athlete = paths[0];
|
||||
@@ -131,6 +141,16 @@ APIWebService::athleteData(QStringList &paths, HttpRequest &request, HttpRespons
|
||||
return;
|
||||
}
|
||||
|
||||
// GET Measures
|
||||
if (paths[0] == "measures") {
|
||||
|
||||
// http://localhost:12021/athlete/measures/Body
|
||||
// http://localhost:12021/athlete/measures/Hrv
|
||||
paths.removeFirst();
|
||||
listMeasures(athlete, paths, request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// GET HERE ITS BAD!
|
||||
@@ -606,3 +626,63 @@ APIWebService::listZones(QString athlete, QStringList, HttpRequest &request, Htt
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
APIWebService::listMeasures(QString athlete, QStringList paths, HttpRequest &request, HttpResponse &response)
|
||||
{
|
||||
// list activities and associated metrics
|
||||
response.setHeader("Content-Type", "text; charset=ISO-8859-1");
|
||||
|
||||
if (paths.isEmpty()) {
|
||||
|
||||
foreach (QString group, Measures().getGroupSymbols()) {
|
||||
response.write(group.toLocal8Bit());
|
||||
response.write("\n");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Measures measures = Measures(QDir(home.absolutePath() + "/" + athlete + "/config"), true);
|
||||
int group_index = measures.getGroupSymbols().indexOf(paths[0]);
|
||||
MeasuresGroup* measuresGroup = measures.getGroup(group_index);
|
||||
if (group_index < 0 || measuresGroup == NULL) {
|
||||
|
||||
// unknown group
|
||||
response.setStatus(500);
|
||||
response.write("unknown measures group requested.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
response.write("Date");
|
||||
QStringList field_symbols = measuresGroup->getFieldSymbols();
|
||||
for (int i=0; i<field_symbols.count(); i++) {
|
||||
response.write(", ");
|
||||
response.write(field_symbols[i].toLocal8Bit());
|
||||
}
|
||||
|
||||
// honour the since parameter
|
||||
QString sincep(request.getParameter("since"));
|
||||
QDate since(1900,01,01);
|
||||
if (sincep != "") since = QDate::fromString(sincep,"yyyy/MM/dd");
|
||||
QDate date = measuresGroup->getStartDate();
|
||||
if (since > date) date = since;
|
||||
|
||||
// before parameter
|
||||
QString beforep(request.getParameter("before"));
|
||||
QDate before(3000,01,01);
|
||||
if (beforep != "") before = QDate::fromString(beforep,"yyyy/MM/dd");
|
||||
QDate endDate = measuresGroup->getEndDate();
|
||||
if (before < endDate) endDate = before;
|
||||
|
||||
while (date <= endDate) {
|
||||
response.write("\n");
|
||||
response.write(date.toString("yyyy/MM/dd").toLocal8Bit());
|
||||
|
||||
for (int i=0; i<field_symbols.count(); i++)
|
||||
response.write(QString(", %1").arg(measuresGroup->getFieldValue(date, i)).toLocal8Bit());
|
||||
|
||||
date = date.addDays(1);
|
||||
}
|
||||
response.write("\n");
|
||||
|
||||
}
|
||||
|
||||
@@ -49,6 +49,7 @@ class APIWebService : public HttpRequestHandler
|
||||
void listActivity(QString athlete, QStringList paths, HttpRequest &request, HttpResponse &response);
|
||||
void listMMP(QString athlete, QStringList paths, HttpRequest &request, HttpResponse &response);
|
||||
void listZones(QString athlete, QStringList paths, HttpRequest &request, HttpResponse &response);
|
||||
void listMeasures(QString athlete, QStringList paths, HttpRequest &request, HttpResponse &response);
|
||||
|
||||
// utility
|
||||
void writeRideLine(RideItem &item, HttpRequest *request, HttpResponse *response);
|
||||
|
||||
Reference in New Issue
Block a user