Add support for Libraries.io badges
This commit is contained in:
parent
9a098a5e83
commit
a43757f041
61
server.js
61
server.js
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user