This commit is contained in:
2016-03-25 15:36:39 +01:00
commit 35f065e19e
21 changed files with 4157 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
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) {
var keys = Object.keys(set.generators);
var cache = {};
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+'"');
}
}
+27
View File
@@ -0,0 +1,27 @@
module.exports = function(set, app, data) {
var keys = Object.keys(set.generators);
var cache = {};
for(var i = 0; i < keys.length; ++i) {
var bindObj = {key: keys[i]}
var func = (function (req, res) {
var key = this.key;
var gen = set.generators[key];
if(!cache.hasOwnProperty(key)) {
data.generators[key].catId = key.split('/')[0];
cache[key] = JSON.stringify(data.generators[key]);
}
res.header("Content-Type", "application/json; charset=utf-8");
res.end(cache[key]);
}).bind(bindObj);
app.get('/d/' + keys[i], func);
if(i === 0) {
app.get('/d/default', func);
}
}
}
+81
View File
@@ -0,0 +1,81 @@
var MAX_COUNT = 64;
function generateName(req, res, set, cat, id, format, gender, count)
{
var key = this.key;
var agent = req.headers['user-agent'];
if(typeof(cat) != 'undefined') {
id = cat + '/' + id;
}
var gen = set.getGenerator(req.params.id);
if(typeof(gender) === 'undefined' && gen != null)
{
gender = gen.genders[0];
}
if(typeof(count) === 'undefined')
{
count = 1;
}
if(count > MAX_COUNT) {
count = MAX_COUNT;
}
if(agent.indexOf('curl/') != -1 || req.query.hasOwnProperty('t')) {
if(gen != null)
{
var results = "";
for(var i = 0; i < count; ++i) {
results += gen.generate(format, gender) + '\n';
}
res.header("Content-Type", "text/plain; charset=utf-8");
res.end(results);
} else {
res.header("Content-Type", "text/plain; charset=utf-8");
res.end("ERROR: GENERATOR NOT FOUND");
}
} else {
if(gen != null) {
var results = [];
for(var i = 0; i < count; ++i) {
results.push(gen.generate(format, gender));
}
res.header("Content-Type", "application/json; charset=utf-8");
res.end(JSON.stringify(results));
} else {
res.header("Content-Type", "application/json; charset=utf-8");
res.end(JSON.stringify(null));
}
}
}
module.exports = function(set, app) {
var min = 1;
var max = 32;
app.get('/g/:id', function (req, res) {
generateName(req, res, set, undefined, req.params.id);
});
app.get('/g/:cat/:id', function (req, res) {
generateName(req, res, set, req.params.cat, req.params.id);
});
app.get('/g/:cat/:id/:format', function (req, res) {
generateName(req, res, set, req.params.cat, req.params.id, req.params.format);
});
app.get('/g/:cat/:id/:format/:gender', function (req, res) {
generateName(req, res, set, req.params.cat, req.params.id, req.params.format, req.params.gender);
});
app.get('/g/:cat/:id/:format/:gender/:count', function (req, res) {
generateName(req, res, set, req.params.cat, req.params.id, req.params.format, req.params.gender, req.params.count);
});
}
+52
View File
@@ -0,0 +1,52 @@
module.exports = function(set, app) {
var keys = Object.keys(set.generators);
for(var i = 0; i < keys.length; ++i) {
var bindObj = {key: keys[i]}
app.get('/i/' + keys[i], (function (req, res) {
var key = this.key;
var gen = set.generators[key];
var agent = req.headers['user-agent'];
var results = {
genders: gen.genders,
formats: {}
};
var formatKeys = Object.keys(gen.formats);
for(var j = 0; j < formatKeys.length; ++j) {
var format = gen.formats[formatKeys[j]];
results.formats[formatKeys[j]] = format.name;
}
if(agent.indexOf('curl/') != -1 || req.query.hasOwnProperty('t')) {
var str = '';
for(var i = 0; i < results.genders.length; ++i) {
if(i > 0) {
str += '\n';
}
str += 'Gender: ' + results.genders[i];
}
var lastFormat = "";
for(var j = 0; j < formatKeys.length; ++j) {
var formatKey = formatKeys[j].split('.')[0];
if(formatKey != lastFormat) {
str += '\nFormat: ' + formatKey + ' ' + results.formats[formatKeys[j]];
}
lastFormat = formatKey;
}
res.header("Content-Type", "text/plain; charset=utf-8");
res.end(str);
} else {
res.header("Content-Type", "application/json; charset=utf-8");
res.end(JSON.stringify(results));
}
}).bind(bindObj));
}
}
+17
View File
@@ -0,0 +1,17 @@
module.exports = function(set, app) {
var setHeader = {
categories: set.categoryNames,
generators: {}
};
var genKeys = Object.keys(set.generators);
var catKeys = Object.keys(set.categoryNames);
for(var i = 0; i < genKeys.length; ++i) {
setHeader.generators[genKeys[i]] = set.generators[genKeys[i]].name;
}
app.get('/l/generators', function (req, res) {
res.header("Content-Type", "application/json; charset=utf-8");
res.end(JSON.stringify(setHeader));
});
}