-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathhomepage.js
48 lines (41 loc) · 1.3 KB
/
homepage.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
var P = require('bluebird');
var feature = require('../lib/feature-flags.js');
var PackageAgent = require('../agents/package');
var DownloadAgent = require('../agents/download');
var ExplicitInstalls = require("npm-explicit-installs")
var MINUTE = 60; // seconds
var MODIFIED_TTL = 1 * MINUTE;
var DEPENDENTS_TTL = 30 * MINUTE;
module.exports = function(request, reply) {
var Package = new PackageAgent(request.loggedInUser);
var Download = new DownloadAgent();
var context = {};
var actions = {};
actions.modified = Package.list({
sort: "modified",
count: 12
}, MODIFIED_TTL);
actions.dependents = Package.list({
sort: "dependents",
count: 12
}, DEPENDENTS_TTL);
actions.explicit = ExplicitInstalls();
if (!feature('npmo')) {
actions.downloads = Download.getAll();
actions.totalPackages = Package.count().catch(function(err) {
request.logger.error(err);
return null;
});
}
P.props(actions).then(function(results) {
context.explicit = results.explicit
context.modified = results.modified;
context.dependents = results.dependents;
context.downloads = results.downloads;
context.totalPackages = results.totalPackages;
reply.view('homepage', context);
}).catch(function(err) {
request.logger.error(err);
return reply(err);
});
};