61 lines
1.3 KiB
JavaScript
61 lines
1.3 KiB
JavaScript
/**!
|
|
* cnpmjs.org - controllers/registry/deprecate.js
|
|
*
|
|
* Copyright(c) fengmk2 and other contributors.
|
|
* MIT Licensed
|
|
*
|
|
* Authors:
|
|
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* Module dependencies.
|
|
*/
|
|
|
|
var Package = require('../../services/package');
|
|
|
|
module.exports = deprecateVersions;
|
|
|
|
/**
|
|
* @see https://github.com/cnpm/cnpmjs.org/issues/415
|
|
*/
|
|
function* deprecateVersions() {
|
|
var body = this.request.body;
|
|
var name = this.params.name || this.params[0];
|
|
|
|
var tasks = [];
|
|
for (var version in body.versions) {
|
|
tasks.push(Package.getModule(name, version));
|
|
}
|
|
var rs = yield tasks;
|
|
|
|
var updateTasks = [];
|
|
for (var i = 0; i < rs.length; i++) {
|
|
var row = rs[i];
|
|
if (!row) {
|
|
// some version not exists
|
|
this.status = 400;
|
|
this.body = {
|
|
error: 'version_error',
|
|
reason: 'Some versions: ' + JSON.stringify(Object.keys(body.versions)) + ' not found'
|
|
};
|
|
return;
|
|
}
|
|
var data = body.versions[row.package.version];
|
|
if (typeof data.deprecated === 'string') {
|
|
row.package.deprecated = data.deprecated;
|
|
updateTasks.push(Package.updateModulePackage(row.id, row.package));
|
|
}
|
|
}
|
|
yield updateTasks;
|
|
// update last modified
|
|
yield* Package.updateModuleLastModified(name);
|
|
|
|
this.status = 201;
|
|
this.body = {
|
|
ok: true
|
|
};
|
|
}
|