From 6bfad8afa181b74ce68310845c9c166e4050cd62 Mon Sep 17 00:00:00 2001 From: Thaddee Tyl Date: Mon, 18 May 2015 22:38:47 +0200 Subject: [PATCH] Docker: use original API when possible --- server.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/server.js b/server.js index 9f42c54..31cd005 100644 --- a/server.js +++ b/server.js @@ -3356,7 +3356,7 @@ cache(function(data, match, sendBadge, request) { var info = match[1]; // either `v` or `l` var pkg = match[2]; // eg, tex var format = match[3]; - var url = 'http://www.ctan.org/json/pkg/'+pkg; + var url = 'http://www.ctan.org/json/pkg/' + pkg; var badgeData = getBadgeData('ctan', data); request(url, function (err, res, buffer) { if (err != null) { @@ -3449,16 +3449,18 @@ cache(function (data, match, sendBadge, request) { var info = match[1]; // (v - version, l - license) var pkg = match[2]; // package name, e.g. vibe-d var format = match[3]; - var apiUrl = 'http://code.dlang.org/api/packages/'+pkg; - if (info === 'v') + var apiUrl = 'http://code.dlang.org/api/packages/' + pkg; + if (info === 'v') { apiUrl += '/latest'; - else if (info === 'l') + } else if (info === 'l') { apiUrl += '/latest/info'; + } var badgeData = getBadgeData('dub', data); request(apiUrl, function(err, res, buffer) { if (err != null) { badgeData.text[1] = 'inaccessible'; sendBadge(format, badgeData); + return; } try { var data = JSON.parse(buffer); @@ -3491,19 +3493,21 @@ cache(function(data, match, sendBadge, request) { var user = match[1]; // eg, mashape var repo = match[2]; // eg, kong var format = match[3]; - var baseURL = 'http://docker.cloudbrain.io/'; + if (user === '_') { + user = 'library'; + } var path = user + '/' + repo; + var url = 'https://registry.hub.docker.com/v2/repositories/' + path + '/stars/count/'; var badgeData = getBadgeData('docker', data); - request(baseURL + path, function(err, res, buffer) { + request(url, function(err, res, buffer) { if (err != null) { badgeData.text[1] = 'inaccessible'; sendBadge(format, badgeData); return; } try { - var data = JSON.parse(buffer); - var stars = data.stars; - var starSuffix = stars === 1 ? " star" : " stars"; + var stars = +("" + buffer); + var starSuffix = (stars === 1)? " star": " stars"; badgeData.text[1] = metric(stars) + starSuffix; badgeData.colorscheme = null; badgeData.colorB = '#008bb8'; @@ -3521,6 +3525,9 @@ cache(function(data, match, sendBadge, request) { var user = match[1]; // eg, mashape var repo = match[2]; // eg, kong var format = match[3]; + // FIXME: this website does HTML scraping. Hopefully one day it won't be + // necessary. See this for more information: + // https://gist.github.com/montanaflynn/957add5908beb3f676cf var baseURL = 'http://docker.cloudbrain.io/'; var path = user + '/' + repo; var badgeData = getBadgeData('docker', data); @@ -3533,7 +3540,7 @@ cache(function(data, match, sendBadge, request) { try { var data = JSON.parse(buffer); var pulls = data.pulls; - var pullSuffix = pulls === 1 ? " pull" : " pulls"; + var pullSuffix = (pulls === 1)? " pull": " pulls"; badgeData.text[1] = metric(pulls) + pullSuffix; badgeData.colorscheme = null; badgeData.colorB = '#008bb8';