From a5d09e268d5b0c3132128fae4cc6955c7e451062 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 5 May 2016 15:56:16 -0700 Subject: [PATCH] fix sessionID pull and re-sent for HB --- interface/src/DiscoverabilityManager.cpp | 8 +++----- libraries/networking/src/AccountManager.cpp | 13 +++++++++++++ libraries/networking/src/AccountManager.h | 2 ++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/interface/src/DiscoverabilityManager.cpp b/interface/src/DiscoverabilityManager.cpp index 4338addb55..db84da55de 100644 --- a/interface/src/DiscoverabilityManager.cpp +++ b/interface/src/DiscoverabilityManager.cpp @@ -107,12 +107,10 @@ void DiscoverabilityManager::updateLocation() { } void DiscoverabilityManager::handleHeartbeatResponse(QNetworkReply& requestReply) { - QJsonObject jsonObject = QJsonDocument::fromJson(requestReply.readAll()).object(); + auto dataObject = AccountManager::dataObjectFromResponse(requestReply); - static const QString STATUS_KEY = "status"; - - if (jsonObject.contains(STATUS_KEY) && jsonObject[STATUS_KEY] == "success") { - _sessionID = jsonObject[SESSION_ID_KEY].toString(); + if (!dataObject.isEmpty()) { + _sessionID = dataObject[SESSION_ID_KEY].toString(); } } diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index e97b077f24..407d7fc605 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -66,6 +66,19 @@ JSONCallbackParameters::JSONCallbackParameters(QObject* jsonCallbackReceiver, co } +QJsonObject AccountManager::dataObjectFromResponse(QNetworkReply &requestReply) { + QJsonObject jsonObject = QJsonDocument::fromJson(requestReply.readAll()).object(); + + static const QString STATUS_KEY = "status"; + static const QString DATA_KEY = "data"; + + if (jsonObject.contains(STATUS_KEY) && jsonObject[STATUS_KEY] == "success" && jsonObject.contains(DATA_KEY)) { + return jsonObject[DATA_KEY].toObject(); + } else { + return QJsonObject(); + } +} + AccountManager::AccountManager() : _authURL(), _pendingCallbackMap() diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index 0ebefafbed..c374a62515 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -77,6 +77,8 @@ public: DataServerAccountInfo& getAccountInfo() { return _accountInfo; } + static QJsonObject dataObjectFromResponse(QNetworkReply& requestReply); + public slots: void requestAccessToken(const QString& login, const QString& password);