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 13eab15..5af599f 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 eecf583..acc69c0 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: