Merge remote-tracking branch 'larsbrinkhoff/stackexchange'

This commit is contained in:
Thaddee Tyl 2015-12-27 23:48:11 +01:00
commit 4b6de8d6ff
2 changed files with 53 additions and 0 deletions

View File

@ -4520,6 +4520,51 @@ cache(function(data, match, sendBadge, request) {
sendBadge(format, badgeData);
}));
// StackExchange integration.
camp.route(/^\/stackexchange\/([^\/]+)\/([^\/])\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var site = match[1]; // eg, stackoverflow
var info = match[2]; // either `r`
var item = match[3]; // eg, 232250
var format = match[4];
var path;
if (info === 'r') {
path = 'users/'+item;
} else if (info === 't') {
path = 'tags/'+item+'/info';
}
var options = {
method: 'GET',
uri: 'https://api.stackexchange.com/2.2/'+path+'?site='+site,
gzip: true
}
var badgeData = getBadgeData(site, data);
request(options, function (err, res, buffer) {
if (err != null) {
badgeData.text[1] = 'inaccessible';
sendBadge(badgeData, format);
return;
}
try {
var data = JSON.parse(buffer.toString());
if (info === 'r') {
var reputation = data.items[0].reputation;
badgeData.text[1] = metric(reputation);
badgeData.colorscheme = floorCountColor(1000, 10000, 20000);
} else if (info === 't') {
var count = data.items[0].count;
badgeData.text[1] = metric(count)+' questions';
badgeData.colorscheme = floorCountColor(1000, 10000, 20000);
}
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) {

View File

@ -746,6 +746,14 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable
<td><img src='/ansible/role/3078.svg' alt=''/></td>
<td><code>https://img.shields.io/ansible/role/3078.svg</code></td>
</tr>
<tr><th> StackExchange: </th>
<td><img src='/stackexchange/tex/r/951.svg' alt=''/></td>
<td><code>https://img.shields.io/stackexchange/tex/r/951.svg</code></td>
</tr>
<tr><th> StackExchange: </th>
<td><img src='/stackexchange/stackoverflow/t/augeas.svg' alt=''/></td>
<td><code>https://img.shields.io/stackexchange/stackoverflow/t/augeas.svg</code></td>
</tr>
</tbody></table>
<h2 id="your-badge"> Your Badge </h2>