From 839c7fb8c2f6cd06d4dc3d74f379d398ab812f20 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 5 May 2016 15:45:11 -0700 Subject: [PATCH] provide session ID for metaverse heartbeat once received --- interface/src/DiscoverabilityManager.cpp | 28 ++++++++++++++++++- interface/src/DiscoverabilityManager.h | 6 +++- .../networking/src/NetworkingConstants.h | 4 +-- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/interface/src/DiscoverabilityManager.cpp b/interface/src/DiscoverabilityManager.cpp index bc1403aa46..4338addb55 100644 --- a/interface/src/DiscoverabilityManager.cpp +++ b/interface/src/DiscoverabilityManager.cpp @@ -31,6 +31,8 @@ DiscoverabilityManager::DiscoverabilityManager() : const QString API_USER_LOCATION_PATH = "/api/v1/user/location"; +const QString SESSION_ID_KEY = "session_id"; + void DiscoverabilityManager::updateLocation() { AccountManager& accountManager = AccountManager::getInstance(); @@ -86,7 +88,31 @@ void DiscoverabilityManager::updateLocation() { } else if (UserActivityLogger::getInstance().isEnabled()) { // we still send a heartbeat to the metaverse server for stats collection const QString API_USER_HEARTBEAT_PATH = "/api/v1/user/heartbeat"; - accountManager.sendRequest(API_USER_HEARTBEAT_PATH, AccountManagerAuth::Required, QNetworkAccessManager::PutOperation); + + JSONCallbackParameters callbackParameters; + callbackParameters.jsonCallbackReceiver = this; + callbackParameters.jsonCallbackMethod = "handleHeartbeatResponse"; + + QJsonObject heartbeatObject; + if (!_sessionID.isEmpty()) { + heartbeatObject[SESSION_ID_KEY] = _sessionID; + } else { + heartbeatObject[SESSION_ID_KEY] = QJsonValue(); + } + + accountManager.sendRequest(API_USER_HEARTBEAT_PATH, AccountManagerAuth::Optional, + QNetworkAccessManager::PutOperation, callbackParameters, + QJsonDocument(heartbeatObject).toJson()); + } +} + +void DiscoverabilityManager::handleHeartbeatResponse(QNetworkReply& requestReply) { + QJsonObject jsonObject = QJsonDocument::fromJson(requestReply.readAll()).object(); + + static const QString STATUS_KEY = "status"; + + if (jsonObject.contains(STATUS_KEY) && jsonObject[STATUS_KEY] == "success") { + _sessionID = jsonObject[SESSION_ID_KEY].toString(); } } diff --git a/interface/src/DiscoverabilityManager.h b/interface/src/DiscoverabilityManager.h index 1b5adcdb5d..94d74b81b9 100644 --- a/interface/src/DiscoverabilityManager.h +++ b/interface/src/DiscoverabilityManager.h @@ -42,10 +42,14 @@ public slots: signals: void discoverabilityModeChanged(Discoverability::Mode discoverabilityMode); +private slots: + void handleHeartbeatResponse(QNetworkReply& requestReply); + private: DiscoverabilityManager(); Setting::Handle _mode; + QString _sessionID; }; -#endif // hifi_DiscoverabilityManager_h \ No newline at end of file +#endif // hifi_DiscoverabilityManager_h diff --git a/libraries/networking/src/NetworkingConstants.h b/libraries/networking/src/NetworkingConstants.h index a1940611bc..d1e0a46c71 100644 --- a/libraries/networking/src/NetworkingConstants.h +++ b/libraries/networking/src/NetworkingConstants.h @@ -15,7 +15,7 @@ #include namespace NetworkingConstants { - const QUrl METAVERSE_SERVER_URL = QUrl("https://metaverse.highfidelity.com"); + const QUrl METAVERSE_SERVER_URL = QUrl("http://localhost:3000"); } -#endif // hifi_NetworkingConstants_h \ No newline at end of file +#endif // hifi_NetworkingConstants_h