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.

52 lines
1.4 KiB

8 years ago
  1. module.exports = function(set, app) {
  2. var keys = Object.keys(set.generators);
  3. for(var i = 0; i < keys.length; ++i) {
  4. var bindObj = {key: keys[i]}
  5. app.get('/i/' + keys[i], (function (req, res) {
  6. var key = this.key;
  7. var gen = set.generators[key];
  8. var agent = req.headers['user-agent'];
  9. var results = {
  10. genders: gen.genders,
  11. formats: {}
  12. };
  13. var formatKeys = Object.keys(gen.formats);
  14. for(var j = 0; j < formatKeys.length; ++j) {
  15. var format = gen.formats[formatKeys[j]];
  16. results.formats[formatKeys[j]] = format.name;
  17. }
  18. if(agent.indexOf('curl/') != -1 || req.query.hasOwnProperty('t')) {
  19. var str = '';
  20. for(var i = 0; i < results.genders.length; ++i) {
  21. if(i > 0) {
  22. str += '\n';
  23. }
  24. str += 'Gender: ' + results.genders[i];
  25. }
  26. var lastFormat = "";
  27. for(var j = 0; j < formatKeys.length; ++j) {
  28. var formatKey = formatKeys[j].split('.')[0];
  29. if(formatKey != lastFormat) {
  30. str += '\nFormat: ' + formatKey + ' ' + results.formats[formatKeys[j]];
  31. }
  32. lastFormat = formatKey;
  33. }
  34. res.header("Content-Type", "text/plain; charset=utf-8");
  35. res.end(str);
  36. } else {
  37. res.header("Content-Type", "application/json; charset=utf-8");
  38. res.end(JSON.stringify(results));
  39. }
  40. }).bind(bindObj));
  41. }
  42. }