UNPKG

cnpmjs.org

Version:

Private npm registry and web for Enterprise, base on MySQL and Simple Store Service

60 lines (50 loc) 1.39 kB
/**! * cnpmjs.org - controllers/registry/package/list_since.js * * Copyright(c) fengmk2 and other contributors. * MIT Licensed * * Authors: * fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com) */ 'use strict'; /** * Module dependencies. */ var packageService = require('../../../services/package'); var A_WEEK_MS = 3600000 * 24 * 7; // GET /-/all/since?stale=update_after&startkey={key} // List packages names since startkey // https://github.com/npm/npm-registry-client/blob/master/lib/get.js#L89 module.exports = function* () { var query = this.query; if (query.stale !== 'update_after') { this.status = 400; this.body = { error: 'query_parse_error', reason: 'Invalid value for `stale`.' }; return; } var startkey = Number(query.startkey); if (!startkey) { this.status = 400; this.body = { error: 'query_parse_error', reason: 'Invalid value for `startkey`.' }; return; } var updated = Date.now(); if (updated - startkey > A_WEEK_MS) { startkey = updated - A_WEEK_MS; console.warn('[%s] list modules since time out of range: query: %j, ip: %s', Date(), query, this.ip); } var names = yield* packageService.listPublicModuleNamesSince(startkey); var result = { _updated: updated }; names.forEach(function (name) { result[name] = true; }); this.body = result; };