var fs = require('fs'); var path = require('path'); var IMGDIR = dir = path.join(__dirname, '/../www-root/img/'); function existsSync(filename) { try { fs.accessSync(filename); return true; } catch(ex) { return false; } } module.exports = function(set, app, data, scriptMethods) { var keys = Object.keys(set.generators); var cache = {}; var fileNames = {}; for(var i = 0; i < keys.length; ++i) { var fileName = "bg_" + keys[i].split('/').join('_') + ".png"; if(existsSync(IMGDIR + fileName)) { fileName = "/img/" + fileName; } else { fileName = "bg_" + keys[i].split('/')[0] + ".png"; if(existsSync(IMGDIR + fileName)) { fileName = "/img/" + fileName; } else { fileName = null; } } var binding = {'json': JSON.stringify(fileName), 'fileName': fileName}; app.get('/b/' + keys[i], (function (req, res) { var agent = req.headers['user-agent']; res.header("Content-Type", "application/json; charset=utf-8"); if(agent.indexOf('curl/') != -1) { res.end(this.fileName); } else { res.end(this.json); } }).bind(binding)); console.log('[INFO] bg for "'+keys[i]+'" = "'+fileName+'"'); fileNames[keys[i]] = fileName; } scriptMethods.getBackgroundFromCookie = function(cookies) { var key; if(Object.prototype.hasOwnProperty.call(cookies, 'last_generator')) { key = cookies['last_generator']; } else { key = scriptMethods.getDefaultDataKey(); } return 'body { background-image: url(' + fileNames[key] + '); }' } }