Merge remote-tracking branch 'kstep/patch-1'
This commit is contained in:
commit
13fb4740fc
49
server.js
49
server.js
|
@ -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) {
|
||||
|
|
12
try.html
12
try.html
|
@ -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 Retina-ready Fast Consistent 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>
|
||||
|
|
Loading…
Reference in New Issue
Block a user