diff --git a/src/StravaUploadDialog.cpp b/src/StravaUploadDialog.cpp index d4b1844f4..79f6e8be8 100644 --- a/src/StravaUploadDialog.cpp +++ b/src/StravaUploadDialog.cpp @@ -318,77 +318,102 @@ StravaUploadDialog::requestUpload() connect(&networkMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestUploadFinished(QNetworkReply*))); connect(&networkMgr, SIGNAL(finished(QNetworkReply *)), &eventLoop, SLOT(quit())); - QString out; - QVector vectorPoints = ride->ride()->dataPoints(); - int totalSize = vectorPoints.size(); + bool json = false; - int size = 0; + if (json) { + QString out; - out += "{\"token\": \"" + token + "\",\"data\":["; - foreach (const RideFilePoint *point, ride->ride()->dataPoints()) - { - size++; + QVector vectorPoints = ride->ride()->dataPoints(); + int totalSize = vectorPoints.size(); - if (point->secs == 0.0) - continue; + int size = 0; - diffSecs = point->secs - prevSecs; - prevSecs = point->secs; - rideDateTime = rideDateTime.addSecs(diffSecs); + out += "{\"token\": \"" + token + "\",\"data\":["; + foreach (const RideFilePoint *point, ride->ride()->dataPoints()) + { + size++; - out += "[\""; - out += rideDateTime.toUTC().toString(Qt::ISODate); - out += "\","; - out += QString("%1").arg(point->lat,0,'f',GPS_COORD_TO_STRING); - out += ","; - out += QString("%1").arg(point->lon,0,'f',GPS_COORD_TO_STRING); + if (point->secs == 0.0) + continue; - if (altitudeChk->isChecked()) { + diffSecs = point->secs - prevSecs; + prevSecs = point->secs; + rideDateTime = rideDateTime.addSecs(diffSecs); + + out += "[\""; + out += rideDateTime.toUTC().toString(Qt::ISODate); + out += "\","; + out += QString("%1").arg(point->lat,0,'f',GPS_COORD_TO_STRING); out += ","; - out += QString("%1").arg(point->alt); + out += QString("%1").arg(point->lon,0,'f',GPS_COORD_TO_STRING); + if (altitudeChk->isChecked()) { + out += ","; + out += QString("%1").arg(point->alt); + + } + if (powerChk->isChecked()) { + out += ","; + out += QString("%1").arg(point->watts); + } + if (altitudeChk->isChecked()) { + out += ","; + out += QString("%1").arg(point->cad); + } + if (heartrateChk->isChecked()) { + out += ","; + out += QString("%1").arg(point->hr); + } + out += "]"; + if(totalSize == size) + out += "],"; + else + out += ","; } - if (powerChk->isChecked()) { - out += ","; - out += QString("%1").arg(point->watts); - } - if (altitudeChk->isChecked()) { - out += ","; - out += QString("%1").arg(point->cad); - } - if (heartrateChk->isChecked()) { - out += ","; - out += QString("%1").arg(point->hr); - } - out += "]"; - if(totalSize == size) - out += "],"; - else - out += ","; + out += "\"type\": \"json\", "; + out += "\"data_fields\": \[\"time\", \"latitude\", \"longitude\""; + + if (altitudeChk->isChecked()) + out += ", \"elevation\""; + if (powerChk->isChecked()) + out += ", \"watts\""; + if (cadenceChk->isChecked()) + out += ", \"cadence\""; + if (heartrateChk->isChecked()) + out += ", \"heartrate\""; + out += "]}"; + + QUrl url = QUrl(STRAVA_URL2 + "/upload"); + QNetworkRequest request = QNetworkRequest(url); + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + + progressBar->setValue(40); + progressLabel->setText(tr("Upload ride... Sending")); + + networkMgr.post( request, out.toAscii()); + } else { + QByteArray data; + QUrl params; + TcxFileReader reader; + + params.addQueryItem("token", token); + params.addQueryItem("type", "tcx"); + params.addQueryItem("data", reader.toByteArray(mainWindow, ride->ride())); + data = params.encodedQuery(); + + QUrl url = QUrl(STRAVA_URL2 + "/upload"); + QNetworkRequest request = QNetworkRequest(url); + request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); + + progressBar->setValue(40); + progressLabel->setText(tr("Upload ride... Sending")); + + networkMgr.post( request, data); } - out += "\"type\": \"json\", "; - out += "\"data_fields\": \[\"time\", \"latitude\", \"longitude\""; - - if (altitudeChk->isChecked()) - out += ", \"elevation\""; - if (powerChk->isChecked()) - out += ", \"watts\""; - if (cadenceChk->isChecked()) - out += ", \"cadence\""; - if (heartrateChk->isChecked()) - out += ", \"heartrate\""; - out += "]}"; - - QUrl url = QUrl(STRAVA_URL2 + "/upload"); - QNetworkRequest request = QNetworkRequest(url); - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); //qDebug() << out; - progressBar->setValue(40); - progressLabel->setText(tr("Upload ride... Sending")); - networkMgr.post( request, out.toAscii()); eventLoop.exec(); } diff --git a/src/TcxRideFile.cpp b/src/TcxRideFile.cpp index 348381d27..ad505d8eb 100644 --- a/src/TcxRideFile.cpp +++ b/src/TcxRideFile.cpp @@ -50,8 +50,8 @@ RideFile *TcxFileReader::openRideFile(QFile &file, QStringList &errors, QList 0) @@ -390,7 +390,14 @@ TcxFileReader::writeRideFile(MainWindow *mainWindow, const RideFile *ride, QFile author.appendChild(author_part_number); - QByteArray xml = doc.toByteArray(4); + return doc.toByteArray(4); +} + +bool +TcxFileReader::writeRideFile(MainWindow *mainWindow, const RideFile *ride, QFile &file) const +{ + QByteArray xml = toByteArray(mainWindow, ride); + if (!file.open(QIODevice::WriteOnly)) return(false); if (file.write(xml) != xml.size()) return(false); file.close(); diff --git a/src/TcxRideFile.h b/src/TcxRideFile.h index 73d0deb75..20c6ff961 100644 --- a/src/TcxRideFile.h +++ b/src/TcxRideFile.h @@ -25,6 +25,7 @@ struct TcxFileReader : public RideFileReader { virtual RideFile *openRideFile(QFile &file, QStringList &errors, QList* = 0) const; + QByteArray toByteArray(MainWindow *mainWindow, const RideFile *ride) const; bool writeRideFile(MainWindow *mainWindow, const RideFile *ride, QFile &file) const; bool hasWrite() const { return true; } };