From c76348e711f1bda59b5c21c8c80040e321463e64 Mon Sep 17 00:00:00 2001 From: Sergey Petrov Date: Wed, 20 Aug 2014 21:55:15 +0400 Subject: [PATCH] Added support for standalone TeamCity instance --- server.js | 32 ++++++++++++++++++++++++++++++++ try.html | 5 +++++ 2 files changed, 37 insertions(+) diff --git a/server.js b/server.js index ec0406c..e8510e3 100644 --- a/server.js +++ b/server.js @@ -355,6 +355,38 @@ cache(function(data, match, sendBadge) { }); })); +// Another TeamCity instance +camp.route(/^\/teamcity\/(http|https)\/(.*)\/(.*)\.(svg|png|gif|jpg)$/, +cache(function(data, match, sendBadge) { + var scheme = match[1]; + var serverUrl = match[2]; + var buildType = match[3]; // eg, `bt428`. + var format = match[4]; + var apiUrl = scheme + '://' + serverUrl + '/app/rest/builds/buildType:(id:' + buildType + ')?guest=1'; + var badgeData = getBadgeData('build', data); + request(apiUrl, { headers: { 'Accept': 'application/json' } }, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + } + try { + var data = JSON.parse(buffer); + var status = data.status; + badgeData.text[1] = (data.statusText || data.status || '').toLowerCase(); + if (status === 'SUCCESS') { + badgeData.colorscheme = 'brightgreen'; + } else { + badgeData.colorscheme = 'red'; + } + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + + // Gittip integration. camp.route(/^\/gittip\/(.*)\.(svg|png|gif|jpg)$/, cache(function(data, match, sendBadge) { diff --git a/try.html b/try.html index 5697086..ffadc14 100644 --- a/try.html +++ b/try.html @@ -158,6 +158,11 @@ I made the GitHub Badge Service. http://img.shields.io/teamcity/codebetter/bt428.svg + + TeamCity: + + http://img.shields.io/teamcity/http/teamcity.jetbrains.com/bt345.svg + AppVeyor: http://img.shields.io/appveyor/ci/gruntjs/grunt.svg