Old ngn4 website
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.1 KiB

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);
});
}