diff --git a/badge.js b/badge.js
index 7114cf9..38bc7e4 100644
--- a/badge.js
+++ b/badge.js
@@ -15,20 +15,20 @@ try {
} catch(e) {}
canvasContext.font = '11px Verdana, "DejaVu Sans"';
-// cache templates
-var templates = {}
-var templateFiles = fs.readdirSync('templates')
+// cache templates.
+var templates = {};
+var templateFiles = fs.readdirSync('templates');
templateFiles.forEach(function(file) {
- templates[file] = fs.readFileSync(path.join('templates', file)).toString()
-})
+ templates[file] = fs.readFileSync(
+ path.join(__dirname, 'templates', file)).toString();
+});
-var colorscheme = require('./colorscheme.json');
+var colorscheme = require(path.join(__dirname, 'colorscheme.json'));
-function makeTemplate(colorscheme, template) {
+function makeTemplate(template) {
// Template crafting action below.
var template = templates[(template || 'default') + '-template.svg'];
- var imageTemplate = dot.template(''+template);
- return imageTemplate;
+ return dot.template(template);
}
var defaultTemplate = makeTemplate();
@@ -38,14 +38,10 @@ function optimize(string, callback) {
svgo.optimize(string, callback);
}
-function makeImage(data, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = {}
- }
+function makeImage(data, cb) {
var template = defaultTemplate;
- if (options.colorscheme || options.template) {
- template = makeTemplate(options.colorscheme, options.template);
+ if (data.template) {
+ template = makeTemplate(data.template);
}
if (data.colorscheme) {
data.colorA = colorscheme[data.colorscheme].colorA;
diff --git a/coverage.svg b/coverage.svg
index c285722..38226a7 100644
--- a/coverage.svg
+++ b/coverage.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/gh-badge.js b/gh-badge.js
index 0f0c91b..4810e0a 100755
--- a/gh-badge.js
+++ b/gh-badge.js
@@ -42,13 +42,10 @@ var status = process.argv[3];
var color = process.argv[4] || ':green';
var colorA = process.argv[5];
-var badgeOpts = {}
-
-if (style) {
- badgeOpts.template = style;
-}
-
var badgeData = {text: [subject, status]};
+if (style) {
+ badgeData.template = style;
+}
if (color[0] === ':') {
color = color.slice(1);
@@ -63,7 +60,7 @@ if (color[0] === ':') {
if (colorA) { badgeData.colorA = colorA; }
}
-badge(badgeData, badgeOpts, function produceOutput(svg) {
+badge(badgeData, function produceOutput(svg) {
if (format === 'svg') {
console.log(svg);
} else if (/png|jpg|gif/.test(format)) {
diff --git a/server.js b/server.js
index 7954aa4..879d51e 100644
--- a/server.js
+++ b/server.js
@@ -5,7 +5,6 @@ var camp = require('camp').start({
var https = require('https');
var request = require('request');
var fs = require('fs');
-var url = require('url');
var badge = require('./badge.js');
var svg2img = require('./svg-to-img.js');
var serverStartTime = new Date((new Date()).toGMTString());
@@ -99,25 +98,15 @@ var cacheFromIndex = Object.create(null);
function cache(f) {
return function getRequest(data, match, end, ask) {
- // parse querystring for specifying template
- var reqURL = url.parse(ask.req.url, true);
- var badgeOpts = {
- template: 'default'
- };
- var style = reqURL.query.style || 'default';
- if (style && validTemplates.indexOf(style) > -1) {
- badgeOpts.template = style;
- };
-
// Cache management - no cache, so it won't be cached by GitHub's CDN.
ask.res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
incrMonthlyAnalytics(analytics.vendorMonthly);
- var cacheIndex = match[0] + '?label=' + data.label;
+ var cacheIndex = match[0] + '?label=' + data.label + '&style=' + data.style;
// Should we return the data right away?
var cached = cacheFromIndex[cacheIndex];
if (cached != null) {
- badge(cached.badgeData, badgeOpts, makeSend(cached.format, ask.res, end));
+ badge(cached.badgeData, makeSend(cached.format, ask.res, end));
return;
}
@@ -127,7 +116,7 @@ function cache(f) {
var badgeData = getBadgeData('vendor', data);
badgeData.text[1] = 'unresponsive';
serverUnresponsive = true;
- badge(badgeData, badgeOpts, makeSend('svg', ask.res, end));
+ badge(badgeData, makeSend('svg', ask.res, end));
}, 25000);
f(data, match, function sendBadge(format, badgeData) {
@@ -952,7 +941,12 @@ function getLabel(label, data) {
function getBadgeData(defaultLabel, data) {
var label = getLabel(defaultLabel, data);
- return {text:[label, 'n/a'], colorscheme:'lightgrey'};
+ var template = data.style || 'default';
+ if (data.style && validTemplates.indexOf(data.style) > -1) {
+ template = data.style;
+ };
+
+ return {text:[label, 'n/a'], colorscheme:'lightgrey', template:template};
}
function makeSend(format, askres, end) {