From a63c36664e8779f556da28d947a16c7cf3f36888 Mon Sep 17 00:00:00 2001 From: "Mr. Hyde" Date: Sun, 26 Oct 2014 04:19:00 +0100 Subject: [PATCH] Add Wercker support Resolves badges/shields#265 --- server.js | 35 +++++++++++++++++++++++++++++++++++ try.html | 4 ++++ 2 files changed, 39 insertions(+) diff --git a/server.js b/server.js index 8bb8d16..e840dfa 100644 --- a/server.js +++ b/server.js @@ -308,6 +308,41 @@ cache(function(data, match, sendBadge, request) { }); })); +// Wercker integration +camp.route(/^\/wercker\/(.+)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var projectId = match[1]; // eg, `54330318b4ce963d50020750` + var format = match[2]; + var options = { + method: 'GET', + json: true, + uri: 'https://app.wercker.com/getbuilds/' + projectId + '?limit=1' + }; + var badgeData = getBadgeData('build', data); + request(options, function(err, res, json) { + if (err != null || json == null + || (json.length !== undefined && json.length === 0)) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + var build = json[0]; + + if (build.status === 'finished') { + if (build.result === 'passed') { + badgeData.colorscheme = 'brightgreen'; + badgeData.text[1] = build.result; + } else { + badgeData.colorscheme = 'red'; + badgeData.text[1] = build.result; + } + } else { + badgeData.text[1] = build.status; + } + sendBadge(format, badgeData); + }); +})); + // AppVeyor CI integration. camp.route(/^\/appveyor\/ci\/(.*)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { diff --git a/try.html b/try.html index f1d9aa8..6756d83 100644 --- a/try.html +++ b/try.html @@ -154,6 +154,10 @@ I made the GitHub Badge Service. http://img.shields.io/travis/joyent/node/v0.6.svg + Wercker: + + http://img.shields.io/wercker/54330318b4ce963d50020750.svg + TeamCity CodeBetter: http://img.shields.io/teamcity/codebetter/bt428.svg