GitHub logos for social badges

See #337
This commit is contained in:
Thaddee Tyl 2015-05-31 13:24:04 +02:00
parent 5ffc6328ce
commit c948ece097
3 changed files with 54 additions and 3 deletions

20
load-logos.js Normal file
View File

@ -0,0 +1,20 @@
var fs = require('fs');
var path = require('path');
var loadLogos = function() {
var logos = {};
var logoFiles = fs.readdirSync(path.join(__dirname, 'logo'));
logoFiles.forEach(function(filename) {
if (filename[0] === '.') { return; }
// filename is eg, github.svg
var svg = fs.readFileSync(
path.join(__dirname, 'logo', filename)).toString();
// eg, github
var name = filename.slice(0, -('.svg'.length));
logos[name] = 'data:image/svg+xml;base64,' + Buffer(svg).toString('base64');
});
return logos;
};
module.exports = loadLogos;

3
logo/github.svg Normal file
View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="12 12 40 40" enable-background="new 12 12 40 40" xml:space="preserve">
<path fill="#333333" d="M32,13.4c-10.5,0-19,8.5-19,19c0,8.4,5.5,15.5,13,18c1,0.2,1.3-0.4,1.3-0.9c0-0.5,0-1.7,0-3.2 c-5.3,1.1-6.4-2.6-6.4-2.6C20,41.6,18.8,41,18.8,41c-1.7-1.2,0.1-1.1,0.1-1.1c1.9,0.1,2.9,2,2.9,2c1.7,2.9,4.5,2.1,5.5,1.6 c0.2-1.2,0.7-2.1,1.2-2.6c-4.2-0.5-8.7-2.1-8.7-9.4c0-2.1,0.7-3.7,2-5.1c-0.2-0.5-0.8-2.4,0.2-5c0,0,1.6-0.5,5.2,2 c1.5-0.4,3.1-0.7,4.8-0.7c1.6,0,3.3,0.2,4.7,0.7c3.6-2.4,5.2-2,5.2-2c1,2.6,0.4,4.6,0.2,5c1.2,1.3,2,3,2,5.1c0,7.3-4.5,8.9-8.7,9.4 c0.7,0.6,1.3,1.7,1.3,3.5c0,2.6,0,4.6,0,5.2c0,0.5,0.4,1.1,1.3,0.9c7.5-2.6,13-9.7,13-18.1C51,21.9,42.5,13.4,32,13.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 740 B

View File

