void YfrogUpload::upload(const QString& filename) { QString realm("http://api.twitter.com/"); QString authProviderUrl("https://api.twitter.com/1/account/verify_credentials.xml"); QUrl url("http://yfrog.com/api/xauth_upload"); QHttpMultiPart* mp = new QHttpMultiPart(QHttpMultiPart::FormDataType); // Add the image data. QFile file(filename); file.open(QIODevice::ReadOnly); QHttpPart imagePart; imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"media\"; filename=\"" + file.fileName() + "\""); imagePart.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-stream"); imagePart.setBody(file.readAll()); mp->append(imagePart); // key QHttpPart keyPart; keyPart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"key\""); keyPart.setBody(m_yfrogApiKey.toLatin1()); mp->append(keyPart); QByteArray oauthHeader = m_oauthTwitter->generateAuthorizationHeader(authProviderUrl, OAuth::GET, realm); QNetworkRequest req(url); req.setRawHeader("X-Auth-Service-Provider", authProviderUrl.toLatin1()); req.setRawHeader("X-Verify-Credentials-Authorization", oauthHeader); // Post it! QNetworkReply* reply = m_oauthTwitter->networkAccessManager()->post(req, mp); mp->setParent(reply); connect(reply, SIGNAL(finished()), this, SLOT(reply())); }
Authorization::Authorization(const QString &login, const QString &password) : QObject(NULL), m_login(login), m_password(password) { QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart loginPart; loginPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"login\"")); loginPart.setBody(m_login.toLatin1()); QHttpPart passPart; passPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"pass\"")); passPart.setBody(m_password.toLatin1()); multiPart->append(loginPart); multiPart->append(passPart); QUrl url("http://freedomsex.net/login.php"); QNetworkRequest request(url); QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkReply *reply = manager->post(request, multiPart); multiPart->setParent(reply); connect(manager, SIGNAL(finished(QNetworkReply*)), SLOT(test_answer(QNetworkReply*))); connect(manager, SIGNAL(finished(QNetworkReply*)), manager, SLOT(deleteLater())); }
void NicoLiveManager::getNewWakuAPI(const int type, QString liveNum) { if (type == 2) { if (!nwin->isSetNecessary()) { mwin->insLog("NicoLiveManager::getNewWakuAPI type" + QString::number(type) + " no necessary item(s)"); QMessageBox::information(mwin, "Viqo", QStringLiteral("設定されていない必須項目があります")); return; } if (!nwin->isTwitterTagValid()) { mwin->insLog("NicoLiveManager::getNewWakuAPI type" + QString::number(type) + " twitter tag must start with \"#\""); QMessageBox::information(mwin, "Viqo", QStringLiteral("ツイッタータグは # で始めてください")); return; } } if (mNewWaku!=nullptr) mNewWaku->deleteLater(); mNewWaku = new QNetworkAccessManager(this); QHttpMultiPart *multiPart; if (type > 2) { multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); multiPart->setParent(mNewWaku); } else { multiPart = nullptr; } if (type == 0) { connect(mNewWaku, SIGNAL(finished(QNetworkReply*)), this, SLOT(newWakuNewReuseFinished(QNetworkReply*))); } else if (type == 1) {
QString ccloud::uploadHtmlSchedule(QString htmlpath) { qDebug() << "upload test"; QFile *file = new QFile( htmlpath ); QFileInfo info( htmlpath ); if (!file->exists()){ qDebug() << "file not exists"; return ""; } QSettings settings; QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"upload\"")); textPart.setBody("upload"); QHttpPart userPart; userPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"user_id\"")); userPart.setBody( settings.value("cloud/id").toString().toLatin1() ); QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/html")); filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant( QString("form-data; name=\"userfile\"; filename=\"%1\"").arg( info.fileName() ))); file->open(QIODevice::ReadOnly); filePart.setBodyDevice(file); file->setParent(multiPart); multiPart->append(textPart); multiPart->append(userPart); multiPart->append(filePart); QUrl url("https://api.theocbase.net/theocbase_get.php"); QNetworkRequest request(url); QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkReply *reply = manager->post(request,multiPart); multiPart->setParent(reply); QEventLoop loop; connect(reply,SIGNAL(finished()),&loop,SLOT(quit())); loop.exec(); QString replystr = reply->readAll(); if (reply->error() == QNetworkReply::NoError) { if (replystr == "true"){ return "https://schedule.theocbase.net/" + info.fileName(); }else{ return ""; } } else { QMessageBox::information(0,"","Error when uploding html-schedule to cloud\n" + reply->errorString()); return ""; } }
void CyclingAnalyticsUploader::requestUploadCyclingAnalytics() { parent->progressLabel->setText(tr("Upload ride to CyclingAnalytics...")); parent->progressBar->setValue(parent->progressBar->value()+10/parent->shareSiteCount); QEventLoop eventLoop; QNetworkAccessManager networkMgr; connect(&networkMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestUploadCyclingAnalyticsFinished(QNetworkReply*))); connect(&networkMgr, SIGNAL(finished(QNetworkReply *)), &eventLoop, SLOT(quit())); QUrl url = QUrl( "https://www.cyclinganalytics.com/api/me/upload" ); QNetworkRequest request = QNetworkRequest(url); QString boundary = QVariant(qrand()).toString()+QVariant(qrand()).toString()+QVariant(qrand()).toString(); TcxFileReader reader; QByteArray file = reader.toByteArray(context, ride->ride(), parent->altitudeChk->isChecked(), parent->powerChk->isChecked(), parent->heartrateChk->isChecked(), parent->cadenceChk->isChecked()); // MULTIPART ***************** QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); multiPart->setBoundary(boundary.toLatin1()); request.setRawHeader("Authorization", (QString("Bearer %1").arg(token)).toLatin1()); QHttpPart activityNamePart; activityNamePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"title\"")); activityNamePart.setBody(QString(parent->titleEdit->text()).toLatin1()); QHttpPart dataTypePart; dataTypePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"format\"")); dataTypePart.setBody("tcx"); QHttpPart filenamePart; filenamePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"filename\"")); filenamePart.setBody("file.tcx"); QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"data\"; filename=\"file.tcx\"; type=\"text/xml\"")); filePart.setBody(file); multiPart->append(activityNamePart); multiPart->append(filenamePart); multiPart->append(dataTypePart); multiPart->append(filePart); QScopedPointer<QNetworkReply> reply( networkMgr.post(request, multiPart) ); multiPart->setParent(reply.data()); parent->progressBar->setValue(parent->progressBar->value()+30/parent->shareSiteCount); parent->progressLabel->setText(tr("Upload ride... Sending to CyclingAnalytics")); eventLoop.exec(); }
/* make a multipart HTTP POST at the following path "/restapi/public/activities/upload.json" on selflloops web site using SSL. The requested parameters are: - "email" the email of a valid SelfLoops account - "pw" the password - "tcxfile" the zipped TCX file (example: test.tcx.gz). On success, response message contains a JSON encoded data with the new "activity_id" created. On error, SelfLoops response contains a JSON encoded data with "error_code" and "message" key. */ void SelfLoopsUploader::requestUploadSelfLoops() { parent->progressLabel->setText(tr("Upload ride to Selfloops...")); parent->progressBar->setValue(parent->progressBar->value()+10/parent->shareSiteCount); QEventLoop eventLoop; QNetworkAccessManager networkMgr; connect(&networkMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestUploadSelfLoopsFinished(QNetworkReply*))); connect(&networkMgr, SIGNAL(finished(QNetworkReply *)), &eventLoop, SLOT(quit())); QUrl url = QUrl( "https://www.selfloops.com/restapi/public/activities/upload.json" ); QNetworkRequest request = QNetworkRequest(url); QString boundary = QVariant(qrand()).toString()+QVariant(qrand()).toString()+QVariant(qrand()).toString(); // The TCX file have to be gzipped TcxFileReader reader; QByteArray file = zCompress(reader.toByteArray(context, ride->ride(), parent->altitudeChk->isChecked(), parent->powerChk->isChecked(), parent->heartrateChk->isChecked(), parent->cadenceChk->isChecked())); QString username = appsettings->cvalue(context->athlete->cyclist, GC_SELUSER).toString(); QString password = appsettings->cvalue(context->athlete->cyclist, GC_SELPASS).toString(); // MULTIPART ***************** QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::MixedType); multiPart->setBoundary(boundary.toLatin1()); QHttpPart emailPart; emailPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"email\"")); emailPart.setBody(username.toLatin1()); QHttpPart passwordPart; passwordPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"pw\"")); passwordPart.setBody(password.toLatin1()); QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"tcxfile\"; filename=\"myfile.tcx.gz\"; type=\"application/x-gzip\"")); filePart.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-gzip"); filePart.setBody(file); multiPart->append(emailPart); multiPart->append(passwordPart); multiPart->append(filePart); QScopedPointer<QNetworkReply> reply( networkMgr.post(request, multiPart) ); multiPart->setParent(reply.data()); parent->progressBar->setValue(parent->progressBar->value()+30/parent->shareSiteCount); parent->progressLabel->setText(tr("Upload ride... Sending to Selfloops")); eventLoop.exec(); }
void ImgurUploader::upload(const QString &fileName) { QFile *file = new QFile(fileName); if (!file->open(QIODevice::ReadOnly)) { emit error(ImageUploader::FileError, tr("Unable to read screenshot file"), fileName); file->deleteLater(); return; } QNetworkRequest request(QUrl("https://api.imgur.com/3/image")); request.setRawHeader("Authorization", QString("Client-ID %1").arg(clientId()).toLatin1()); QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); if (!mSettings.value("anonymous", true).toBool()) { request.setRawHeader("Authorization", QByteArray("Bearer ") + mSettings.value("access_token").toByteArray()); if (!mSettings.value("album").toString().isEmpty()) { QHttpPart albumPart; albumPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"album\"")); albumPart.setBody(mSettings.value("album").toByteArray()); multiPart->append(albumPart); } } QHttpPart imagePart; imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QMimeDatabase().mimeTypeForFile(fileName, QMimeDatabase::MatchExtension).name()); imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"image\"")); imagePart.setBodyDevice(file); file->setParent(multiPart); multiPart->append(imagePart); QNetworkReply *reply = Uploader::network()->post(request, multiPart); reply->setProperty("fileName", fileName); this->setProperty("fileName", fileName); multiPart->setParent(reply); #ifdef Q_OS_WIN connect(reply, &QNetworkReply::sslErrors, [reply](const QList<QSslError> &errors) { Q_UNUSED(errors); if (QSysInfo::WindowsVersion <= QSysInfo::WV_2003) { reply->ignoreSslErrors(); } }); #endif connect(reply, &QNetworkReply::uploadProgress, this, &ImgurUploader::uploadProgress); connect(this , &ImgurUploader::cancelRequest, reply, &QNetworkReply::abort); connect(this , &ImgurUploader::cancelRequest, reply, &QNetworkReply::deleteLater); connect(reply, &QNetworkReply::finished, this, &ImgurUploader::finished); }
/** * @brief downloader::onRequest * @param request */ void downloader::onRequest(QNetworkRequest *request) { QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\"")); textPart.setBody("my text"); multiPart->append(textPart); QUrl url("http://localhost:55555"); request->setUrl(url); QNetworkReply *reply = http->post(*request,multiPart); multiPart->setParent(reply); }
void ImgurUploader::upload(QNetworkAccessManager *net, UploadItemPtr item, const QVariant &data) { m_net = net; const QVariantMap map = data.toMap(); const QVariantList authData = map.value(LS("a")).toList(); if (authData.size() == 3) { m_clientId = authData.at(0).toString(); m_clientSecret = authData.at(1).toString(); m_queue.enqueue(item); getToken(ChatId(ChatId::MessageId), "refresh_token", authData.value(2).toByteArray(), authData); return; } QNetworkReply *reply = 0; if (item->type() == ImageItem::Type) { ImageItem *i = uploaditem_cast<ImageItem*>(item.data()); QHttpPart image; image.setHeader(QNetworkRequest::ContentTypeHeader, "image/png"); image.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"image\"; filename=\"" + DateTime::toDateTime(item->date()).toString(LS("yyyy-MM-dd_hh-mm-ss")).toLatin1() + ".png\""); image.setBody(i->raw); QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); multiPart->append(image); if (!item->title().isEmpty()) { QHttpPart title; title.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"title\"")); title.setBody(item->title().toUtf8()); multiPart->append(title); } QNetworkRequest request(QUrl(LS("https://api.imgur.com/3/image"))); request.setRawHeader("User-Agent", OsInfo::userAgent()); if (authData.size() == 4) request.setRawHeader("Authorization", "Bearer " + authData.value(3).toByteArray()); else request.setRawHeader("Authorization", "Client-ID " + authData.value(0).toByteArray()); reply = net->post(request, multiPart); multiPart->setParent(reply); } prepare(reply, item->id()); }
bool uploadImage::check_interface_authencity(QString code){ QEventLoop eventLoop; QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart textPart2; textPart2.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"isGenuine\"")); textPart2.setBody(code.toUtf8()); multiPart->append(textPart2); QNetworkAccessManager mgr; QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); QNetworkRequest req( QUrl( QString(MainWindow::serverAddress+"/recieveVotersData.php") ) ); QNetworkReply *reply = mgr.post(req,multiPart); multiPart->setParent(reply); eventLoop.exec(); // blocks stack until "finished()" has been called if (reply->error() == QNetworkReply::NoError) { //success QString strx=reply->readAll(); QJsonDocument jsonResponse = QJsonDocument::fromJson(strx.toUtf8()); QJsonObject jsonObject = jsonResponse.object(); QJsonObject obj=jsonObject["code"].toObject(); code=obj.value("response").toString(); bool isGenuineServer=obj.value("validity").toString().toInt()>0; if(isGenuineServer){ networkManagement::systemCode=code; networkManagement::isGenuine=true; } delete reply; return true; } else { //failure qDebug() << "Failure" <<reply->errorString(); delete reply; return false; } }
QNetworkReply* MNetworkManager::sendJWT(const QString url, QJsonObject ¶ms, QString method, const QString snapshotUrl, quint32 timestamp) { QJsonObject header; header["typ"] = "JWT"; header["alg"] = "sha256"; QByteArray encode; encode.append(QJsonDocument(header).toJson().toBase64(QByteArray::Base64Encoding)); encode.append("."); encode.append(QJsonDocument(params).toJson().toBase64(QByteArray::Base64Encoding)); QByteArray signature = QMessageAuthenticationCode::hash(encode, QByteArray(SECRET), QCryptographicHash::Sha256).toHex(); QByteArray jwt; jwt.append(encode); jwt.append("."); jwt.append(signature); QString apiUrl = APIHOST; apiUrl.append(url); QNetworkRequest request; request.setUrl(QUrl(apiUrl)); request.setRawHeader("JWT", jwt); QNetworkReply* reply; QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart imagePart; imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/png")); imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"screenshot_" + QString("%1").arg(timestamp) + "\"; filename=\"screenshot.jpg\"")); QFile *file = new QFile(snapshotUrl); file->open(QIODevice::ReadOnly); imagePart.setBodyDevice(file); file->setParent(multiPart); // we cannot delete the file now, so delete it with the multiPart multiPart->append(imagePart); if (method == "post") { reply = this->post(request, multiPart); } else { reply = this->get(request); } multiPart->setParent(reply); reply->setProperty("imagePath", snapshotUrl); reply->setProperty("timestamp", timestamp); return reply; }
void Toasty::slotNotify(Snore::Notification notification) { QString key = settingsValue(ToastyConstants::DeviceID).toString(); if (key.isEmpty()) { return; } QNetworkRequest request(QUrl::fromUserInput(QLatin1String("http://api.supertoasty.com/notify/") + key)); QHttpMultiPart *mp = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart title; title.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(QLatin1String("form-data; name=\"title\""))); title.setBody(notification.title().toUtf8().constData()); mp->append(title); QHttpPart text; text.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(QLatin1String("form-data; name=\"text\""))); text.setBody(notification.text().toUtf8().constData()); mp->append(text); QHttpPart app; app.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(QLatin1String("form-data; name=\"sender\""))); app.setBody(notification.application().name().toUtf8().constData()); mp->append(app); QHttpPart icon; icon.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(QLatin1String("form-data; name=\"image\"; filename=\"") + notification.icon().localUrl(QSize(128, 128)) + QLatin1Char('"'))); icon.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(QLatin1String("image/png"))); QFile *file = new QFile(notification.icon().localUrl(QSize(128, 128))); file->open(QIODevice::ReadOnly); icon.setBodyDevice(file); mp->append(icon); QNetworkReply *reply = m_manager.post(request, mp); mp->setParent(reply); file->setParent(reply); connect(reply, &QNetworkReply::finished, [reply]() { qCDebug(SNORE) << reply->error(); qCDebug(SNORE) << reply->readAll(); reply->close(); reply->deleteLater(); }); }
bool uploadImage::take_remote_back(const int remoteid){ QEventLoop eventLoop; QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart textPart2,textPart1; textPart2.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"take_remote_back\"")); textPart2.setBody(QByteArray::number(remoteid)); textPart1.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"systemCode\"")); textPart1.setBody(networkManagement::systemCode.toUtf8()); multiPart->append(textPart2); multiPart->append(textPart1); // "quit()" the event-loop, when the network request "finished()" QNetworkAccessManager mgr; QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); QNetworkRequest req( QUrl( QString(MainWindow::serverAddress+"/syncRemotes.php") ) ); QNetworkReply *reply = mgr.post(req,multiPart); multiPart->setParent(reply); eventLoop.exec(); // blocks stack until "finished()" has been called if (reply->error() == QNetworkReply::NoError) { //success QString strx=reply->readAll(); qDebug()<<strx; // qDebug()<<propertyKeys; delete reply; return true; } else { //failure qDebug() << "Failure" <<reply->errorString(); delete reply; return false; } }
void ChooseFileDlg::onFileSelect(bool) { QString path = QFileDialog::getOpenFileName(this, tr("Open File"), NULL, tr("All files *.*")); QFile *file = new QFile(path); if (!file->exists() || !file->open(QIODevice::ReadOnly)) return; QProgressDialog progress(tr("Uploading..."), tr("Abort"), 0, 100, this); progress.setMinimumDuration(0); QHttpPart httpFilePart; httpFilePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(QString("form-data; name=\"file\"; filename=\"%1\"").arg(QFileInfo(path).fileName()))); httpFilePart.setBodyDevice(file); QHttpMultiPart *httpMultiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); httpMultiPart->append(httpFilePart); QNetworkAccessManager manager; QNetworkReply *reply = manager.post(QNetworkRequest(QUrl("http://127.0.0.1:3000/media/upload")), httpMultiPart); connect(reply, &QNetworkReply::uploadProgress, [&](qint64 bytesSent, qint64 bytesTotal){ if (bytesSent && bytesTotal) progress.setValue((100 * bytesSent) / bytesTotal); }); file->setParent(httpMultiPart); httpMultiPart->setParent(reply); connect(&progress, &QProgressDialog::canceled, [&]() { reply->abort(); }); while (reply->isRunning()) { QCoreApplication::processEvents(); } if (reply->error() != QNetworkReply::NoError) { if (reply->error() != QNetworkReply::OperationCanceledError) QMessageBox::warning(this, tr("Failed to upload"), reply->errorString()); return; } QByteArray content = reply->readAll(); qDebug() << content; }
/// <summary> /// Execute http post /// </summary> /// <param name="url">url for the http post</param> /// <param name="data">string data to post</param> /// <returns>Server answer</returns> string VulkanDatabase::httpPost(string url, string data) { manager = new QNetworkAccessManager(NULL); QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart jsonPart; jsonPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"data\"; filename=\"vulkanreport.json\"")); jsonPart.setBody(QString::fromStdString(data).toLatin1()); multiPart->append(jsonPart); QUrl qurl(QString::fromStdString(url)); if (dbLogin) { qurl.setUserName(dbUser); qurl.setPassword(dbPass); } QNetworkRequest request(qurl); QNetworkReply *reply = manager->post(request, multiPart); multiPart->setParent(reply); QEventLoop loop; connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); if (reply->error() == QNetworkReply::NoError) { QByteArray bytes = reply->readAll(); QString replyStr(bytes); delete(manager); return replyStr.toStdString(); } else { QString err; err = reply->errorString(); delete(manager); return err.toStdString(); } }
//////////// /// \brief QQPalmiFilePoster::postFileUpload3TerOrg /// \param file /// QNetworkReply * QQPalmiFilePoster::postFileUpload3TerOrg(QFile *file) { QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart filePart; #if(QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) QMimeDatabase mimeDatabase; QMimeType mimeType = mimeDatabase.mimeTypeForFile(file->fileName(), QMimeDatabase::MatchDefault); filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(mimeType.name())); #else filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/octet-stream")); #endif filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"file\"; filename=\"%1\"").arg(file->fileName())); filePart.setBodyDevice(file); file->setParent(multiPart); // we cannot delete the file now, so delete it with the multiPart multiPart->append(filePart); QHttpPart timePart; timePart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"time\"")); timePart.setBody(QString::fromLatin1("week").toLatin1()); multiPart->append(timePart); QUrl url(QString("http://%1/script.php").arg(FILE_SHARING_SERVICE_JIRAFEAU_3TER_ORG)); QNetworkRequest request(url); //request.setRawHeader("User-Agent", "Mozilla/5.0 (quteqoin)"); // Le service n'accepte pas l'ua par défaut ... //request.setRawHeader("Accept", "application/json, text/javascript, */*; q=0.01"); //request.setRawHeader("Accept-Language", "en-US,en;q=0.5"); //request.setRawHeader("Accept-Encoding", "gzip, deflate"); // Qt 4 ne supporte pas gunzip nativement .... //request.setRawHeader("X-Requested-With", "XMLHttpRequest"); request.setRawHeader("Referer", QString("http://%1/").arg(FILE_SHARING_SERVICE_JIRAFEAU_3TER_ORG).toLatin1()); QNetworkReply *reply = httpPost(request, multiPart); multiPart->setParent(reply); // delete the multiPart with the reply return reply; }
void DroidStoreAPI::getDownloadURL(QByteArray packageid, QByteArray evozi_key) { QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart packageidPart; packageidPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"packagename\"")); packageidPart.setBody(packageid); multiPart->append(packageidPart); QHttpPart apikeyPart; apikeyPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"api_key\"")); apikeyPart.setBody(evozi_key); multiPart->append(apikeyPart); QUrl url(downloadURL); QNetworkRequest request(url); QNetworkAccessManager* manager = new QNetworkAccessManager(); QNetworkReply *reply = manager->post(request, multiPart); multiPart->setParent(reply); connect(reply, SIGNAL(finished()), this, SLOT(onComplete())); }
void OnlineAstrometryParser::uploadFile() { QNetworkRequest request; QFile *fitsFile = new QFile(filename); bool rc = fitsFile->open(QIODevice::ReadOnly); if (rc == false) { align->appendLogText(i18n("Failed to open file %1. %2", filename, fitsFile->errorString())); delete (fitsFile); emit solverFailed(); return; } QUrl url(Options::astrometryAPIURL()); url.setPath("/api/upload"); request.setUrl(url); QHttpMultiPart *reqEntity = new QHttpMultiPart(QHttpMultiPart::FormDataType); QVariantMap uploadReq; uploadReq.insert("publicly_visible", "n"); uploadReq.insert("allow_modifications", "n"); uploadReq.insert("session", sessionKey); uploadReq.insert("allow_commercial_use", "n"); uploadReq.insert("scale_units", "arcminwidth"); uploadReq.insert("scale_type", "ul"); uploadReq.insert("scale_lower", lowerScale); uploadReq.insert("scale_upper", upperScale); uploadReq.insert("center_ra", center_ra); uploadReq.insert("center_dec", center_dec); uploadReq.insert("radius", radius); if (downsample_factor != 0) uploadReq.insert("downsample_factor", downsample_factor); if (parity != -1) uploadReq.insert("parity", parity); QJsonObject json = QJsonObject::fromVariantMap(uploadReq); QJsonDocument json_doc(json); QHttpPart jsonPart; jsonPart.setHeader(QNetworkRequest::ContentTypeHeader, "application/text/plain"); jsonPart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"request-json\""); jsonPart.setBody(json_doc.toJson(QJsonDocument::Compact)); QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentTypeHeader,"application/octet-stream"); filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"file\"; filename=\"%1\"").arg(filename)); filePart.setBodyDevice(fitsFile); // Re-parent so that it get deleted later fitsFile->setParent(reqEntity); reqEntity->append(jsonPart); reqEntity->append(filePart); workflowStage = UPLOAD_STAGE; align->appendLogText(i18n("Uploading file...")); QNetworkReply *reply = networkManager->post(request, reqEntity); // The entity should be deleted when reply is finished reqEntity->setParent(reply); }
// Documentation is at: // https://strava.pbworks.com/w/page/39241255/v2%20upload%20create void StravaUploader::requestUploadStrava() { parent->progressLabel->setText(tr("Upload ride to Strava...")); parent->progressBar->setValue(parent->progressBar->value()+10/parent->shareSiteCount); QEventLoop eventLoop; QNetworkAccessManager networkMgr; int year = ride->fileName.left(4).toInt(); int month = ride->fileName.mid(5,2).toInt(); int day = ride->fileName.mid(8,2).toInt(); int hour = ride->fileName.mid(11,2).toInt(); int minute = ride->fileName.mid(14,2).toInt();; int second = ride->fileName.mid(17,2).toInt();; QDate rideDate = QDate(year, month, day); QTime rideTime = QTime(hour, minute, second); QDateTime rideDateTime = QDateTime(rideDate, rideTime); connect(&networkMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestUploadStravaFinished(QNetworkReply*))); connect(&networkMgr, SIGNAL(finished(QNetworkReply *)), &eventLoop, SLOT(quit())); TcxFileReader reader; QUrl url = QUrl( "https://www.strava.com/api/v3/uploads" ); // The V3 API doc said "https://api.strava.com" but it is not working yet QNetworkRequest request = QNetworkRequest(url); //QString boundary = QString::number(qrand() * (90000000000) / (RAND_MAX + 1) + 10000000000, 16); QString boundary = QVariant(qrand()).toString()+QVariant(qrand()).toString()+QVariant(qrand()).toString(); QByteArray file = reader.toByteArray(context, ride->ride(), parent->altitudeChk->isChecked(), parent->powerChk->isChecked(), parent->heartrateChk->isChecked(), parent->cadenceChk->isChecked()); // MULTIPART ***************** QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); multiPart->setBoundary(boundary.toLatin1()); QHttpPart accessTokenPart; accessTokenPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"access_token\"")); accessTokenPart.setBody(token.toLatin1()); QHttpPart activityTypePart; activityTypePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"activity_type\"")); activityTypePart.setBody("ride"); QHttpPart activityNamePart; activityNamePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"activity_name\"")); activityNamePart.setBody(QString(parent->titleEdit->text()).toLatin1()); QHttpPart dataTypePart; dataTypePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"data_type\"")); dataTypePart.setBody("tcx"); QHttpPart externalIdPart; externalIdPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"external_id\"")); externalIdPart.setBody("Ride"); QHttpPart privatePart; privatePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"private\"")); privatePart.setBody("TRUE"); QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/xml")); filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"file.tcx\"; type=\"text/xml\"")); filePart.setBody(file); multiPart->append(accessTokenPart); multiPart->append(activityTypePart); multiPart->append(activityNamePart); multiPart->append(dataTypePart); multiPart->append(externalIdPart); multiPart->append(privatePart); multiPart->append(filePart); QScopedPointer<QNetworkReply> reply( networkMgr.post(request, multiPart) ); multiPart->setParent(reply.data()); parent->progressBar->setValue(parent->progressBar->value()+30/parent->shareSiteCount); parent->progressLabel->setText(tr("Upload ride... Sending to Strava")); eventLoop.exec(); }
void PomfUploader::upload(const QString &fileName) { QString pomfUrl = mSettings["pomf_url"].toString(); if (pomfUrl.isEmpty()) { emit error(ImageUploader::HostError, tr("Invalid pomf uploader URL!"), fileName); return; } QUrl url = QUrl::fromUserInput(pomfUrl + "/upload.php"); QFile *file = new QFile(fileName); if (!file->open(QIODevice::ReadOnly)) { emit error(ImageUploader::FileError, tr("Unable to read screenshot file"), fileName); file->deleteLater(); return; } QNetworkRequest request(url); QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart imagePart; imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QMimeDatabase().mimeTypeForFile(fileName, QMimeDatabase::MatchExtension).name()); imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"files[]\"; filename=\"%1\"").arg(QFileInfo(fileName).fileName())); imagePart.setBodyDevice(file); file->setParent(multiPart); multiPart->append(imagePart); QNetworkReply *reply = Uploader::network()->post(request, multiPart); this->setProperty("fileName", fileName); multiPart->setParent(reply); connect(this , &PomfUploader::cancelRequest, reply, &QNetworkReply::abort); connect(this , &PomfUploader::cancelRequest, reply, &QNetworkReply::deleteLater); connect(reply, &QNetworkReply::uploadProgress, this, [&](qint64 bytesSent, qint64 bytesTotal) { float b = (float) bytesSent / bytesTotal; int p = qRound(b * 100); setProgress(p); }); connect(reply, &QNetworkReply::finished, this, [&, reply, fileName] { const QJsonObject pomfResponse = QJsonDocument::fromJson(reply->readAll()).object(); if (reply->error() != QNetworkReply::NoError && pomfResponse.isEmpty()) { emit error(ImageUploader::NetworkError, tr("Error reaching uploader"), fileName); return; } if (!pomfResponse.contains("success") || !pomfResponse.contains("files")) { emit error(ImageUploader::HostError, tr("Invalid response from uploader"), fileName); return; } if (pomfResponse["success"].toBool()) { emit uploaded(fileName, pomfResponse["files"].toArray().at(0).toObject()["url"].toString(), ""); } else { QString description; if (pomfResponse.contains("description")) { description = pomfResponse["description"].toString(); } if (description.isEmpty()) { description = tr("Host error"); } emit error(ImageUploader::HostError, description, fileName); } }); connect(reply, &QNetworkReply::sslErrors, [reply](const QList<QSslError> &errors) { Q_UNUSED(errors); if (QSysInfo::WindowsVersion == QSysInfo::WV_XP) { reply->ignoreSslErrors(); } }); }
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))); }
bool ccloud::syncSpeakers() { // check is user admin or not QNetworkAccessManager *m_manager = new QNetworkAccessManager(this); QNetworkReply *reply = m_manager->get( QNetworkRequest(QUrl(QString("https://api.theocbase.net/theocbase_get.php?adminornot=adminornot&user_id=%1").arg( QVariant(this->userId()).toString() ) ))); QEventLoop loop; connect(reply,SIGNAL(finished()),&loop,SLOT(quit())); loop.exec(); QString str = reply->readAll(); qDebug() << "admin or not" << str; bool admin = (str.split(",").at(0) == "true"); QString circuit = str.split(",").at(1); if (admin){ qDebug() << "sync speaker / admin"; // POST QString syncFileName = QDir::tempPath() + "/theocbase_transfer_" + QDate::currentDate().toString(Qt::ISODate) + ".thb"; csync syn; syn.CreateXMLFile(syncFileName, QDate::currentDate(),false, true, false, false, false,false,false,0); QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"export\"")); textPart.setBody("export"); int userid = this->userId(); QHttpPart useridPart; useridPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"user_id\"")); useridPart.setBody( QVariant(userid).toString().toLatin1() ); QHttpPart fromPart; fromPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"circuit_id\"")); fromPart.setBody( circuit.toLatin1() ); QHttpPart datePart; datePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"date\"")); datePart.setBody(QDate::currentDate().toString("yyyy.MM.dd").toLatin1() + "-" + QTime::currentTime().toString("HHmmss").toLatin1()); QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/xml")); filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"")); QFile *file = new QFile(syncFileName); file->open(QIODevice::ReadOnly); filePart.setBodyDevice(file); file->setParent(multiPart); multiPart->append(textPart); multiPart->append(useridPart); multiPart->append(datePart); multiPart->append(filePart); multiPart->append(fromPart); QNetworkRequest request(QUrl(QString("https://api.theocbase.net/theocbase_get.php"))); m_manager = new QNetworkAccessManager(this); QNetworkReply *replyPost = m_manager->post(request,multiPart); multiPart->setParent(replyPost); QEventLoop loopPost; connect(replyPost,SIGNAL(finished()),&loopPost,SLOT(quit())); loopPost.exec(); if (reply->error() == QNetworkReply::NoError) { qDebug() << "export done!" << replyPost->readAll(); return true; } else { QMessageBox::information(0,"","Error when synchronizing speakers\n" + reply->errorString()); return false; } }else{ // GET qDebug() << "sync speaker / user"; } }
bool ccloud::syncMobile(QDate date) { qDebug() << "mobile sync kutsu"; QString syncFileName = QDir::tempPath() + "/theocbase_transfer_" + QDate::currentDate().toString(Qt::ISODate) + ".thb"; QDate tempdate = date.addDays(4 * -7); csync syn; syn.CreateXMLFile(syncFileName, tempdate,true, false, true, true, false, true,false,8); QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"import\"")); textPart.setBody("import"); int userid = this->userId(); QHttpPart useridPart; useridPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"user_id\"")); useridPart.setBody( QVariant(userid).toString().toLatin1() ); QHttpPart fromPart; fromPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"from\"")); fromPart.setBody("fromTheocBase"); QHttpPart datePart; datePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"date\"")); datePart.setBody(QDate::currentDate().toString("yyyy.MM.dd").toLatin1() + "-" + QTime::currentTime().toString("HHmmss").toLatin1()); QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/xml")); filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"")); QFile *file = new QFile(syncFileName); file->open(QIODevice::ReadOnly); filePart.setBodyDevice(file); file->setParent(multiPart); multiPart->append(textPart); multiPart->append(useridPart); multiPart->append(datePart); multiPart->append(filePart); multiPart->append(fromPart); QUrl url("https://api.theocbase.net/theocbase_get.php"); QNetworkRequest request(url); QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkReply *reply = manager->post(request,multiPart); multiPart->setParent(reply); QEventLoop loop; connect(reply,SIGNAL(finished()),&loop,SLOT(quit())); loop.exec(); if (reply->error() == QNetworkReply::NoError) { QString replystr = reply->readAll(); qDebug() << "sync mobile" << replystr; return true; } else { QMessageBox::information(0,"","Error when synchronizing mobile data\n" + reply->errorString()); return false; } }
/*! * \brief CrashReportDialog::sendReport * Slot activated when mpSendReportButton clicked signal is raised.\n * Sends the crash report alongwith selected log files. */ void CrashReportDialog::sendReport() { // ask for e-mail address. if (mpEmailTextBox->text().isEmpty()) { QMessageBox *pMessageBox = new QMessageBox; pMessageBox->setWindowTitle(QString(Helper::applicationName).append(" - ").append(Helper::error)); pMessageBox->setIcon(QMessageBox::Critical); pMessageBox->setAttribute(Qt::WA_DeleteOnClose); pMessageBox->setText(tr("We can't contact you with a possible solution if you don't provide a valid e-mail address.")); pMessageBox->addButton(tr("Send without e-mail"), QMessageBox::AcceptRole); pMessageBox->addButton(tr("Let me enter e-mail"), QMessageBox::RejectRole); int answer = pMessageBox->exec(); switch (answer) { case QMessageBox::RejectRole: mpEmailTextBox->setFocus(); return; case QMessageBox::AcceptRole: default: break; } } // create the report. QHttpMultiPart *pHttpMultiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); // email QHttpPart emailHttpPart; emailHttpPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"email\"")); emailHttpPart.setBody(mpEmailTextBox->text().toUtf8()); pHttpMultiPart->append(emailHttpPart); // bug description QHttpPart bugDescriptionHttpPart; bugDescriptionHttpPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"bugdescription\"")); bugDescriptionHttpPart.setBody(mpBugDescriptionTextBox->toPlainText().toUtf8()); pHttpMultiPart->append(bugDescriptionHttpPart); // OMEditCommunicationLogFile if (mpOMEditCommunicationLogFileCheckBox->isChecked()) { QHttpPart OMEditCommunicationLogFileHttpPart; OMEditCommunicationLogFileHttpPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain")); OMEditCommunicationLogFileHttpPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"omeditcommunication.log\"; filename=\"omeditcommunication.log\"")); QFile *pOMEditCommunicationLogFileFile = new QFile(mpOMEditCommunicationLogFileCheckBox->text()); pOMEditCommunicationLogFileFile->open(QIODevice::ReadOnly); OMEditCommunicationLogFileHttpPart.setBodyDevice(pOMEditCommunicationLogFileFile); pOMEditCommunicationLogFileFile->setParent(pHttpMultiPart); // file will be deleted when we delete pHttpMultiPart pHttpMultiPart->append(OMEditCommunicationLogFileHttpPart); } // OMEditCommandsMosFile if (mpOMEditCommandsMosFileCheckBox->isChecked()) { QHttpPart OMEditCommandsMosFileHttpPart; OMEditCommandsMosFileHttpPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain")); OMEditCommandsMosFileHttpPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"omeditcommands.mos\"; filename=\"omeditcommands.mos\"")); QFile *pOMEditCommandsMosFile = new QFile(mpOMEditCommandsMosFileCheckBox->text()); pOMEditCommandsMosFile->open(QIODevice::ReadOnly); OMEditCommandsMosFileHttpPart.setBodyDevice(pOMEditCommandsMosFile); pOMEditCommandsMosFile->setParent(pHttpMultiPart); // file will be deleted when we delete pHttpMultiPart pHttpMultiPart->append(OMEditCommandsMosFileHttpPart); } // OMStackTraceFile if (mpOMStackTraceFileCheckBox->isChecked()) { QHttpPart OMStackTraceFileCheckBoxHttpPart; OMStackTraceFileCheckBoxHttpPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain")); OMStackTraceFileCheckBoxHttpPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"openmodelica.stacktrace.OMEdit\"; filename=\"openmodelica.stacktrace.OMEdit\"")); QFile *pOMStackTraceFile = new QFile(mpOMStackTraceFileCheckBox->text()); pOMStackTraceFile->open(QIODevice::ReadOnly); OMStackTraceFileCheckBoxHttpPart.setBodyDevice(pOMStackTraceFile); pOMStackTraceFile->setParent(pHttpMultiPart); // file will be deleted when we delete pHttpMultiPart pHttpMultiPart->append(OMStackTraceFileCheckBoxHttpPart); } // create the request QUrl url("https://dev.openmodelica.org/omeditcrashreports/cgi-bin/server.py"); QNetworkRequest networkRequest(url); QNetworkAccessManager *pNetworkAccessManager = new QNetworkAccessManager; QNetworkReply *pNetworkReply = pNetworkAccessManager->post(networkRequest, pHttpMultiPart); pNetworkReply->ignoreSslErrors(); pHttpMultiPart->setParent(pNetworkReply); // delete the pHttpMultiPart with the pNetworkReply connect(pNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), SLOT(reportSent(QNetworkReply*))); }
bool uploadImage::uploadFile(std::string filepath,std::string label, int Authencity){ QEventLoop eventLoop; QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart textPart; QHttpPart textPart2, textPart3,textPart4,textPart5; textPart2.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"attendantID\"")); QString Label=QString::fromStdString(label); textPart2.setBody(Label.toLatin1()); textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"submit\"")); textPart.setBody("Upload image"); textPart3.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"Authencity\"")); textPart3.setBody(QByteArray::number(Authencity)); textPart4.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"systemCode\"")); textPart4.setBody(networkManagement::systemCode.toUtf8()); // time_t now = time(0); tm *ltm = localtime(&now); // print various components of tm structure. QString dateTime; dateTime=QString::number(1900 + ltm->tm_year) + "-" +QString::number(1 + ltm->tm_mon)+ "-"+QString::number(ltm->tm_mday)+" "+ QString::number(ltm->tm_hour)+":"+QString::number(ltm->tm_min) +":"+QString::number(ltm->tm_sec); textPart5.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"currentTime\"")); //QString just="12-03-2015 00:01:29"; textPart5.setBody(dateTime.toUtf8()); QHttpPart imagePart; imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/png")); imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"fileToUpload\" ; filename=\"" +QString::fromStdString(filepath)+"\"")); QFile *file = new QFile(QString::fromStdString(filepath)); file->open(QIODevice::ReadOnly); imagePart.setBodyDevice(file); file->setParent(multiPart); // we cannot delete the file now, so delete it with the multiPart multiPart->append(textPart); multiPart->append(textPart2); multiPart->append(textPart3); multiPart->append(imagePart); multiPart->append(textPart4); multiPart->append(textPart5); // "quit()" the event-loop, when the network request "finished()" QNetworkAccessManager mgr; QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); QNetworkRequest req( QUrl( QString(MainWindow::serverAddress+"/uploader.php") ) ); QNetworkReply *reply = mgr.post(req,multiPart); multiPart->setParent(reply); eventLoop.exec(); // blocks stack until "finished()" has been called if (reply->error() == QNetworkReply::NoError) { //success QString strx=reply->readAll(); qDebug()<<strx; // qDebug()<<propertyKeys; delete reply; return true; } else { //failure qDebug() << "Failure" <<reply->errorString(); delete reply; return false; } }
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 RemoteDatabase::push(const QString& filename, const QString& url, const QString& clientCert, const QString& remotename, const QString& commitMessage, const QString& licence, bool isPublic, const QString& branch, bool forcePush) { // Check if network is accessible. If not, abort right here if(m_manager->networkAccessible() == QNetworkAccessManager::NotAccessible) { QMessageBox::warning(nullptr, qApp->applicationName(), tr("Error: The network is not accessible.")); return; } // Open the file to send and check if it exists QFile* file = new QFile(filename); if(!file->open(QFile::ReadOnly)) { delete file; QMessageBox::warning(nullptr, qApp->applicationName(), tr("Error: Cannot open the file for sending.")); return; } // Build network request QNetworkRequest request; request.setUrl(url); request.setRawHeader("User-Agent", QString("%1 %2").arg(qApp->organizationName()).arg(APP_VERSION).toUtf8()); // Get the last modified date of the file and prepare it for conversion into the ISO date format QDateTime last_modified = QFileInfo(filename).lastModified(); last_modified.toOffsetFromUtc(0); // Prepare HTTP multi part data containing all the information about the commit we're about to push QHttpMultiPart* multipart = new QHttpMultiPart(QHttpMultiPart::FormDataType); addPart(multipart, "file", file, remotename); addPart(multipart, "commitmsg", commitMessage); addPart(multipart, "licence", licence); addPart(multipart, "public", isPublic ? "true" : "false"); addPart(multipart, "branch", branch); addPart(multipart, "commit", QString::fromStdString(localLastCommitId(clientCert, url))); addPart(multipart, "force", forcePush ? "true" : "false"); addPart(multipart, "lastmodified", last_modified.toString("yyyy-MM-dd'T'HH:mm:ss'Z'")); // Set SSL configuration when trying to access a file via the HTTPS protocol bool https = QUrl(url).scheme().compare("https", Qt::CaseInsensitive) == 0; if(https) { // If configuring the SSL connection fails, abort the request here if(!prepareSsl(&request, clientCert)) { delete file; return; } } // Clear access cache if necessary clearAccessCache(clientCert); // Put database to remote server and save pending reply for future processing QNetworkReply* reply = m_manager->post(request, multipart); reply->setProperty("type", RequestTypePush); reply->setProperty("certfile", clientCert); reply->setProperty("source_file", filename); multipart->setParent(reply); // Delete the multi-part object along with the reply // Initialise the progress dialog for this request prepareProgressDialog(reply, true, url); }
QNetworkReply* MNetworkManager::sendJWT(const QString url, QJsonObject ¶ms, QString method ) { QJsonObject header; header["typ"] = "JWT"; header["alg"] = "sha256"; QByteArray encode; encode.append(QJsonDocument(header).toJson().toBase64(QByteArray::Base64Encoding)); encode.append("."); encode.append(QJsonDocument(params).toJson().toBase64(QByteArray::Base64Encoding)); QByteArray signature = QMessageAuthenticationCode::hash(encode, QByteArray(SECRET), QCryptographicHash::Sha256).toHex(); QByteArray jwt; jwt.append(encode); jwt.append("."); jwt.append(signature); QString apiUrl = APIHOST; apiUrl.append(url); QNetworkRequest request; request.setUrl(QUrl(apiUrl)); request.setRawHeader("JWT", jwt); QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QNetworkReply* reply; if (method == "post") { reply = this->post(request,multiPart); } else { reply = this->get(request); } multiPart->setParent(reply); return reply; }