From 976e5f2ee089d9f1e0da229e0573b96b7bcac7ea Mon Sep 17 00:00:00 2001 From: chapulina Date: Tue, 6 Sep 2016 17:34:53 -0700 Subject: [PATCH] Bitbucket open pull requests --- server.js | 30 ++++++++++++++++++++++++++++++ try.html | 8 ++++++++ 2 files changed, 38 insertions(+) diff --git a/server.js b/server.js index 843e6ba..2a1c922 100644 --- a/server.js +++ b/server.js @@ -3331,6 +3331,36 @@ cache(function(data, match, sendBadge, request) { }); })); +// Bitbucket pull requests integration. +camp.route(/^\/bitbucket\/pr(-raw)?\/([^\/]+)\/([^\/]+)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var isRaw = !!match[1]; + var user = match[2]; // eg, atlassian + var repo = match[3]; // eg, python-bitbucket + var format = match[4]; + var apiUrl = 'https://bitbucket.org/api/2.0/repositories/' + user + '/' + repo + + '/pullrequests/?limit=0&state=OPEN'; + + var badgeData = getBadgeData('pull requests', data); + request(apiUrl, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var data = JSON.parse(buffer); + var pullrequests = data.size; + badgeData.text[1] = pullrequests + (isRaw? '': ' open'); + badgeData.colorscheme = pullrequests ? 'yellow' : 'brightgreen'; + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Chef cookbook integration. camp.route(/^\/cookbook\/v\/(.*)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { diff --git a/try.html b/try.html index c3f502c..5544415 100644 --- a/try.html +++ b/try.html @@ -746,6 +746,14 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/bitbucket/issues-raw/atlassian/python-bitbucket.svg + Bitbucket open pull requests: + + https://img.shields.io/bitbucket/pr/osrf/gazebo.svg + + + + https://img.shields.io/bitbucket/pr-raw/osrf/gazebo.svg + WordPress rating: https://img.shields.io/wordpress/plugin/r/akismet.svg