From 58e6a1f20ec572eefb3cf9deffdbaee2d7d37389 Mon Sep 17 00:00:00 2001 From: Benoit Ruiz Date: Thu, 3 Dec 2015 21:24:11 +0100 Subject: [PATCH] Add JIRA issue vendor --- server.js | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ try.html | 4 ++++ 2 files changed, 61 insertions(+) diff --git a/server.js b/server.js index 1bfcd84..167efc1 100644 --- a/server.js +++ b/server.js @@ -284,6 +284,63 @@ camp.notfound(/.*/, function(query, match, end, request) { // Vendors. +// JIRA issue integration +camp.route(/^\/jira\/issue\/(http(?:s)?)\/(.+)\/([^\/]+)\.(svg|png|gif|jpg|json)$/, +cache(function (data, match, sendBadge, request) { + var protocol = match[1]; + var host = match[2]; + var issueKey = match[3]; + var format = match[4]; + + var options = { + method: 'GET', + json: true, + uri: protocol + '://' + host + '/rest/api/2/issue/' + issueKey + }; + if (serverSecrets && serverSecrets.jira_username) { + options.auth = { + user: serverSecrets.jira_username, + pass: serverSecrets.jira_password + }; + } + + // map JIRA color names to closest shields color schemes + var colorMap = { + 'medium-gray': 'lightgrey', + 'green': 'green', + 'yellow': 'yellow', + 'brown': 'orange', + 'warm-red': 'red', + 'blue-gray': 'blue' + }; + + var badgeData = getBadgeData(issueKey, data); + request(options, function (err, res, json) { + if (err !== null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var jiraIssue = json; + if (jiraIssue.fields && jiraIssue.fields.status) { + if (jiraIssue.fields.status.name) { + badgeData.text[1] = jiraIssue.fields.status.name; // e.g. "In Development" + } + if (jiraIssue.fields.status.statusCategory) { + badgeData.colorscheme = colorMap[jiraIssue.fields.status.statusCategory.colorName] || 'lightgrey'; + } + } else { + badgeData.text[1] = 'invalid'; + } + sendBadge(format, badgeData); + } catch (e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Travis integration camp.route(/^\/travis(-ci)?\/([^\/]+\/[^\/]+)(?:\/(.+))?\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { diff --git a/try.html b/try.html index ac79fd1..ebc9141 100644 --- a/try.html +++ b/try.html @@ -682,6 +682,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/gitter/room/nwjs/nw.js.svg + JIRA issue: + + https://img.shields.io/jira/issue/https/issues.apache.org/jira/KAFKA-2896.svg +

Longer Miscellaneous