int TPUpload::upload(MainWindow *main, const RideFile *ride) { // if currently uploading fail! if (uploading == true) return 0; // create the file in .pwx format for upload QString uploadfile(QDir::tempPath() + "/tpupload.pwx"); QFile file(uploadfile); PwxFileReader reader; reader.writeRideFile(main, ride, file); // read the whole thing back and encode as base64binary file.open(QFile::ReadOnly); QTextStream stream(&file); QString thelot = stream.readAll(); QString pwxFile = zCompress(thelot.toUtf8()).toBase64(); // bleck! file.close(); // setup the soap message current = QtSoapMessage(); QString url = appsettings->value(this, GC_TPURL, "www.trainingpeaks.com").toString(); http.setHost("www.trainingpeaks.com"); http.setAction("http://www.trainingpeaks.com/TPWebServices/ImportFileForUser"); current.setMethod("ImportFileForUser", "http://www.trainingpeaks.com/TPWebServices/"); current.addMethodArgument("username", "", appsettings->cvalue(main->cyclist, GC_TPUSER).toString()); current.addMethodArgument("password", "", appsettings->cvalue(main->cyclist, GC_TPPASS).toString()); current.addMethodArgument("byteData", "", pwxFile); // do it! uploading = true; http.submitRequest(current, "/tpwebservices/service.asmx"); return pwxFile.size(); }
void TrainingstagebuchUploader::requestUpload() { assert(sessionId.length() > 0 ); parent->progressLabel->setText(tr("preparing Trainingstagebuch.org data ...")); QHttpMultiPart *body = new QHttpMultiPart( QHttpMultiPart::FormDataType ); QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"upload_submit\"")); textPart.setBody("hrm"); body->append( textPart ); QString fname = context->athlete->home->temp().absoluteFilePath(".ttbupload.pwx" ); QFile *uploadFile = new QFile( fname ); uploadFile->setParent(body); PwxFileReader reader; reader.writeRideFile(context, ride->ride(), *uploadFile ); parent->progressBar->setValue(parent->progressBar->value()+20/parent->shareSiteCount); int limit = proMember ? 8 * 1024 * 1024 : 4 * 1024 * 1024; if( uploadFile->size() >= limit ){ parent->errorLabel->setText(tr("temporary file too large for upload: %1 > %1 bytes") .arg(uploadFile->size()) .arg(limit) ); eventLoop.quit(); return; } QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/octet-stream")); filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"gc-upload-ttb.pwx\"")); uploadFile->open(QIODevice::ReadOnly); filePart.setBodyDevice(uploadFile); body->append( filePart ); parent->progressLabel->setText(tr("sending to Trainingstagebuch.org ...")); currentRequest = reqUpload; #if QT_VERSION > 0x050000 QUrlQuery urlquery; #else QUrl urlquery( TTB_URL + "/file/upload" ); #endif urlquery.addQueryItem( "view", "xml" ); urlquery.addQueryItem( "sso", sessionId ); #if QT_VERSION > 0x050000 QUrl url (TTB_URL + "/file/upload"); url.setQuery(urlquery.query()); QNetworkRequest request = QNetworkRequest(url); #else QNetworkRequest request = QNetworkRequest(urlquery); #endif request.setRawHeader( "Accept-Encoding", "identity" ); request.setRawHeader( "Accept", "application/xml" ); request.setRawHeader( "Accept-Charset", "utf-8" ); QNetworkReply *reply = networkMgr.post( request, body ); body->setParent( reply ); }
void TtbDialog::requestUpload() { assert(sessionId.length() > 0 ); progressLabel->setText(tr("preparing upload ...")); QHttpMultiPart *body = new QHttpMultiPart( QHttpMultiPart::FormDataType ); QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"upload_submit\"")); textPart.setBody("hrm"); body->append( textPart ); QString fname = context->athlete->home.absoluteFilePath(".ttbupload.pwx" ); QFile *uploadFile = new QFile( fname ); uploadFile->setParent(body); PwxFileReader reader; reader.writeRideFile(context, ride->ride(), *uploadFile ); progressBar->setValue(12); int limit = proMember ? 8 * 1024 * 1024 : 4 * 1024 * 1024; if( uploadFile->size() >= limit ){ progressLabel->setText(tr("temporary file too large for upload: %1 > %1 bytes") .arg(uploadFile->size()) .arg(limit) ); closeButton->setText(tr("&Close")); return; } QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/occtet-stream")); filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"gc-upload-ttb.pwx\"")); uploadFile->open(QIODevice::ReadOnly); filePart.setBodyDevice(uploadFile); body->append( filePart ); progressLabel->setText(tr("uploading ...")); currentRequest = reqUpload; QUrl url( TTB_URL + "/file/upload" ); url.addQueryItem( "view", "xml" ); url.addQueryItem( "sso", sessionId ); QNetworkRequest request = QNetworkRequest(url); request.setRawHeader( "Accept-Encoding", "identity" ); request.setRawHeader( "Accept", "application/xml" ); request.setRawHeader( "Accept-Charset", "utf-8" ); QNetworkReply *reply = networkMgr.post( request, body ); body->setParent( reply ); connect(reply, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(uploadProgress(qint64,qint64))); }