From cb4258193302bc5ed4761deddfd183610401dd74 Mon Sep 17 00:00:00 2001 From: Thaddee Tyl Date: Wed, 8 Oct 2014 23:21:58 +0200 Subject: [PATCH] HHVM support Fixes #250 --- server.js | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/server.js b/server.js index 893b96a..299779e 100644 --- a/server.js +++ b/server.js @@ -448,6 +448,47 @@ cache(function(data, match, sendBadge, request) { }); })); +// HHVM integration. +camp.route(/^\/hhvm\/([^\/]+\/[^\/]+)(\/.+)?\.(svg|png|gif|jpg)$/, +cache(function(data, match, sendBadge) { + var user = match[1]; // eg, `symfony/symfony`. + var branch = match[2];// eg, `/2.4.0.0`. + var format = match[3]; + var apiUrl = 'http://hhvm.h4cc.de/badge/' + user + '.json'; + if (branch) { + // Remove the leading slash. + apiUrl += '?branch=' + branch.slice(1); + } + var badgeData = getBadgeData('hhvm', data); + request(apiUrl, function dealWithData(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var data = JSON.parse(buffer); + var status = data.hhvm_status; + if (status === 'not_tested') { + badgeData.colorscheme = 'red'; + badgeData.text[1] = 'not tested'; + } else if (status === 'partial') { + badgeData.colorscheme = 'yellow'; + badgeData.text[1] = 'partially tested'; + } else if (status === 'tested') { + badgeData.colorscheme = 'brightgreen'; + badgeData.text[1] = 'tested'; + } else { + badgeData.text[1] = 'maybe untested'; + } + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Packagist integration. camp.route(/^\/packagist\/(dm|dd|dt)\/(.*)\.(svg|png|gif|jpg)$/, cache(function(data, match, sendBadge, request) {