From 52cc03c5a2111fd2525ea784dfdd4faefae63323 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Tue, 1 Nov 2016 14:44:39 -0700 Subject: [PATCH 1/2] Get snapshot location data from file, which now uses shareable place info. --- interface/src/ui/Snapshot.cpp | 9 ++++++--- interface/src/ui/SnapshotUploader.cpp | 22 +++++++++++++--------- interface/src/ui/SnapshotUploader.h | 8 +++++++- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/interface/src/ui/Snapshot.cpp b/interface/src/ui/Snapshot.cpp index 3334b0301b..1bf5f5de4e 100644 --- a/interface/src/ui/Snapshot.cpp +++ b/interface/src/ui/Snapshot.cpp @@ -89,7 +89,7 @@ QTemporaryFile* Snapshot::saveTempSnapshot(QImage image) { QFile* Snapshot::savedFileForSnapshot(QImage & shot, bool isTemporary) { // adding URL to snapshot - QUrl currentURL = DependencyManager::get()->currentAddress(); + QUrl currentURL = DependencyManager::get()->currentShareableAddress(); shot.setText(URL, currentURL.toString()); QString username = DependencyManager::get()->getAccountInfo().getUsername(); @@ -146,7 +146,10 @@ QFile* Snapshot::savedFileForSnapshot(QImage & shot, bool isTemporary) { void Snapshot::uploadSnapshot(const QString& filename) { const QString SNAPSHOT_UPLOAD_URL = "/api/v1/snapshots"; - static SnapshotUploader uploader; + // Alternatively to parseSnapshotData, we could pass the inWorldLocation through the call chain. This way is less disruptive to existing code. + SnapshotMetaData* snapshotData = Snapshot::parseSnapshotData(filename); + SnapshotUploader* uploader = new SnapshotUploader(snapshotData->getURL(), filename); + delete snapshotData; QFile* file = new QFile(filename); Q_ASSERT(file->exists()); @@ -163,7 +166,7 @@ void Snapshot::uploadSnapshot(const QString& filename) { multiPart->append(imagePart); auto accountManager = DependencyManager::get(); - JSONCallbackParameters callbackParams(&uploader, "uploadSuccess", &uploader, "uploadFailure"); + JSONCallbackParameters callbackParams(uploader, "uploadSuccess", uploader, "uploadFailure"); accountManager->sendRequest(SNAPSHOT_UPLOAD_URL, AccountManagerAuth::Required, diff --git a/interface/src/ui/SnapshotUploader.cpp b/interface/src/ui/SnapshotUploader.cpp index 5bc9bb386c..b531f82348 100644 --- a/interface/src/ui/SnapshotUploader.cpp +++ b/interface/src/ui/SnapshotUploader.cpp @@ -15,9 +15,13 @@ #include "scripting/WindowScriptingInterface.h" #include "SnapshotUploader.h" +SnapshotUploader::SnapshotUploader(QUrl inWorldLocation, QString pathname) : + _inWorldLocation(inWorldLocation), + _pathname(pathname) { +} + void SnapshotUploader::uploadSuccess(QNetworkReply& reply) { const QString STORY_UPLOAD_URL = "/api/v1/user_stories"; - static SnapshotUploader uploader; // parse the reply for the thumbnail_url QByteArray contents = reply.readAll(); @@ -28,11 +32,8 @@ void SnapshotUploader::uploadSuccess(QNetworkReply& reply) { QString thumbnailUrl = dataObject.value("thumbnail_url").toString(); QString imageUrl = dataObject.value("image_url").toString(); auto addressManager = DependencyManager::get(); - QString placeName = addressManager->getPlaceName(); - if (placeName.isEmpty()) { - placeName = addressManager->getHost(); - } - QString currentPath = addressManager->currentPath(true); + QString placeName = _inWorldLocation.authority(); // We currently only upload shareable places, in which case this is just host. + QString currentPath = _inWorldLocation.path(); // create json post data QJsonObject rootObject; @@ -48,7 +49,7 @@ void SnapshotUploader::uploadSuccess(QNetworkReply& reply) { rootObject.insert("user_story", userStoryObject); auto accountManager = DependencyManager::get(); - JSONCallbackParameters callbackParams(&uploader, "createStorySuccess", &uploader, "createStoryFailure"); + JSONCallbackParameters callbackParams(this, "createStorySuccess", this, "createStoryFailure"); accountManager->sendRequest(STORY_UPLOAD_URL, AccountManagerAuth::Required, @@ -63,13 +64,16 @@ void SnapshotUploader::uploadSuccess(QNetworkReply& reply) { } void SnapshotUploader::uploadFailure(QNetworkReply& reply) { - emit DependencyManager::get()->snapshotShared(reply.readAll()); + emit DependencyManager::get()->snapshotShared(reply.readAll()); // maybe someday include _inWorldLocation, _filename? + delete this; } void SnapshotUploader::createStorySuccess(QNetworkReply& reply) { emit DependencyManager::get()->snapshotShared(QString()); + delete this; } void SnapshotUploader::createStoryFailure(QNetworkReply& reply) { - emit DependencyManager::get()->snapshotShared(reply.readAll()); + emit DependencyManager::get()->snapshotShared(reply.readAll()); + delete this; } \ No newline at end of file diff --git a/interface/src/ui/SnapshotUploader.h b/interface/src/ui/SnapshotUploader.h index d4a5f86431..ae6d5d55ca 100644 --- a/interface/src/ui/SnapshotUploader.h +++ b/interface/src/ui/SnapshotUploader.h @@ -14,13 +14,19 @@ #include #include +#include class SnapshotUploader : public QObject { Q_OBJECT - public slots: +public: + SnapshotUploader(QUrl inWorldLocation, QString pathname); +public slots: void uploadSuccess(QNetworkReply& reply); void uploadFailure(QNetworkReply& reply); void createStorySuccess(QNetworkReply& reply); void createStoryFailure(QNetworkReply& reply); +private: + QUrl _inWorldLocation; + QString _pathname; }; #endif // hifi_SnapshotUploader_h \ No newline at end of file From b6e440f8919b93bd63e6d5b13ed89cbf0d928d2c Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Thu, 3 Nov 2016 13:26:50 -0700 Subject: [PATCH 2/2] delete this and formatting --- interface/src/ui/SnapshotUploader.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/ui/SnapshotUploader.cpp b/interface/src/ui/SnapshotUploader.cpp index b531f82348..c36efddc14 100644 --- a/interface/src/ui/SnapshotUploader.cpp +++ b/interface/src/ui/SnapshotUploader.cpp @@ -57,9 +57,9 @@ void SnapshotUploader::uploadSuccess(QNetworkReply& reply) { callbackParams, QJsonDocument(rootObject).toJson()); - } - else { + } else { emit DependencyManager::get()->snapshotShared(contents); + delete this; } }