diff --git a/server.js b/server.js index 88ce3bc..a4fed97 100644 --- a/server.js +++ b/server.js @@ -2987,10 +2987,11 @@ cache(function(data, match, sendBadge, request) { })); // CTAN integration. -camp.route(/^\/ctan\/v\/([^\/]+)\.(svg|png|gif|jpg|json)$/, +camp.route(/^\/ctan\/([^\/])\/([^\/]+)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { - var pkg = match[1]; // eg, tex - var format = match[2]; + var info = match[1]; // either `v` or `l` + var pkg = match[2]; // eg, tex + var format = match[3]; var url = 'http://www.ctan.org/json/pkg/'+pkg; var badgeData = getBadgeData('ctan', data); request(url, function (err, res, buffer) { @@ -3000,11 +3001,23 @@ cache(function(data, match, sendBadge, request) { } try { var data = JSON.parse(buffer); + + if (info == 'v') { var version = data.version.number; - var vdata = versionColor(version); - badgeData.text[1] = vdata.version; - badgeData.colorscheme = vdata.color; - sendBadge(format, badgeData); + var vdata = versionColor(version); + badgeData.text[1] = vdata.version; + badgeData.colorscheme = vdata.color; + sendBadge(format, badgeData); + } else if (info == 'l') { + var license = data.license; + if (license == '') { + badgeData.text[1] = 'Unknown'; + } else { + badgeData.text[1] = license; + badgeData.colorscheme = 'blue'; + } + sendBadge(format, badgeData); + } } catch (e) { badgeData.text[1] = 'invalid'; sendBadge(format, badgeData); diff --git a/try.html b/try.html index 6ea8972..396774f 100644 --- a/try.html +++ b/try.html @@ -458,6 +458,10 @@ Pixel-perfect Retina-ready Fast Consistent Hackable
https://img.shields.io/cpan/l/Config-Augeas.svg
https://img.shields.io/ctan/l/tex.svg
https://img.shields.io/cocoapods/p/AFNetworking.svg