Code Climate Integration.

Part of issue #16.
This commit is contained in:
Thaddee Tyl 2014-01-20 10:39:53 +01:00
parent b888feb353
commit 7d257711f5

View File

@ -294,6 +294,52 @@ function(data, match, end, ask) {
}); });
}); });
// Code Climate integration
camp.route(/^\/codeclimate\/(.+)\.(svg|png|gif|jpg)$/,
function(data, match, end, ask) {
var userRepo = match[1]; // eg, `github/kabisaict/flow`.
var format = match[2];
var options = {
method: 'HEAD',
hostname: 'codeclimate.com',
path: '/' + userRepo + '.png'
};
var badgeData = {text:['code climate', 'n/a'], colorscheme:'lightgrey'};
var req = https.request(options, function(res) {
try {
var statusMatch = res.headers['content-disposition']
.match(/filename="code_climate-(.+)\.png"/);
} catch(e) {
badgeData.text[1] = 'not found';
badge(badgeData, makeSend(format, ask.res, end));
return;
}
if (!statusMatch) {
badgeData.text[1] = 'unknown';
badge(badgeData, makeSend(format, ask.res, end));
return;
}
var state = statusMatch[1].replace('-', '.');
var score = +state;
badgeData.text[1] = state;
if (score > 3) {
badgeData.colorscheme = 'brightgreen';
} else if (score > 2) {
badgeData.colorscheme = 'green';
} else if (score > 1) {
badgeData.colorscheme = 'yellow';
} else {
badgeData.colorscheme = 'red';
}
badge(badgeData, makeSend(format, ask.res, end));
});
req.on('error', function(e) {
badgeData.text[1] = 'inaccessible';
badge(badgeData, makeSend(format, ask.res, end));
});
req.end();
});
// Any badge. // Any badge.
camp.route(/^\/:(([^-]|--)+)-(([^-]|--)+)-(([^-]|--)+)\.(svg|png|gif|jpg)$/, camp.route(/^\/:(([^-]|--)+)-(([^-]|--)+)-(([^-]|--)+)\.(svg|png|gif|jpg)$/,
function(data, match, end, ask) { function(data, match, end, ask) {