From c94fc7d4877e51465a302d608e7081ee6733525f Mon Sep 17 00:00:00 2001 From: Sergey Konovalov Date: Wed, 18 May 2022 13:50:03 +0300 Subject: [PATCH] [feature] Reformat info.json response --- DocService/sources/DocsCoServer.js | 83 ++++++++++++++++---------- DocService/sources/editorDataMemory.js | 8 +-- 2 files changed, 56 insertions(+), 35 deletions(-) diff --git a/DocService/sources/DocsCoServer.js b/DocService/sources/DocsCoServer.js index e8f84c8a..1122e2a5 100644 --- a/DocService/sources/DocsCoServer.js +++ b/DocService/sources/DocsCoServer.js @@ -3472,20 +3472,26 @@ exports.licenseInfo = function(req, res) { return co(function*() { let isError = false; let output = { - connectionsStat: {}, licenseInfo: {}, serverInfo: { - buildVersion: commonDefines.buildVersion, buildNumber: commonDefines.buildNumber, - }, quota: { - editorConnectionsCount: 0, - uniqueUserCount: 0, - anonymousUserCount: 0, + connectionsStat: {}, licenseInfo: {}, serverInfo: { + buildVersion: commonDefines.buildVersion, buildNumber: commonDefines.buildNumber, + }, quota: { + edit: { + connectionsCount: 0, + usersCount: { + unique: 0, + anonymous: 0, + } + }, + view: { + connectionsCount: 0, + usersCount: { + unique: 0, + anonymous: 0, + } + }, byMonth: null - }, quotaView: { - connectionsCount: 0, - uniqueUserCount: 0, - anonymousUserCount: 0, - byMonth: null - } - }; + } + }; Object.assign(output.licenseInfo, licenseInfo); try { logger.debug('licenseInfo start'); @@ -3557,31 +3563,46 @@ exports.licenseInfo = function(req, res) { } } const nowUTC = getLicenseNowUtc(); - let execRes = yield editorData.getPresenceUniqueUser(nowUTC); - output.quota.uniqueUserCount = execRes.length; + let execRes; + execRes = yield editorData.getPresenceUniqueUser(nowUTC); + output.quota.edit.connectionsCount = yield editorData.getEditorConnectionsCount(connections); + output.quota.edit.usersCount.unique = execRes.length; execRes.forEach(function(elem) { if (elem.anonym) { - output.quota.anonymousUserCount++; + output.quota.edit.usersCount.anonymous++; } }); - output.quota.byMonth = yield editorData.getPresenceUniqueUsersOfMonth(); + + execRes = yield editorData.getPresenceUniqueViewUser(nowUTC); + output.quota.view.connectionsCount = yield editorData.getLiveViewerConnectionsCount(connections); + output.quota.view.usersCount.unique = execRes.length; + execRes.forEach(function(elem) { + if (elem.anonym) { + output.quota.view.usersCount.anonymous++; + } + }); + + let byMonth = yield editorData.getPresenceUniqueUsersOfMonth(); + let byMonthView = yield editorData.getPresenceUniqueViewUsersOfMonth(); + let byMonthMerged = yield editorData.getPresenceUniqueViewUsersOfMonth(); + for (let i in byMonth) { + if (byMonth.hasOwnProperty(i)) { + byMonthMerged[i] = {date: i, users: byMonth[i], usersView: {}}; + } + } + for (let i in byMonthView) { + if (byMonthView.hasOwnProperty(i)) { + if (byMonthMerged.hasOwnProperty(i)) { + byMonthMerged[i].usersView = byMonthView[i]; + } else { + byMonthMerged[i] = {date: i, users: {}, usersView: byMonthView[i]}; + } + } + } + output.quota.byMonth = Object.values(byMonthMerged); output.quota.byMonth.sort((a, b) => { return a.date.localeCompare(b.date); }); - output.quota.editorConnectionsCount = yield editorData.getEditorConnectionsCount(connections); - - execRes = yield editorData.getPresenceUniqueViewUser(nowUTC); - output.quotaView.uniqueUserCount = execRes.length; - execRes.forEach(function(elem) { - if (elem.anonym) { - output.quotaView.anonymousUserCount++; - } - }); - output.quotaView.byMonth = yield editorData.getPresenceUniqueViewUsersOfMonth(); - output.quotaView.byMonth.sort((a, b) => { - return a.date.localeCompare(b.date); - }); - output.quotaView.connectionsCount = yield editorData.getLiveViewerConnectionsCount(connections); logger.debug('licenseInfo end'); } catch (err) { diff --git a/DocService/sources/editorDataMemory.js b/DocService/sources/editorDataMemory.js index 610358b1..9ef9cab6 100644 --- a/DocService/sources/editorDataMemory.js +++ b/DocService/sources/editorDataMemory.js @@ -258,7 +258,7 @@ EditorData.prototype.addPresenceUniqueUsersOfMonth = function(userId, period, us return Promise.resolve(); }; EditorData.prototype.getPresenceUniqueUsersOfMonth = function() { - let res = []; + let res = {}; let nowUTC = Date.now(); for (let periodId in this.uniqueUsersOfMonth) { if (this.uniqueUsersOfMonth.hasOwnProperty(periodId)) { @@ -266,7 +266,7 @@ EditorData.prototype.getPresenceUniqueUsersOfMonth = function() { delete this.uniqueUsersOfMonth[periodId]; } else { let date = new Date(parseInt(periodId)).toISOString(); - res.push({date: date, users: this.uniqueUsersOfMonth[periodId].data}); + res[date] = this.uniqueUsersOfMonth[periodId].data; } } } @@ -302,7 +302,7 @@ EditorData.prototype.addPresenceUniqueViewUsersOfMonth = function(userId, period return Promise.resolve(); }; EditorData.prototype.getPresenceUniqueViewUsersOfMonth = function() { - let res = []; + let res = {}; let nowUTC = Date.now(); for (let periodId in this.uniqueViewUsersOfMonth) { if (this.uniqueViewUsersOfMonth.hasOwnProperty(periodId)) { @@ -310,7 +310,7 @@ EditorData.prototype.getPresenceUniqueViewUsersOfMonth = function() { delete this.uniqueViewUsersOfMonth[periodId]; } else { let date = new Date(parseInt(periodId)).toISOString(); - res.push({date: date, users: this.uniqueViewUsersOfMonth[periodId].data}); + res[date] = this.uniqueViewUsersOfMonth[periodId].data; } } }