diff --git a/server.js b/server.js index 9ef4c17..2ad0a91 100644 --- a/server.js +++ b/server.js @@ -2760,6 +2760,43 @@ cache(function(data, match, sendBadge, request) { }); })); +// CocoaPods Apps Integration +camp.route(/^\/cocoapods\/(aw|at)\/(.*)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var info = match[1]; // One of these: "aw", "at" + var spec = match[2]; // eg, AFNetworking + var format = match[3]; + var apiUrl = 'http://metrics.cocoapods.org/api/v1/pods/' + spec; + var badgeData = getBadgeData('pod', data); + request(apiUrl, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var data = JSON.parse(buffer); + badgeData.text[0] = getLabel('apps', data); + var apps = 0 + switch (info.charAt(1)) { + case 'w': + var apps = data.stats.app_week; + badgeData.text[1] = metric(apps) + '/week'; + break; + case 't': + var apps = data.stats.app_total; + badgeData.text[1] = metric(apps); + break; + } + badgeData.colorscheme = downloadCountColor(apps); + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // GitHub tag integration. camp.route(/^\/github\/tag\/([^\/]+)\/([^\/]+)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { diff --git a/try.html b/try.html index 7c7b591..f190f36 100644 --- a/try.html +++ b/try.html @@ -857,6 +857,14 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/bithound/devDependencies/github/rexxars/sse-channel.svg + CocoaPods: + + https://img.shields.io/cocoapods/at/AFNetworking.svg + + CocoaPods: + + https://img.shields.io/cocoapods/aw/AFNetworking.svg + CocoaPods: https://img.shields.io/cocoapods/p/AFNetworking.svg