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