diff --git a/server.js b/server.js index 31645dd..64f43e1 100644 --- a/server.js +++ b/server.js @@ -3595,6 +3595,54 @@ cache(function(data, match, sendBadge, request) { }); })); +// Magnum CI integration +camp.route(/^\/magnumci\/ci\/([^\/]+)(?:\/(.+))?\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var projectId = match[1]; // E.g. 96ffb83fa700f069024921b0702e76ff + var branch = match[2]; // E.g. master + var format = match[3]; + var options = { + method: 'GET', + uri: 'https://magnum-ci.com/status/' + projectId + '.png' + }; + if (branch != null) { + options.uri += '?branch=' + branch; + } + var badgeData = getBadgeData('build', data); + request(options, function(err, res) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var statusMatch = res.headers['content-disposition'] + .match(/filename="(.+)\.png"/); + if (!statusMatch) { + badgeData.text[1] = 'unknown'; + sendBadge(format, badgeData); + return; + } + + switch (statusMatch[1]) { + case 'pass': + badgeData.text[1] = 'passing'; + badgeData.colorscheme = 'brightgreen'; + break; + break; + case 'fail': + badgeData.text[1] = 'failing'; + badgeData.colorscheme = 'red'; + break; + } + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'not found'; + sendBadge(format, badgeData); + } + }); +})); + // Maven-Central artifact version integration // API documentation: http://search.maven.org/#api camp.route(/^\/maven-central\/v\/(.*)\/(.*)\.(svg|png|gif|jpg|json)$/, diff --git a/try.html b/try.html index 2a80513..745d331 100644 --- a/try.html +++ b/try.html @@ -104,6 +104,14 @@ Pixel-perfect Retina-ready Fast Consistent Hackable
https://img.shields.io/codeship/d6c1ddd0-16a3-0132-5f85-2e35c05e22b1/master.svg
https://img.shields.io/magnumci/ci/96ffb83fa700f069024921b0702e76ff.svg
https://img.shields.io/magnumci/ci/96ffb83fa700f069024921b0702e76ff/new-meta.svg
https://img.shields.io/circleci/project/BrightFlair/PHP.Gt.svg