@ -12,6 +12,7 @@ var fs = require('fs');
var LruCache = require('./lru-cache.js');
var badge = require('./badge.js');
var svg2img = require('./svg-to-img.js');
var loadLogos = require('./load-logos.js');
var querystring = require('querystring');
var serverSecrets;
try {
@ -23,6 +24,7 @@ var semver = require('semver');
var serverStartTime = new Date((new Date()).toGMTString());
var validTemplates = ['default', 'plastic', 'flat', 'flat-square', 'social'];
var logos = loadLogos();
// Analytics
@ -176,7 +178,8 @@ function cache(f) {
}
var cacheIndex = match[0] + '?label=' + data.label + '&style=' + data.style
+ '&logo=' + data.logo + '&logoWidth=' + data.logoWidth;
+ '&logo=' + data.logo + '&logoWidth=' + data.logoWidth
+ '&link=' + data.link;
// Should we return the data right away?
var cached = requestCache.get(cacheIndex);
var cachedVersionSent = false;
@ -2109,6 +2112,9 @@ cache(function(data, match, sendBadge, request) {
+ '&client_secret=' + serverSecrets.gh_client_secret;
}
var badgeData = getBadgeData('tag', data);
if (badgeData.template === 'social') {
badgeData.logo = badgeData.logo || logos.github;
}
// A special User-Agent is required:
// http://developer.github.com/v3/#user-agent-required
request(apiUrl, { headers: githubHeaders }, function(err, res, buffer) {
@ -2149,6 +2155,9 @@ cache(function(data, match, sendBadge, request) {
+ '&client_secret=' + serverSecrets.gh_client_secret;
}
var badgeData = getBadgeData('release', data);
if (badgeData.template === 'social') {
badgeData.logo = badgeData.logo || logos.github;
}
// A special User-Agent is required:
// http://developer.github.com/v3/#user-agent-required
request(apiUrl, { headers: githubHeaders }, function(err, res, buffer) {
@ -2192,6 +2201,9 @@ cache(function(data, match, sendBadge, request) {
+ '&client_secret=' + serverSecrets.gh_client_secret;
}
var badgeData = getBadgeData('downloads', data);
if (badgeData.template === 'social') {
badgeData.logo = badgeData.logo || logos.github;
}
// A special User-Agent is required:
// http://developer.github.com/v3/#user-agent-required
request(apiUrl, { headers: githubHeaders }, function(err, res, buffer) {
@ -2239,6 +2251,9 @@ cache(function(data, match, sendBadge, request) {
+ '&client_secret=' + serverSecrets.gh_client_secret;
}
var badgeData = getBadgeData('issues', data);
if (badgeData.template === 'social') {
badgeData.logo = badgeData.logo || logos.github;
}
// A special User-Agent is required:
// http://developer.github.com/v3/#user-agent-required
request(apiUrl, { headers: githubHeaders }, function(err, res, buffer) {
@ -2277,6 +2292,9 @@ cache(function(data, match, sendBadge, request) {
+ '&client_secret=' + serverSecrets.gh_client_secret;
}
var badgeData = getBadgeData('forks', data);
if (badgeData.template === 'social') {
badgeData.logo = badgeData.logo || logos.github;
}
// A special User-Agent is required:
// http://developer.github.com/v3/#user-agent-required
request(apiUrl, { headers: githubHeaders }, function(err, res, buffer) {
@ -2316,6 +2334,9 @@ cache(function(data, match, sendBadge, request) {
+ '&client_secret=' + serverSecrets.gh_client_secret;
}
var badgeData = getBadgeData('stars', data);
if (badgeData.template === 'social') {
badgeData.logo = badgeData.logo || logos.github;
}
// A special User-Agent is required:
// http://developer.github.com/v3/#user-agent-required
request(apiUrl, { headers: githubHeaders }, function(err, res, buffer) {
@ -2352,6 +2373,9 @@ cache(function(data, match, sendBadge, request) {
+ '&client_secret=' + serverSecrets.gh_client_secret;
}
var badgeData = getBadgeData('followers', data);
if (badgeData.template === 'social') {
badgeData.logo = badgeData.logo || logos.github;
}
// A special User-Agent is required:
// http://developer.github.com/v3/#user-agent-required
request(apiUrl, { headers: githubHeaders }, function(err, res, buffer) {
@ -2383,6 +2407,9 @@ cache(function(data, match, sendBadge, request) {
var format = match[3];
var apiUrl = 'https://api.github.com/repos/' + user + '/' + repo;
var badgeData = getBadgeData('license', data);
if (badgeData.template === 'social') {
badgeData.logo = badgeData.logo || logos.github;
}
// Using our OAuth App secret grants us 5000 req/hour
// instead of the standard 60 req/hour.
if (serverSecrets) {
@ -3692,7 +3719,7 @@ function getLabel(label, data) {
return data.label || label;
}
// data (URL query) can include `label`, `style`, `logo`, `logoWidth`.
// data (URL query) can include `label`, `style`, `logo`, `logoWidth`, `link`.
function getBadgeData(defaultLabel, data) {
var label = getLabel(defaultLabel, data);
var template = data.style || 'default';
@ -3709,7 +3736,8 @@ function getBadgeData(defaultLabel, data) {
colorscheme: 'lightgrey',
template: template,
logo: data.logo,
logoWidth: +data.logoWidth
logoWidth: +data.logoWidth,
links: data.link,
};
}