fix [waffle] labels badge (#1745)

fix [waffle] labels badge

- update URL and parsing code to use /columns endpoint
- add error handling for 'not found' case
- add missing test cases
- update home page example

Closes #1731
This commit is contained in:
chris48s
2018-07-05 19:06:06 +01:00
committed by GitHub
parent e1e2a2ff2b
commit b05d93c9c1
3 changed files with 90 additions and 50 deletions

View File

@@ -6606,32 +6606,33 @@ cache({
// Waffle.io integration
camp.route(/^\/waffle\/label\/([^/]+)\/([^/]+)\/?([^/]+)?\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var user = match[1]; // eg, evancohen
var repo = match[2]; // eg, smart-mirror
var ghLabel = match[3] || 'ready'; // eg, in%20progress
var format = match[4];
var apiUrl = 'https://api.waffle.io/' + user + '/' + repo + '/cards';
var badgeData = getBadgeData('issues', data);
const user = match[1]; // eg, evancohen
const repo = match[2]; // eg, smart-mirror
const ghLabel = match[3] || 'ready'; // eg, in%20progress
const format = match[4];
const apiUrl = `https://api.waffle.io/${user}/${repo}/columns?with=count`;
const badgeData = getBadgeData('waffle', data);
request(apiUrl, function(err, res, buffer) {
try {
var cards = JSON.parse(buffer);
if (cards.length === 0) {
if (checkErrorResponse(badgeData, err, res)) {
sendBadge(format, badgeData);
return;
}
const cols = JSON.parse(buffer);
if (cols.length === 0) {
badgeData.text[1] = 'absent';
sendBadge(format, badgeData);
return;
}
var count = 0;
var color = '78bdf2';
for (var i = 0; i < cards.length; i++) {
var cardMetadata = cards[i].githubMetadata;
if (cardMetadata.labels && cardMetadata.labels.length > 0) {
for (var j = 0; j < cardMetadata.labels.length; j++) {
var label = cardMetadata.labels[j];
if (label.name === ghLabel) {
count++;
color = label.color;
}
let count = 0;
let color = '78bdf2';
for (let i = 0; i < cols.length; i++) {
if (('label' in cols[i]) && (cols[i].label !== null)) {
if (cols[i].label.name === ghLabel) {
count = cols[i].count;
color = cols[i].label.color;
break;
}
}
}