parent
2fbb1b6bf0
commit
a6563d2968
95
server.js
95
server.js
|
@ -3107,6 +3107,101 @@ cache(function(data, match, sendBadge, request) {
|
|||
})}
|
||||
));
|
||||
|
||||
// DUB download integration
|
||||
camp.route(/^\/dub\/(dd|dw|dm|dt)\/([^\/]+)(?:\/([^\/]+))?\.(svg|png|gif|jpg|json)$/,
|
||||
cache(function (data, match, sendBadge, request) {
|
||||
var info = match[1]; // downloads (dd - daily, dw - weekly, dm - monthly, dt - total)
|
||||
var pkg = match[2]; // package name, e.g. vibe-d
|
||||
var version = match[3]; // version (1.2.3 or latest)
|
||||
var format = match[4];
|
||||
var apiUrl = 'http://code.dlang.org/api/packages/'+pkg;
|
||||
if (version)
|
||||
apiUrl += '/' + version;
|
||||
apiUrl += '/stats';
|
||||
var badgeData = getBadgeData('dub', data);
|
||||
request(apiUrl, function(err, res, buffer) {
|
||||
if (err != null) {
|
||||
badgeData.text[1] = 'inaccessible';
|
||||
sendBadge(format, badgeData);
|
||||
}
|
||||
try {
|
||||
var data = JSON.parse(buffer);
|
||||
if (info.charAt(0) === 'd') {
|
||||
badgeData.text[0] = getLabel('downloads', data);
|
||||
var downloads;
|
||||
switch (info.charAt(1)) {
|
||||
case 'm':
|
||||
downloads = data.downloads.monthly;
|
||||
badgeData.text[1] = metric(downloads) + '/month';
|
||||
break;
|
||||
case 'w':
|
||||
downloads = data.downloads.weekly;
|
||||
badgeData.text[1] = metric(downloads) + '/week';
|
||||
break;
|
||||
case 'd':
|
||||
downloads = data.downloads.daily;
|
||||
badgeData.text[1] = metric(downloads) + '/day';
|
||||
break;
|
||||
case 't':
|
||||
downloads = data.downloads.total;
|
||||
badgeData.text[1] = metric(downloads);
|
||||
break;
|
||||
}
|
||||
if (version) {
|
||||
badgeData.text[1] += ' ' + versionColor(version).version;
|
||||
}
|
||||
badgeData.colorscheme = downloadCountColor(downloads);
|
||||
sendBadge(format, badgeData);
|
||||
}
|
||||
} catch(e) {
|
||||
badgeData.text[1] = 'invalid';
|
||||
sendBadge(format, badgeData);
|
||||
}
|
||||
});
|
||||
}));
|
||||
|
||||
// DUB license and version integration
|
||||
camp.route(/^\/dub\/(v|l)\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
|
||||
cache(function (data, match, sendBadge, request) {
|
||||
var info = match[1]; // (v - version, l - license)
|
||||
var pkg = match[2]; // package name, e.g. vibe-d
|
||||
var format = match[3];
|
||||
var apiUrl = 'http://code.dlang.org/api/packages/'+pkg;
|
||||
if (info === 'v')
|
||||
apiUrl += '/latest';
|
||||
else if (info === 'l')
|
||||
apiUrl += '/latest/info';
|
||||
var badgeData = getBadgeData('dub', data);
|
||||
request(apiUrl, function(err, res, buffer) {
|
||||
if (err != null) {
|
||||
badgeData.text[1] = 'inaccessible';
|
||||
sendBadge(format, badgeData);
|
||||
}
|
||||
try {
|
||||
var data = JSON.parse(buffer);
|
||||
if (info === 'v') {
|
||||
var vdata = versionColor(data);
|
||||
badgeData.text[1] = vdata.version;
|
||||
badgeData.colorscheme = vdata.color;
|
||||
sendBadge(format, badgeData);
|
||||
} else if (info == 'l') {
|
||||
var license = data.info.license;
|
||||
badgeData.text[0] = 'license';
|
||||
if (license == null) {
|
||||
badgeData.text[1] = 'Unknown';
|
||||
} else {
|
||||
badgeData.text[1] = license;
|
||||
badgeData.colorscheme = 'blue';
|
||||
}
|
||||
sendBadge(format, badgeData);
|
||||
}
|
||||
} catch(e) {
|
||||
badgeData.text[1] = 'invalid';
|
||||
sendBadge(format, badgeData);
|
||||
}
|
||||
});
|
||||
}));
|
||||
|
||||
// Any badge.
|
||||
camp.route(/^\/(:|badge\/)(([^-]|--)+)-(([^-]|--)+)-(([^-]|--)+)\.(svg|png|gif|jpg)$/,
|
||||
function(data, match, end, ask) {
|
||||
|
|
24
try.html
24
try.html
|
@ -271,6 +271,22 @@ Pixel-perfect Retina-ready Fast Consistent Hackable
|
|||
<td><img src='/puppetforge/dt/camptocamp/openldap.svg' alt=''/></td>
|
||||
<td><code>https://img.shields.io/puppetforge/dt/camptocamp/openldap.svg</code></td>
|
||||
</tr>
|
||||
<tr><th data-keywords='dub'> DUB: </th>
|
||||
<td><img src='/dub/dd/vibe-d.svg' alt=''/></td>
|
||||
<td><code>https://img.shields.io/dub/dd/vibe-d.svg</code></td>
|
||||
</tr>
|
||||
<tr><th data-keywords='dub'> DUB: </th>
|
||||
<td><img src='/dub/dw/vibe-d.svg' alt=''/></td>
|
||||
<td><code>https://img.shields.io/dub/dw/vibe-d.svg</code></td>
|
||||
</tr>
|
||||
<tr><th data-keywords='dub'> DUB: </th>
|
||||
<td><img src='/dub/dm/vibe-d/latest.svg' alt=''/></td>
|
||||
<td><code>https://img.shields.io/dub/dm/vibe-d/latest.svg</code></td>
|
||||
</tr>
|
||||
<tr><th data-keywords='dub'> DUB: </th>
|
||||
<td><img src='/dub/dt/vibe-d/0.7.23.svg' alt=''/></td>
|
||||
<td><code>https://img.shields.io/dub/dt/vibe-d/0.7.23.svg</code></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<h3 id="version"> Version </h3>
|
||||
<table class='badge'><tbody>
|
||||
|
@ -382,6 +398,10 @@ Pixel-perfect Retina-ready Fast Consistent Hackable
|
|||
<td><img src='/ctan/v/tex.svg' alt=''/></td>
|
||||
<td><code>https://img.shields.io/ctan/v/tex.svg</code></td>
|
||||
</tr>
|
||||
<tr><th data-keywords='dub'> DUB: </th>
|
||||
<td><img src='/dub/v/vibe-d.svg' alt=''/></td>
|
||||
<td><code>https://img.shields.io/dub/v/vibe-d.svg</code></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
<h3 id="miscellaneous"> Miscellaneous </h3>
|
||||
|
@ -529,6 +549,10 @@ Pixel-perfect Retina-ready Fast Consistent Hackable
|
|||
<td><img src='/gem/u/raphink.svg' alt=''/></td>
|
||||
<td><code>https://img.shields.io/gem/u/raphink.svg</code></td>
|
||||
</tr>
|
||||
<tr><th data-keywords='dub'> DUB: </th>
|
||||
<td><img src='/dub/l/vibe-d.svg' alt=''/></td>
|
||||
<td><code>https://img.shields.io/dub/l/vibe-d.svg</code></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
<h2 id="your-badge"> Your Badge </h2>
|
||||
|
|
Loading…
Reference in New Issue
Block a user