From 3febfe234ed2f9b4932da4d6bcaa54a18bd02ce7 Mon Sep 17 00:00:00 2001 From: Markus Wamser Date: Wed, 5 Apr 2017 23:30:47 +0200 Subject: [PATCH] Add support for CRAN/METACRAN (#837) --- server.js | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ try.html | 8 ++++++++ 2 files changed, 57 insertions(+) diff --git a/server.js b/server.js index 8af7326ad2f46..800e99479e95a 100644 --- a/server.js +++ b/server.js @@ -4812,6 +4812,55 @@ cache(function(data, match, sendBadge, request) { }); })); +// CRAN/METACRAN integration. +camp.route(/^\/cran\/([vl])\/([^\/]+)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var info = match[1]; // either `v` or `l` + var pkg = match[2]; // eg, devtools + var format = match[3]; + var url = 'http://crandb.r-pkg.org/' + pkg; + var badgeData = getBadgeData('cran', data); + request(url, function (err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + if (res.statusCode === 404) { + badgeData.text[1] = 'not found'; + sendBadge(format, badgeData); + return; + } + try { + var data = JSON.parse(buffer); + + if (info === 'v') { + var version = data.Version; + var vdata = versionColor(version); + badgeData.text[1] = vdata.version; + badgeData.colorscheme = vdata.color; + sendBadge(format, badgeData); + } else if (info === 'l') { + badgeData.text[0] = 'license'; + var license = data.License; + if (license) { + badgeData.text[1] = license; + badgeData.colorscheme = 'blue'; + } else { + badgeData.text[1] = 'unknown'; + } + sendBadge(format, badgeData); + } else { + throw Error('Unreachable due to regex'); + } + } catch (e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + + // CTAN integration. camp.route(/^\/ctan\/([^\/])\/([^\/]+)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { diff --git a/try.html b/try.html index 11f1989ededbf..b8509862318a3 100644 --- a/try.html +++ b/try.html @@ -551,6 +551,14 @@

Version

https://img.shields.io/cpan/v/Config-Augeas.svg + CRAN: + + https://img.shields.io/cran/v/devtools.svg + + CRAN: + + https://img.shields.io/cran/l/devtools.svg + CTAN: https://img.shields.io/ctan/v/tex.svg