Add support for Libraries.io badges

This commit is contained in:
Mauro Pompilio 2015-11-22 17:21:45 +00:00
parent 9a098a5e83
commit a43757f041

View File

@ -4347,6 +4347,67 @@ cache(function(data, match, sendBadge, request) {
sendBadge(format, badgeData);
}));
// Libraries.io integration.
camp.route(/^\/librariesio\/(github|release)\/([\w\-\_]+\/[\w\-\_]+)\/?([\w\-\_\.]+)?\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var resource = match[1];
var project = match[2];
var version = match[3];
var format = match[4];
var uri;
switch (resource) {
case 'github':
uri = 'https://libraries.io/api/github/' + project + '/dependencies'
break;
case 'release':
var v = version || 'latest';
uri = 'https://libraries.io/api/' + project + '/' + v + '/dependencies'
break;
}
var options = {method: 'GET', json: true, uri: uri};
var badgeData = getBadgeData('dependencies', data);
request(options, function(err, res, json) {
if (err || res.statusCode !== 200) {
badgeData.text[1] = 'not available';
return sendBadge(format, badgeData);
}
var deprecated = json.dependencies.filter(function(dep) {
return dep.deprecated;
});
var outofdate = json.dependencies.filter(function(dep) {
return dep.outdated;
});
// Deprecated dependencies are really bad
if (deprecated.length) {
badgeData.colorscheme = 'red';
badgeData.text[1] = deprecated.length + ' deprecated';
return sendBadge(format, badgeData);
}
// Out of date dependencies are pretty bad
if (outofdate.length) {
badgeData.colorscheme = 'orange';
badgeData.text[1] = outofdate.length + ' out of date';
return sendBadge(format, badgeData);
}
// Up to date dependencies are good!
badgeData.colorscheme = 'brightgreen';
badgeData.text[1] = 'up to date';
return sendBadge(format, badgeData);
});
}));
// Any badge.
camp.route(/^\/(:|badge\/)(([^-]|--)*?)-(([^-]|--)*)-(([^-]|--)+)\.(svg|png|gif|jpg)$/,
function(data, match, end, ask) {