diff --git a/server.js b/server.js index b0936bb..eb6f86e 100644 --- a/server.js +++ b/server.js @@ -2613,6 +2613,86 @@ cache(function(data, match, sendBadge, request) { }); })); +// apm download integration. +camp.route(/^\/apm\/dm\/(.*)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var repo = match[1]; // eg, `vim-mode`. + var format = match[2]; + var apiUrl = 'https://atom.io/api/packages/' + repo; + var badgeData = getBadgeData('downloads', data); + request(apiUrl, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var dls = JSON.parse(buffer).downloads; + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + return; + } + badgeData.text[1] = metric(dls) + ' total'; + badgeData.colorscheme = 'green'; + sendBadge(format, badgeData); + }); +})); + +// apm version integration. +camp.route(/^\/apm\/v\/(.*)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var repo = match[1]; // eg, `vim-mode`. + var format = match[2]; + var apiUrl = 'https://atom.io/api/packages/' + repo; + var badgeData = getBadgeData('apm', data); + request(apiUrl, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var releases = JSON.parse(buffer).releases; + var version = releases.latest; + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + return; + } + badgeData.text[1] = 'v' + version; + badgeData.colorscheme = 'green'; + sendBadge(format, badgeData); + }); +})); + +// apm license integration. +camp.route(/^\/apm\/l\/(.*)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var repo = match[1]; // eg, `vim-mode`. + var format = match[2]; + var apiUrl = 'https://atom.io/api/packages/' + repo; + var badgeData = getBadgeData('license', data); + request(apiUrl, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var metadata = JSON.parse(buffer).metadata; + var license = metadata.license; + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + return; + } + badgeData.text[1] = license; + badgeData.colorscheme = 'red'; + sendBadge(format, badgeData); + }); +})); + // Any badge. camp.route(/^\/(:|badge\/)(([^-]|--)+)-(([^-]|--)+)-(([^-]|--)+)\.(svg|png|gif|jpg)$/, function(data, match, end, ask) { diff --git a/try.html b/try.html index d97bead..20ac387 100644 --- a/try.html +++ b/try.html @@ -244,6 +244,10 @@ When that is implemented, change the placeholder to
https://img.shields.io/sourceforge/dt/sevenzip.svg
https://img.shields.io/apm/dm/vim-mode.svg
https://img.shields.io/wordpress/v/akismet.svg |
+ ||
apm: | +https://img.shields.io/apm/v/vim-mode.svg |
+
---|
https://img.shields.io/npm/l/express.svg
https://img.shields.io/apm/l/vim-mode.svg
https://img.shields.io/pypi/l/Django.svg