From 731acf5d944ccea584e542d7fd944bd40c987aec Mon Sep 17 00:00:00 2001 From: Seth Vargo Date: Thu, 10 Apr 2014 16:55:33 -0400 Subject: [PATCH] Add a route for Chef cookbooks --- server.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/server.js b/server.js index a9972d3..9e28ff7 100644 --- a/server.js +++ b/server.js @@ -818,6 +818,33 @@ cache(function(data, match, sendBadge) { }); })); +// Chef cookbook integration. +camp.route(/^\/cookbook\/v\/(.*)\.(svg|png|gif|jpg)$/, +cache(function(data, match, sendBadge) { + var cookbook = match[1]; // eg, chef-sugar + var format = match[2]; + var apiUrl = 'https://cookbooks.opscode.com/api/v1/cookbooks/' + cookbook + '/versions/latest'; + var badgeData = getBadgeData('version', data); + + request(apiUrl, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + } + + try { + var data = JSON.parse(buffer); + var latest = data.version; + badgeData.text[1] = latest; + badgeData.colorscheme = 'blue'; + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Any badge. camp.route(/^\/(:|badge\/)(([^-]|--)+)-(([^-]|--)+)-(([^-]|--)+)\.(svg|png|gif|jpg)$/, function(data, match, end, ask) {