Add Gem ranking badges

This commit is contained in:
Raphaël Pinson 2015-04-27 10:01:03 +02:00
parent f51f152993
commit f9e184fadb
2 changed files with 46 additions and 0 deletions

View File

@ -1275,6 +1275,44 @@ cache(function(data, match, sendBadge, request) {
}) })
})); }));
// Gem ranking
camp.route(/^\/gem\/(rt|rd)\/(.*)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var info = match[1]; // either rt or rd
var repo = match[2]; // eg, "rspec-puppet-facts"
var format = match[3];
var url = 'http://bestgems.org/api/v1/gems/' + repo;
if (info === 'rt') {
url += '/total_ranking.json';
} else if (info === 'rd') {
url += '/daily_ranking.json';
}
var badgeData = getBadgeData('rank', data);
request(url, function(err, res, buffer) {
if (err != null) {
badgeData.text[1] = 'inaccessible';
sendBadge(badgeData, format);
}
try {
var data = JSON.parse(buffer);
if (info == 'rt') {
var rank = data[0].total_ranking;
} else if (info === 'rd') {
var rank = data[0].daily_ranking;
}
var count = Math.floor(100000/rank);
badgeData.colorscheme = floorCountColor(count, 10, 50, 100);
badgeData.text[1] = ordinalNumber(rank);
badgeData.text[1] += (info === 'rt') ? ' total' : ' daily';
sendBadge(format, badgeData);
} catch (e) {
badgeData.text[1] = 'invalid';
sendBadge(format, badgeData);
}
})
}));
// PyPI integration. // PyPI integration.
camp.route(/^\/pypi\/([^\/]+)\/(.*)\.(svg|png|gif|jpg|json)$/, camp.route(/^\/pypi\/([^\/]+)\/(.*)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) { cache(function(data, match, sendBadge, request) {

View File

@ -577,6 +577,14 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable
<td><img src='/gem/u/raphink.svg' alt=''/></td> <td><img src='/gem/u/raphink.svg' alt=''/></td>
<td><code>https://img.shields.io/gem/u/raphink.svg</code></td> <td><code>https://img.shields.io/gem/u/raphink.svg</code></td>
</tr> </tr>
<tr><th data-keywords='ruby'> Gems: </th>
<td><img src='/gem/rt/puppet.svg' alt=''/></td>
<td><code>https://img.shields.io/gem/rt/puppet.svg</code></td>
</tr>
<tr><th data-keywords='ruby'> Gems: </th>
<td><img src='/gem/rd/facter.svg' alt=''/></td>
<td><code>https://img.shields.io/gem/rd/facter.svg</code></td>
</tr>
<tr><th data-keywords='dub'> DUB: </th> <tr><th data-keywords='dub'> DUB: </th>
<td><img src='/dub/l/vibe-d.svg' alt=''/></td> <td><img src='/dub/l/vibe-d.svg' alt=''/></td>
<td><code>https://img.shields.io/dub/l/vibe-d.svg</code></td> <td><code>https://img.shields.io/dub/l/vibe-d.svg</code></td>