diff --git a/index.html b/index.html index 86d14dc..2808d07 100644 --- a/index.html +++ b/index.html @@ -77,6 +77,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/wercker/ci/54330318b4ce963d50020750.svg + Wercker (v3): + + https://img.shields.io/wercker/ci/wercker/docs.svg + TeamCity CodeBetter: https://img.shields.io/teamcity/codebetter/bt428.svg diff --git a/server.js b/server.js index 1d02b9c..1e7913c 100644 --- a/server.js +++ b/server.js @@ -310,7 +310,7 @@ cache(function(data, match, sendBadge, request) { })); // Wercker integration -camp.route(/^\/wercker\/ci\/(.+)\.(svg|png|gif|jpg|json)$/, +camp.route(/^\/wercker\/ci\/([a-fA-F0-9]+)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { var projectId = match[1]; // eg, `54330318b4ce963d50020750` var format = match[2]; @@ -349,6 +349,47 @@ cache(function(data, match, sendBadge, request) { }); })); +// Wercker V3 integration +camp.route(/^\/wercker\/ci\/(.+)\/(.+)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var owner = match[1]; + var application = match[2]; + var format = match[3]; + var options = { + method: 'GET', + json: true, + uri: 'https://app.wercker.com/api/v3/applications/' + owner + '/' + application + '/builds?limit=1' + }; + var badgeData = getBadgeData('build', data); + request(options, function(err, res, json) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + 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); + + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Rust download and version integration camp.route(/^\/crates\/(d|v|dv|l)\/([A-Za-z0-9_-]+)(?:\/([0-9.]+))?\.(svg|png|gif|jpg|json)$/, cache(function (data, match, sendBadge, request) { diff --git a/try.html b/try.html index c1fa29c..590c252 100644 --- a/try.html +++ b/try.html @@ -76,6 +76,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/wercker/ci/54330318b4ce963d50020750.svg + Wercker (v3): + + https://img.shields.io/wercker/ci/wercker/docs.svg + TeamCity CodeBetter: https://img.shields.io/teamcity/codebetter/bt428.svg