From bfbe3cad507c6d818c4ce568f085d78f518fe1d7 Mon Sep 17 00:00:00 2001 From: Nico Lindemann Date: Sat, 22 Nov 2014 03:12:30 +0100 Subject: [PATCH] Add Support for Codacy #260 --- server.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/server.js b/server.js index 26585b6..f9a2870 100644 --- a/server.js +++ b/server.js @@ -1464,6 +1464,50 @@ cache(function(data, match, sendBadge, request) { }); })); +// Codacy integration +camp.route(/^\/codacy\/(.+)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var projectId = match[1]; + var format = match[2]; + var url = 'https://www.codacy.com/project/badge/' + projectId; + var badgeData = getBadgeData('code quality', data); + fetchFromSvg(request, url, function(err, res) { + console.log(res); + + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + badgeData.text[1] = res; + if (res === 'A') { + badgeData.colorscheme = 'brightgreen'; + } else if (res === 'B') { + badgeData.colorscheme = 'green'; + } else if (res === 'C') { + badgeData.colorscheme = 'yellowgreen'; + } else if (res === 'D') { + badgeData.colorscheme = 'yellow'; + } else if (res === 'E') { + badgeData.colorscheme = 'orange'; + } else if (res === 'F') { + badgeData.colorscheme = 'red'; + } else if (res === 'X') { + badgeData.text[1] = 'invalid'; + badgeData.colorscheme = 'lightgrey'; + } else { + badgeData.colorscheme = 'red'; + } + sendBadge(format, badgeData); + + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Hackage version integration. camp.route(/^\/hackage\/v\/(.*)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) {