From f7aee1e26021c110b0e1b8f487170f57cdd86dde Mon Sep 17 00:00:00 2001 From: Stephen Belanger Date: Tue, 15 Jul 2014 12:00:28 -0700 Subject: [PATCH] Add npm license integration --- server.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/server.js b/server.js index d1be938..624a4c2 100644 --- a/server.js +++ b/server.js @@ -561,6 +561,34 @@ cache(function(data, match, sendBadge) { }); })); +// npm license integration. +camp.route(/^\/npm\/l\/(.*)\.(svg|png|gif|jpg)$/, +cache(function(data, match, sendBadge) { + var repo = match[1]; + var format = match[2]; + var apiUrl = 'http://registry.npmjs.org/' + repo + '/latest'; + var badgeData = getBadgeData('license', data); + request(apiUrl, { headers: { 'Accept': '*/*' } }, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + } + try { + var data = JSON.parse(buffer); + var license = data.license; + if (Array.isArray(license)) { + license = license.join(', '); + } + badgeData.text[1] = license; + badgeData.colorscheme = 'red'; + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Gem version integration. camp.route(/^\/gem\/v\/(.*)\.(svg|png|gif|jpg)$/, cache(function(data, match, sendBadge) {