diff --git a/index.html b/index.html
index 7f4ab22..7c84220 100644
--- a/index.html
+++ b/index.html
@@ -212,6 +212,10 @@ Pixel-perfect Retina-ready Fast Consistent Hackable
Downloads
+ Github All Releases: |
+  |
+ https://img.shields.io/github/downloads/atom/atom/total.svg |
+
Github Releases: |
 |
https://img.shields.io/github/downloads/atom/atom/latest/total.svg |
@@ -925,6 +929,10 @@ is where the current server got started.
+
+
+
+
:wq
diff --git a/server.js b/server.js
index 92e2eee..4cd4ac0 100644
--- a/server.js
+++ b/server.js
@@ -2633,15 +2633,29 @@ cache(function(data, match, sendBadge, request) {
}));
// GitHub release-download-count integration.
-camp.route(/^\/github\/downloads\/([^\/]+)\/([^\/]+)\/([^\/]+)\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
+camp.route(/^\/github\/downloads\/([^\/]+)\/([^\/]+)(\/[^\/]+)?\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var user = match[1]; // eg, qubyte/rubidium
var repo = match[2];
- var tag = match[3];
+
+ var tag = match[3]; //null for all releases
var asset_name = match[4].toLowerCase(); // eg. total, atom-amd64.deb, atom.x86_64.rpm
var format = match[5];
- var release_path = tag !== 'latest' ? 'tags/' + match[3] : 'latest';
- var apiUrl = 'https://api.github.com/repos/' + user + '/' + repo + '/releases/' + release_path;
+
+ if (tag && (tag.indexOf('/') !== -1)) {
+ tag = tag.split('/').join('');
+ }
+
+ var total = true;
+ if (tag) {
+ total = false;
+ }
+
+ var apiUrl = 'https://api.github.com/repos/' + user + '/' + repo + '/releases';
+ if (!total) {
+ var release_path = tag !== 'latest' ? 'tags/' + tag : 'latest';
+ apiUrl = apiUrl + '/' + release_path;
+ }
// Using our OAuth App secret grants us 5000 req/hour
// instead of the standard 60 req/hour.
if (serverSecrets) {
@@ -2665,14 +2679,32 @@ cache(function(data, match, sendBadge, request) {
}
var data = JSON.parse(buffer);
var downloads = 0;
- data.assets.forEach(function (asset) {
- if (asset_name === 'total' || asset_name === asset.name.toLowerCase()) {
- downloads += asset.download_count;
+
+ var label;
+ if (total) {
+ data.forEach(function (tagData) {
+ tagData.assets.forEach(function (asset) {
+ if (asset_name === 'total' || asset_name === asset.name.toLowerCase()) {
+ downloads += asset.download_count;
+ }
+ });
+ });
+
+ label = 'total';
+ if (asset_name !== 'total') {
+ label += ' ' + '[' + asset_name + ']';
+ }
+ } else {
+ data.assets.forEach(function (asset) {
+ if (asset_name === 'total' || asset_name === asset.name.toLowerCase()) {
+ downloads += asset.download_count;
+ }
+ });
+
+ label = tag !== 'latest' ? tag : '';
+ if (asset_name !== 'total') {
+ label += ' ' + '[' + asset_name + ']';
}
- });
- var label = tag !== 'latest' ? tag : '';
- if (asset_name !== 'total') {
- label += ' ' + '[' + asset_name + ']';
}
badgeData.text[1] = metric(downloads) + ' ' + label;
badgeData.colorscheme = 'brightgreen';
diff --git a/try.html b/try.html
index e277344..e53f358 100644
--- a/try.html
+++ b/try.html
@@ -211,6 +211,10 @@ Pixel-perfect Retina-ready Fast Consistent Hackable
---|
Downloads