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

8 years ago
  1. var MAX_COUNT = 64;
  2. function generateName(req, res, set, cat, id, format, gender, count)
  3. {
  4. var key = this.key;
  5. var agent = req.headers['user-agent'];
  6. if(typeof(cat) != 'undefined') {
  7. id = cat + '/' + id;
  8. }
  9. var gen = set.getGenerator(req.params.id);
  10. if(typeof(gender) === 'undefined' && gen != null)
  11. {
  12. gender = gen.genders[0];
  13. }
  14. if(typeof(count) === 'undefined')
  15. {
  16. count = 1;
  17. }
  18. if(count > MAX_COUNT) {
  19. count = MAX_COUNT;
  20. }
  21. if(agent.indexOf('curl/') != -1 || req.query.hasOwnProperty('t')) {
  22. if(gen != null)
  23. {
  24. var results = "";
  25. for(var i = 0; i < count; ++i) {
  26. results += gen.generate(format, gender) + '\n';
  27. }
  28. res.header("Content-Type", "text/plain; charset=utf-8");
  29. res.end(results);
  30. } else {
  31. res.header("Content-Type", "text/plain; charset=utf-8");
  32. res.end("ERROR: GENERATOR NOT FOUND");
  33. }
  34. } else {
  35. if(gen != null) {
  36. var results = [];
  37. for(var i = 0; i < count; ++i) {
  38. results.push(gen.generate(format, gender));
  39. }
  40. res.header("Content-Type", "application/json; charset=utf-8");
  41. res.end(JSON.stringify(results));
  42. } else {
  43. res.header("Content-Type", "application/json; charset=utf-8");
  44. res.end(JSON.stringify(null));
  45. }
  46. }
  47. }
  48. module.exports = function(set, app) {
  49. var min = 1;
  50. var max = 32;
  51. app.get('/g/:id', function (req, res) {
  52. generateName(req, res, set, undefined, req.params.id);
  53. });
  54. app.get('/g/:cat/:id', function (req, res) {
  55. generateName(req, res, set, req.params.cat, req.params.id);
  56. });
  57. app.get('/g/:cat/:id/:format', function (req, res) {
  58. generateName(req, res, set, req.params.cat, req.params.id, req.params.format);
  59. });
  60. app.get('/g/:cat/:id/:format/:gender', function (req, res) {
  61. generateName(req, res, set, req.params.cat, req.params.id, req.params.format, req.params.gender);
  62. });
  63. app.get('/g/:cat/:id/:format/:gender/:count', function (req, res) {
  64. generateName(req, res, set, req.params.cat, req.params.id, req.params.format, req.params.gender, req.params.count);
  65. });
  66. }