languages.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const http = require("http");
  2. const convertFileFormat = require("../src/fileFormatConverter");
  3. const httpServer = require("../src/httpServer");
  4. const parseURL = require("../src/parseURL");
  5. const jsl = require("svjsl");
  6. const languages = require("../src/languages");
  7. const settings = require("../settings");
  8. jsl.unused(http);
  9. const meta = {
  10. "name": "Languages",
  11. "desc": `Returns a list of supported and partially supported languages`,
  12. "usage": {
  13. "method": "GET",
  14. "url": `${settings.info.docsURL}/languages`,
  15. "supportedParams": [
  16. "format",
  17. "lang"
  18. ]
  19. }
  20. };
  21. /**
  22. * Calls this endpoint
  23. * @param {http.IncomingMessage} req The HTTP server request
  24. * @param {http.ServerResponse} res The HTTP server response
  25. * @param {Array<String>} url URL path array gotten from the URL parser module
  26. * @param {Object} params URL query params gotten from the URL parser module
  27. * @param {String} format The file format to respond with
  28. */
  29. const call = (req, res, url, params, format) => {
  30. jsl.unused([req, url, params]);
  31. let jokeLangs = languages.jokeLangs().map(jl => jl.code).sort();
  32. let sysLangs = languages.systemLangs().sort();
  33. let responseText = "";
  34. let langArray = [];
  35. let pl = languages.getPossibleLanguages();
  36. let lang = (params && params["lang"]) ? params["lang"] : settings.languages.defaultLanguage;
  37. Object.keys(pl).forEach(lc => {
  38. langArray.push({
  39. "code": lc,
  40. "name": pl[lc]
  41. });
  42. });
  43. if(format == "xml")
  44. {
  45. responseText = convertFileFormat.auto(format, {
  46. "defaultLanguage": settings.languages.defaultLanguage,
  47. "jokeLanguages": { "code": jokeLangs },
  48. "systemLanguages": { "code": sysLangs },
  49. "possibleLanguages": { "language": langArray },
  50. "timestamp": new Date().getTime()
  51. }, lang);
  52. }
  53. else
  54. {
  55. responseText = convertFileFormat.auto(format, {
  56. "defaultLanguage": settings.languages.defaultLanguage,
  57. "jokeLanguages": jokeLangs,
  58. "systemLanguages": sysLangs,
  59. "possibleLanguages": langArray,
  60. "timestamp": new Date().getTime()
  61. }, lang);
  62. }
  63. return httpServer.pipeString(res, responseText, parseURL.getMimeTypeFromFileFormatString(format));
  64. };
  65. module.exports = { meta, call };