Merge pull request from howard-stearns/use-snapshot-data-from-file

Use snapshot data from file
This commit is contained in:
Howard Stearns 2016-11-03 13:55:20 -07:00 committed by GitHub
commit 54f7ab271e
3 changed files with 28 additions and 15 deletions

View file

@ -89,7 +89,7 @@ QTemporaryFile* Snapshot::saveTempSnapshot(QImage image) {
QFile* Snapshot::savedFileForSnapshot(QImage & shot, bool isTemporary) {
// adding URL to snapshot
QUrl currentURL = DependencyManager::get<AddressManager>()->currentAddress();
QUrl currentURL = DependencyManager::get<AddressManager>()->currentShareableAddress();
shot.setText(URL, currentURL.toString());
QString username = DependencyManager::get<AccountManager>()->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<AccountManager>();
JSONCallbackParameters callbackParams(&uploader, "uploadSuccess", &uploader, "uploadFailure");
JSONCallbackParameters callbackParams(uploader, "uploadSuccess", uploader, "uploadFailure");
accountManager->sendRequest(SNAPSHOT_UPLOAD_URL,
AccountManagerAuth::Required,

View file

@ -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<AddressManager>();
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<AccountManager>();
JSONCallbackParameters callbackParams(&uploader, "createStorySuccess", &uploader, "createStoryFailure");
JSONCallbackParameters callbackParams(this, "createStorySuccess", this, "createStoryFailure");
accountManager->sendRequest(STORY_UPLOAD_URL,
AccountManagerAuth::Required,
@ -56,20 +57,23 @@ void SnapshotUploader::uploadSuccess(QNetworkReply& reply) {
callbackParams,
QJsonDocument(rootObject).toJson());
}
else {
} else {
emit DependencyManager::get<WindowScriptingInterface>()->snapshotShared(contents);
delete this;
}
}
void SnapshotUploader::uploadFailure(QNetworkReply& reply) {
emit DependencyManager::get<WindowScriptingInterface>()->snapshotShared(reply.readAll());
emit DependencyManager::get<WindowScriptingInterface>()->snapshotShared(reply.readAll()); // maybe someday include _inWorldLocation, _filename?
delete this;
}
void SnapshotUploader::createStorySuccess(QNetworkReply& reply) {
emit DependencyManager::get<WindowScriptingInterface>()->snapshotShared(QString());
delete this;
}
void SnapshotUploader::createStoryFailure(QNetworkReply& reply) {
emit DependencyManager::get<WindowScriptingInterface>()->snapshotShared(reply.readAll());
emit DependencyManager::get<WindowScriptingInterface>()->snapshotShared(reply.readAll());
delete this;
}

View file

@ -14,13 +14,19 @@
#include <QObject>
#include <QtNetwork/QNetworkReply>
#include <QtCore/QUrl>
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