From 40471a137e2891768854b587e51996b8c8ae7bf6 Mon Sep 17 00:00:00 2001 From: JP-Ellis Date: Tue, 5 Apr 2016 12:03:47 +1000 Subject: [PATCH] Add AUR integration. Add badge for the Arch User Repository (AUR). Includes badges to display the current version, number of votes, and license. Unfortunately, their API does not display downloads at this stage. Signed-off-by: JP-Ellis --- server.js | 42 ++++++++++++++++++++++++++++++++++++++++++ try.html | 11 +++++++++++ 2 files changed, 53 insertions(+) diff --git a/server.js b/server.js index 13eab15ef9..5af599fd24 100644 --- a/server.js +++ b/server.js @@ -4957,7 +4957,49 @@ cache(function(data, match, sendBadge, request) { badgeData.colorscheme = null; badgeData.colorB = '#' + (color || '78bdf2'); sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); +// Arch user repository (AUR) integration. +camp.route(/^\/aur\/(version|votes|license)\/(.*)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var info = match[1]; + var pkg = match[2]; + var format = match[3]; + var apiUrl = 'https://aur.archlinux.org/rpc.php?type=info&arg=' + pkg; + var badgeData = getBadgeData('AUR', data); + request(apiUrl, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var data = JSON.parse(buffer).results; + if (info === 'version') { + var vdata = versionColor(data.Version); + badgeData.text[1] = vdata.version; + if (data.OutOfDate === null) { + badgeData.colorscheme = 'blue'; + } else { + badgeData.colorscheme = 'orange'; + } + } else if (info === 'votes') { + var votes = data.NumVotes; + badgeData.text[0] = "votes"; + badgeData.text[1] = votes; + badgeData.colorscheme = floorCountColor(votes, 2, 20, 60); + } else if (info === 'license') { + var license = data.License; + badgeData.text[0] = "license"; + 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 eecf583f23..acc69c03a2 100644 --- a/try.html +++ b/try.html @@ -514,6 +514,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/dub/v/vibe-d.svg + AUR: + + https://img.shields.io/aur/version/yaourt.svg +

Social

@@ -542,6 +546,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/twitter/follow/shields_io.svg?style=social + AUR: + + https://img.shields.io/aur/votes/yaourt.svg +

Miscellaneous

@@ -749,6 +757,9 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable Maintenance: https://img.shields.io/maintenance/yes/2016.svg + AUR: + + https://img.shields.io/aur/license/yaourt.svg Waffle.io: