From dcc51ddd6060678a8958ff4a128e732d532f409c Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Mon, 24 Aug 2015 21:07:42 -0500 Subject: [PATCH] Support for Bintray version badge. Addresses #58 by supporting a badge showing the latest version of a Bintray package. --- index.html | 4 ++++ server.js | 41 +++++++++++++++++++++++++++++++++++++++++ try.html | 4 ++++ 3 files changed, 49 insertions(+) diff --git a/index.html b/index.html index c1e12bc..9edb6c0 100644 --- a/index.html +++ b/index.html @@ -379,6 +379,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/packagist/vpre/symfony/symfony.svg + Bintray: + + https://img.shields.io/bintray/v/asciidoctor/maven/asciidoctorj.svg + Clojars: https://img.shields.io/clojars/v/prismic.svg diff --git a/server.js b/server.js index b6e5eb7..877a27d 100644 --- a/server.js +++ b/server.js @@ -1348,6 +1348,47 @@ cache(function(data, match, sendBadge, request) { }); })); +// Bintray version integration +camp.route(/^\/bintray\/v\/(.+)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var path = match[1]; // :subject/:repo/:package (e.g. asciidoctor/maven/asciidoctorj) + var format = match[2]; + + var options = { + method: 'GET', + uri: 'https://bintray.com/api/v1/packages/' + path + '/versions/_latest', + headers: { + Accept: 'application/json' + } + }; + + if (serverSecrets && serverSecrets.bintray_user) { + options.auth = { + user: serverSecrets.bintray_user, + pass: serverSecrets.bintray_apikey + } + } + + var badgeData = getBadgeData('bintray', data); + request(options, function(err, res, buffer) { + if (err !== null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var data = JSON.parse(buffer); + var vdata = versionColor(data.name); + badgeData.text[1] = 'v' + data.name; + badgeData.colorscheme = 'brightgreen'; + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Clojars version integration camp.route(/^\/clojars\/v\/(.+)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { diff --git a/try.html b/try.html index 67685c6..5fd6e76 100644 --- a/try.html +++ b/try.html @@ -378,6 +378,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/packagist/vpre/symfony/symfony.svg + Bintray: + + https://img.shields.io/bintray/v/asciidoctor/maven/asciidoctorj.svg + Clojars: https://img.shields.io/clojars/v/prismic.svg