update gem downloads count
This commit is contained in:
parent
0baa320968
commit
f25f310856
84
server.js
84
server.js
|
@ -590,22 +590,63 @@ cache(function(data, match, sendBadge) {
|
|||
});
|
||||
}));
|
||||
|
||||
// Gem download count for latest version.
|
||||
camp.route(/^\/gem\/dtv\/(.*)\.(svg|png|gif|jpg)$/,
|
||||
// Gem download count
|
||||
camp.route(/^\/gem\/(dt|dtv|dv)\/(.*)\.(svg|png|gif|jpg)$/,
|
||||
cache(function(data, match, sendBadge) {
|
||||
var repo = match[1]; // eg, rails.
|
||||
var format = match[2];
|
||||
var apiUrl = 'https://rubygems.org/api/v1/gems/' + repo + '.json';
|
||||
var info = match[1];
|
||||
var site = match[2];
|
||||
var splited_url = site.split('/');
|
||||
var repo = splited_url[0];
|
||||
var version = (splited_url.length > 1) ? splited_url[splited_url.length - 1] : null;
|
||||
version = (version === "stable") ? version : semver.valid(version);
|
||||
var format = match[3];
|
||||
var badgeData = getBadgeData('downloads', data);
|
||||
var apiUrl = 'https://rubygems.org/api/v1/gems/' + repo + '.json';
|
||||
if (info === "dv"){
|
||||
apiUrl = 'https://rubygems.org/api/v1/versions/' + repo + '.json';
|
||||
}
|
||||
request(apiUrl, { headers: { 'Accept': 'application/atom+json,application/json' } }, function(err, res, buffer) {
|
||||
if (err != null) {
|
||||
badgeData.text[1] = 'inaccessible';
|
||||
sendBadge(format, badgeData);
|
||||
}
|
||||
try {
|
||||
var data = JSON.parse(buffer);
|
||||
var downloads = data.version_downloads;
|
||||
badgeData.text[1] = metric(downloads) + ' latest version';
|
||||
var data = JSON.parse(buffer);
|
||||
if (info === "dt") {
|
||||
var downloads = metric(data.downloads) + " total";
|
||||
}
|
||||
else if (info === "dtv") {
|
||||
var downloads = metric(data.version_downloads) + " latest version";
|
||||
}
|
||||
else if (info === "dv") {
|
||||
var downloads = "invalid";
|
||||
|
||||
if (version !== null && version === "stable") {
|
||||
|
||||
var versions = data.filter(function(ver) {
|
||||
return ver.prerelease === false;
|
||||
}).map(function(ver) {
|
||||
return ver.number;
|
||||
});
|
||||
var stable_version = latestVersion(versions); // found latest stable version
|
||||
var version_data = data.filter(function(ver) {
|
||||
return ver.number === stable_version;
|
||||
})[0];
|
||||
downloads = metric(version_data.downloads_count) + " stable version";
|
||||
}
|
||||
else if (version !== null) {
|
||||
|
||||
var version_data = data.filter(function(ver) {
|
||||
return ver.number === version;
|
||||
})[0]
|
||||
|
||||
downloads = metric(version_data.downloads_count) + " version " + version;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var downloads = "invalid";
|
||||
}
|
||||
badgeData.text[1] =downloads;
|
||||
badgeData.colorscheme = downloadCountColor(downloads);
|
||||
sendBadge(format, badgeData);
|
||||
} catch(e) {
|
||||
|
@ -615,33 +656,6 @@ cache(function(data, match, sendBadge) {
|
|||
});
|
||||
}));
|
||||
|
||||
|
||||
// Gem total download count
|
||||
camp.route(/^\/gem\/dt\/(.*)\.(svg|png|gif|jpg)$/,
|
||||
cache(function(data, match, sendBadge) {
|
||||
var repo = match[1]; // eg, rails.
|
||||
var format = match[2];
|
||||
var apiUrl = 'https://rubygems.org/api/v1/gems/' + repo + '.json';
|
||||
var badgeData = getBadgeData('downloads', data);
|
||||
request(apiUrl, { headers: { 'Accept': 'application/atom+json,application/json' } }, function(err, res, buffer) {
|
||||
if (err != null) {
|
||||
badgeData.text[1] = 'inaccessible';
|
||||
sendBadge(format, badgeData);
|
||||
}
|
||||
try {
|
||||
var data = JSON.parse(buffer);
|
||||
var downloads = data.downloads;
|
||||
badgeData.text[1] = metric(downloads) + ' total';
|
||||
badgeData.colorscheme = downloadCountColor(downloads);
|
||||
sendBadge(format, badgeData);
|
||||
} catch(e) {
|
||||
badgeData.text[1] = 'invalid';
|
||||
sendBadge(format, badgeData);
|
||||
}
|
||||
});
|
||||
}));
|
||||
|
||||
|
||||
// PyPI integration.
|
||||
camp.route(/^\/pypi\/([^\/]+)\/(.*)\.(svg|png|gif|jpg)$/,
|
||||
cache(function(data, match, sendBadge) {
|
||||
|
|
8
try.html
8
try.html
|
@ -167,6 +167,14 @@ I made the GitHub Badge Service.
|
|||
</tbody></table>
|
||||
<h3> Downloads </h3>
|
||||
<table><tbody>
|
||||
<tr><th> Gem </th>
|
||||
<td><img src='/gem/dv/rails/stable.svg' alt=''/></td>
|
||||
<td><code>http://img.shields.io/gem/dv/rails/stable.svg</code></td>
|
||||
</tr>
|
||||
<tr><th> Gem </th>
|
||||
<td><img src='/gem/dv/rails/4.1.0.svg' alt=''/></td>
|
||||
<td><code>http://img.shields.io/gem/dv/rails/4.1.0.svg</code></td>
|
||||
</tr>
|
||||
<tr><th> Gem </th>
|
||||
<td><img src='/gem/dtv/rails.svg' alt=''/></td>
|
||||
<td><code>http://img.shields.io/gem/dtv/rails.svg</code></td>
|
||||
|
|
Loading…
Reference in New Issue
Block a user