Merge branch 'hotfix/21.56.9' into master
[gitter.git] / server / api / private / chat-heatmap.js
blob0b3d4093ae66e66e2432363035ab6a5cc5221407
1 'use strict';
3 var policyFactory = require('gitter-web-permissions/lib/policy-factory');
4 var chatHeapmapAggregator = require('gitter-web-elasticsearch/lib/chat-heatmap-aggregator');
5 var moment = require('moment');
6 var StatusError = require('statuserror');
7 var debug = require('debug')('gitter:app:chat-heapmap-route');
9 module.exports = function(req, res, next) {
10   var roomId = req.params.roomId;
12   // Expand the date range to sort out timezone issues
13   var start = req.query.start
14     ? moment(req.query.start)
15         .subtract(1, 'day')
16         .toDate()
17     : null;
18   var end = req.query.end
19     ? moment(req.query.end)
20         .add(1, 'day')
21         .toDate()
22     : null;
23   var tz = req.query.tz ? req.query.tz : 0;
25   return policyFactory
26     .createPolicyForRoomId(req.user, roomId)
27     .then(function(policy) {
28       return policy.canRead();
29     })
30     .then(function(hasReadAccess) {
31       if (!hasReadAccess) throw new StatusError(404);
33       debug('Searching troupeId=%s start=%s end=%s tz=%s', roomId, start, end, tz);
35       return chatHeapmapAggregator.getHeatmapForRoom(roomId, start, end, tz);
36     })
37     .then(function(chatActivity) {
38       res.send(chatActivity);
39     })
40     .catch(next);