From a040c997d801fb360bbcf0b15f39827a198388f7 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Thu, 17 Apr 2014 16:30:23 -0700 Subject: [PATCH 1/2] ModelUploader update --- interface/src/ModelUploader.cpp | 68 ++++++++++++++++++++++++++++++--- interface/src/ModelUploader.h | 1 + 2 files changed, 63 insertions(+), 6 deletions(-) diff --git a/interface/src/ModelUploader.cpp b/interface/src/ModelUploader.cpp index edbc6c0ad9..5f219e03c8 100644 --- a/interface/src/ModelUploader.cpp +++ b/interface/src/ModelUploader.cpp @@ -34,6 +34,7 @@ static const QString TEXDIR_FIELD = "texdir"; static const QString LOD_FIELD = "lod"; static const QString S3_URL = "http://highfidelity-public.s3-us-west-1.amazonaws.com"; +static const QString DATA_SERVER_URL = "https://data-web.highfidelity.io"; static const QString MODEL_URL = "/api/v1/models"; static const QString SETTING_NAME = "LastModelUploadLocation"; @@ -201,14 +202,14 @@ void ModelUploader::send() { JSONCallbackParameters callbackParams; callbackParams.jsonCallbackReceiver = this; - callbackParams.jsonCallbackMethod = "uploadSuccess"; + callbackParams.jsonCallbackMethod = "checkJSON"; callbackParams.errorCallbackReceiver = this; callbackParams.errorCallbackMethod = "uploadFailed"; - callbackParams.updateReciever = this; - callbackParams.updateSlot = SLOT(uploadUpdate(qint64, qint64)); - AccountManager::getInstance().authenticatedRequest(MODEL_URL, QNetworkAccessManager::PostOperation, callbackParams, QByteArray(), _dataMultiPart); - _dataMultiPart = NULL; + AccountManager::getInstance().authenticatedRequest(MODEL_URL + "/" + QFileInfo(_url).baseName(), + QNetworkAccessManager::GetOperation, + callbackParams); + qDebug() << "Sending model..."; _progressDialog = new QDialog(); _progressBar = new QProgressBar(_progressDialog); @@ -226,6 +227,61 @@ void ModelUploader::send() { _progressBar = NULL; } +void ModelUploader::checkJSON(const QJsonObject& jsonResponse) { + if (jsonResponse.contains("status") && jsonResponse.value("status").toString() == "success") { + qDebug() << "status : success"; + JSONCallbackParameters callbackParams; + callbackParams.jsonCallbackReceiver = this; + callbackParams.jsonCallbackMethod = "uploadSuccess"; + callbackParams.errorCallbackReceiver = this; + callbackParams.errorCallbackMethod = "uploadFailed"; + callbackParams.updateReciever = this; + callbackParams.updateSlot = SLOT(uploadUpdate(qint64, qint64)); + + if (jsonResponse.contains("exists") && jsonResponse.value("exists").toString() == "true") { + qDebug() << "exists : true"; + if (jsonResponse.contains("can_update") && jsonResponse.value("can_update").toString() == "true") { + qDebug() << "can_update : true"; + + AccountManager::getInstance().authenticatedRequest(MODEL_URL + "/" + QFileInfo(_url).baseName(), + QNetworkAccessManager::PutOperation, + callbackParams, + QByteArray(), + _dataMultiPart); + _dataMultiPart = NULL; + } else { + qDebug() << "can_update : false"; + if (_progressDialog) { + _progressDialog->reject(); + } + QMessageBox::warning(NULL, + QString("ModelUploader::checkJSON()"), + QString("This model already exist and is own by someone else."), + QMessageBox::Ok); + deleteLater(); + } + } else { + qDebug() << "exists : false"; + AccountManager::getInstance().authenticatedRequest(MODEL_URL, + QNetworkAccessManager::PostOperation, + callbackParams, + QByteArray(), + _dataMultiPart); + _dataMultiPart = NULL; + } + } else { + qDebug() << "status : failed"; + if (_progressDialog) { + _progressDialog->reject(); + } + QMessageBox::warning(NULL, + QString("ModelUploader::checkJSON()"), + QString("Something went wrong with the data-server."), + QMessageBox::Ok); + deleteLater(); + } +} + void ModelUploader::uploadUpdate(qint64 bytesSent, qint64 bytesTotal) { if (_progressDialog) { _progressBar->setRange(0, bytesTotal); @@ -249,11 +305,11 @@ void ModelUploader::uploadFailed(QNetworkReply::NetworkError errorCode, const QS if (_progressDialog) { _progressDialog->reject(); } + qDebug() << "Model upload failed (" << errorCode << "): " << errorString; QMessageBox::warning(NULL, QString("ModelUploader::uploadFailed()"), QString("There was a problem with your upload, please try again later."), QMessageBox::Ok); - qDebug() << "Model upload failed (" << errorCode << "): " << errorString; deleteLater(); } diff --git a/interface/src/ModelUploader.h b/interface/src/ModelUploader.h index ff22673cdd..54702d6420 100644 --- a/interface/src/ModelUploader.h +++ b/interface/src/ModelUploader.h @@ -30,6 +30,7 @@ public slots: void send(); private slots: + void checkJSON(const QJsonObject& jsonResponse); void uploadUpdate(qint64 bytesSent, qint64 bytesTotal); void uploadSuccess(const QJsonObject& jsonResponse); void uploadFailed(QNetworkReply::NetworkError errorCode, const QString& errorString); From c664b4a087c7d0489890d0d2eedc24e472ec4be0 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 18 Apr 2014 17:04:38 -0700 Subject: [PATCH 2/2] Fixed JSON parsing --- interface/src/ModelUploader.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/ModelUploader.cpp b/interface/src/ModelUploader.cpp index c6376430db..048e13bdf2 100644 --- a/interface/src/ModelUploader.cpp +++ b/interface/src/ModelUploader.cpp @@ -238,9 +238,9 @@ void ModelUploader::checkJSON(const QJsonObject& jsonResponse) { callbackParams.updateReciever = this; callbackParams.updateSlot = SLOT(uploadUpdate(qint64, qint64)); - if (jsonResponse.contains("exists") && jsonResponse.value("exists").toString() == "true") { + if (jsonResponse.contains("exists") && jsonResponse.value("exists").toBool()) { qDebug() << "exists : true"; - if (jsonResponse.contains("can_update") && jsonResponse.value("can_update").toString() == "true") { + if (jsonResponse.contains("can_update") && jsonResponse.value("can_update").toBool()) { qDebug() << "can_update : true"; AccountManager::getInstance().authenticatedRequest(MODEL_URL + "/" + QFileInfo(_url).baseName(),