From d21302feab90dc0d439d60c20298d60dee6d6610 Mon Sep 17 00:00:00 2001 From: Montana Flynn Date: Fri, 10 Apr 2015 08:30:31 -0700 Subject: [PATCH] Add docker stars integration --- server.js | 31 +++++++++++++++++++++++++++++++ try.html | 4 ++++ 2 files changed, 35 insertions(+) diff --git a/server.js b/server.js index 38fad2c..5e14112 100644 --- a/server.js +++ b/server.js @@ -3202,6 +3202,37 @@ cache(function (data, match, sendBadge, request) { }); })); +// Docker Hub stars integration. +camp.route(/^\/docker\/stars\/([^\/]+)\/([^\/]+)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var user = match[1]; // eg, _ or mashape + var repo = match[2]; // eg, mockbin + var format = match[3]; + // Convert underscore to library for api path + user = user === '_' ? 'library' : user; + var baseURL = 'https://registry.hub.docker.com/v2/'; + var path = 'repositories/'+user+'/'+repo+'/stars/count/'; + var badgeData = getBadgeData('docker', data); + request(baseURL+path, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + } + try { + if (res.statusCode !== 200) { + throw new Error("Could not find repo on docker hub"); + } + badgeData.text[1] = buffer + " stars"; + badgeData.colorscheme = null; + badgeData.colorB = '#008bb8'; + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Any badge. camp.route(/^\/(:|badge\/)(([^-]|--)+)-(([^-]|--)+)-(([^-]|--)+)\.(svg|png|gif|jpg)$/, function(data, match, end, ask) { diff --git a/try.html b/try.html index 79dfa81..4e34c9f 100644 --- a/try.html +++ b/try.html @@ -553,6 +553,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/dub/l/vibe-d.svg + Docker Stars: + + https://img.shields.io/docker/stars/mashape/mockbin.svg +

Your Badge