Merge remote-tracking branch 'kstep/patch-1'

This commit is contained in:
Thaddee Tyl 2015-02-12 19:10:50 +01:00
commit 13fb4740fc
2 changed files with 61 additions and 0 deletions

View File

@ -347,6 +347,55 @@ cache(function(data, match, sendBadge, request) {
});
}));
// Rust download and version integration
camp.route(/^\/crates\/(d|v|dv)\/([A-Za-z0-9_-]+)(?:\/([0-9.]+))?\.(svg|png|gif|jpg|json)$/,
cache(function (data, match, sendBadge, request) {
var mode = match[1]; // d - downloads (total or for version), v - (latest) version, dv - downloads (for latest version)
var crate = match[2]; // crate name, e.g. rustc-serialize
var version = match[3]; // crate version in semver format, optional, e.g. 0.1.2
var format = match[4];
var apiUrl = 'https://crates.io/api/v1/crates/' + crate;
if (version != null) {
apiUrl += '/' + version;
}
var badgeData = getBadgeData(mode == 'v'? 'crates.io': 'downloads', data);
request(apiUrl, { headers: { 'Accept': 'application/json' } }, function (err, res, buffer) {
if (err != null) {
badgeData.text[1] = 'inaccessible';
sendBadge(badgeData, format);
}
try {
var data = JSON.parse(buffer);
var downloads;
if (mode == 'd') {
downloads = data.crate? data.crate.downloads: data.version.downloads;
version = data.version && data.version.num;
badgeData.text[1] = metric(downloads) + (version? ' version ' + version: ' total');
badgeData.colorscheme = downloadCountColor(downloads);
} else if (mode == 'dv') {
downloads = data.version? data.version.downloads: data.versions[0].downloads;
version = data.version && data.version.num;
badgeData.text[1] = metric(downloads) + (version? ' version ' + version: ' latest version');
badgeData.colorscheme = downloadCountColor(downloads);
} else if (mode == 'v') {
version = data.version? data.version.num: data.crate.max_version;
var vdata = versionColor(version);
badgeData.text[1] = vdata.version;
badgeData.colorscheme = vdata.color;
}
sendBadge(format, badgeData);
} catch (e) {
badgeData.text[1] = 'invalid';
sendBadge(format, badgeData);
}
});
}));
// AppVeyor CI integration.
camp.route(/^\/appveyor\/ci\/([^\/]+\/[^\/]+)(?:\/(.+))?\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {

View File

@ -211,6 +211,14 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable
<td><img src='/pypi/dd/Django.svg' alt=''/></td>
<td><code>https://img.shields.io/pypi/dd/Django.svg</code></td>
</tr>
<tr><th data-keywords='Rust'> Crates.io: </th>
<td><img src='/crates/d/rustc-serialize.svg' alt=''/></td>
<td><code>https://img.shields.io/crates/d/rustc-serialize.svg</code></td>
</tr>
<tr><th data-keywords='Rust'> Crates.io: </th>
<td><img src='/crates/dv/rustc-serialize.svg' alt=''/></td>
<td><code>https://img.shields.io/crates/dv/rustc-serialize.svg</code></td>
</tr>
<tr><th data-keywords='PHP'> Packagist: </th>
<td><img src='/packagist/dm/doctrine/orm.svg' alt=''/></td>
<td><code>https://img.shields.io/packagist/dm/doctrine/orm.svg</code></td>
@ -282,6 +290,10 @@ Pixel-perfect &nbsp; Retina-ready &nbsp; Fast &nbsp; Consistent &nbsp; Hackable
<td><img src='/hackage/v/lens.svg' alt=''/></td>
<td><code>https://img.shields.io/hackage/v/lens.svg</code></td>
</tr>
<tr><th data-keywords='Rust'> Crates.io: </th>
<td><img src='/crates/v/rustc-serialize.svg' alt=''/></td>
<td><code>https://img.shields.io/crates/v/rustc-serialize.svg</code></td>
</tr>
<tr><th data-keywords='PHP'> Packagist: </th>
<td><img src='/packagist/v/symfony/symfony.svg' alt=''/></td>
<td><code>https://img.shields.io/packagist/v/symfony/symfony.svg</code></td>