Merge remote-tracking branch 'sanemat/chore/chrome-web-store-re-try'

This commit is contained in:
Thaddee Tyl 2016-04-08 23:32:12 +02:00
commit 4cbdf9ab4f
3 changed files with 70 additions and 1 deletions

View File

@ -26,7 +26,8 @@
"camp": "~16.0.0",
"semver": "~4.3.3",
"bower": "~1.4.1",
"promise": "~7.0.0"
"promise": "~7.0.0",
"chrome-web-store-item-property": "^1.1.2"
},
"devDependencies": {
"ass": "~0.0.6",

View File

@ -5007,6 +5007,54 @@ cache(function(data, match, sendBadge, request) {
});
}));
// Chrome web store integration
camp.route(/^\/chrome-web-store\/(v|d|price|rating|rating-count)\/(.*)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var type = match[1];
var storeId = match[2]; // eg, nimelepbpejjlbmoobocpfnjhihnpked
var format = match[3];
var badgeData = getBadgeData('chrome web store', data);
var url = 'https://chrome.google.com/webstore/detail/' + storeId + '?hl=en&gl=US';
var chromeWebStore = require('chrome-web-store-item-property');
request(url, function(err, res, buffer) {
if (err != null) {
badgeData.text[1] = 'inaccessible';
sendBadge(format, badgeData);
return;
}
chromeWebStore.convert(buffer)
.then(function (value) {
if (type === 'v') {
var vdata = versionColor(value.version);
badgeData.text[1] = vdata.version;
badgeData.colorscheme = vdata.color;
} else if (type === 'd') {
var downloads = value.interactionCount.UserDownloads;
badgeData.text[0] = 'downloads';
badgeData.text[1] = metric(downloads) + ' total';
badgeData.colorscheme = downloadCountColor(downloads);
} else if (type === 'price') {
badgeData.text[1] = value.price;
badgeData.colorscheme = 'brightgreen';
} else if (type === 'rating') {
var rating = Math.round(value.ratingValue * 100) / 100;
badgeData.text[0] = 'rating';
badgeData.text[1] = rating;
badgeData.colorscheme = floorCountColor(rating, 2, 3, 4);
} else if (type === 'rating-count') {
var ratingCount = value.ratingCount;
badgeData.text[0] = 'rating count';
badgeData.text[1] = metric(ratingCount) + ' total';
badgeData.colorscheme = floorCountColor(ratingCount, 5, 50, 500);
}
sendBadge(format, badgeData);
}).catch(function (err) {
badgeData.text[1] = 'invalid';
sendBadge(format, badgeData);
});
});
}));
// Any badge.
camp.route(/^\/(:|badge\/)(([^-]|--)*?)-(([^-]|--)*)-(([^-]|--)+)\.(svg|png|gif|jpg)$/,
function(data, match, end, ask) {

View File

@ -383,6 +383,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable
<td><img src='/packagecontrol/dt/Package%20Control.svg' alt=''/></td>
<td><code>https://img.shields.io/packagecontrol/dt/Package%20Control.svg</code></td>
</tr>
<tr><th data-keywords='chrome'> Chrome Web Store: </th>
<td><img src='/chrome-web-store/d/nimelepbpejjlbmoobocpfnjhihnpked.svg' alt=''/></td>
<td><code>https://img.shields.io/chrome-web-store/d/nimelepbpejjlbmoobocpfnjhihnpked.svg</code></td>
</tr>
</tbody></table>
<h3 id="version"> Version </h3>
<table class='badge'><tbody>
@ -518,6 +522,10 @@ Pixel-perfect &nbsp; Retina-ready &nbsp; Fast &nbsp; Consistent &nbsp; Hackable
<td><img src='/aur/version/yaourt.svg' alt=''/></td>
<td><code>https://img.shields.io/aur/version/yaourt.svg</code></td>
</tr>
<tr><th data-keywords='chrome'> Chrome Web Store: </th>
<td><img src='/chrome-web-store/v/nimelepbpejjlbmoobocpfnjhihnpked.svg' alt=''/></td>
<td><code>https://img.shields.io/chrome-web-store/v/nimelepbpejjlbmoobocpfnjhihnpked.svg</code></td>
</tr>
</tbody></table>
<h3 id="social"> Social </h3>
@ -765,6 +773,18 @@ Pixel-perfect &nbsp; Retina-ready &nbsp; Fast &nbsp; Consistent &nbsp; Hackable
<td><img src='/waffle/label/evancohen/smart-mirror/in%20progress.svg' alt=''/></td>
<td><code>https://img.shields.io/waffle/label/evancohen/smart-mirror/in%20progress.svg</code></td>
</tr>
<tr><th data-keywords='chrome'> Chrome Web Store: </th>
<td><img src='/chrome-web-store/price/nimelepbpejjlbmoobocpfnjhihnpked.svg' alt=''/></td>
<td><code>https://img.shields.io/chrome-web-store/price/nimelepbpejjlbmoobocpfnjhihnpked.svg</code></td>
</tr>
<tr><th data-keywords='chrome'> Chrome Web Store: </th>
<td><img src='/chrome-web-store/rating/nimelepbpejjlbmoobocpfnjhihnpked.svg' alt=''/></td>
<td><code>https://img.shields.io/chrome-web-store/rating/nimelepbpejjlbmoobocpfnjhihnpked.svg</code></td>
</tr>
<tr><th data-keywords='chrome'> Chrome Web Store: </th>
<td><img src='/chrome-web-store/rating-count/nimelepbpejjlbmoobocpfnjhihnpked.svg' alt=''/></td>
<td><code>https://img.shields.io/chrome-web-store/rating-count/nimelepbpejjlbmoobocpfnjhihnpked.svg</code></td>
</tr>
</tbody></table>
<h3 id="miscellaneous"> Longer Miscellaneous </h3>