formats.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 settings = require("../settings");
  7. jsl.unused(http);
  8. const meta = {
  9. "name": "Formats",
  10. "desc": "Returns a list of all available response file formats",
  11. "usage": {
  12. "method": "GET",
  13. "url": `${settings.info.docsURL}/formats`,
  14. "supportedParams": [
  15. "format",
  16. "lang"
  17. ]
  18. }
  19. };
  20. /**
  21. * Calls this endpoint
  22. * @param {http.IncomingMessage} req The HTTP server request
  23. * @param {http.ServerResponse} res The HTTP server response
  24. * @param {Array<String>} url URL path array gotten from the URL parser module
  25. * @param {Object} params URL query params gotten from the URL parser module
  26. * @param {String} format The file format to respond with
  27. */
  28. const call = (req, res, url, params, format) => {
  29. jsl.unused([req, url, params]);
  30. let responseText = "";
  31. let lang = (params && params["lang"]) ? params["lang"] : settings.languages.defaultLanguage;
  32. if(format != "xml")
  33. {
  34. responseText = convertFileFormat.auto(format, {
  35. "error": false,
  36. "formats": settings.jokes.possible.formats,
  37. "timestamp": new Date().getTime()
  38. }, lang);
  39. }
  40. else if(format == "xml")
  41. {
  42. responseText = convertFileFormat.auto(format, {
  43. "error": false,
  44. "formats": {"format": settings.jokes.possible.formats},
  45. "timestamp": new Date().getTime()
  46. }, lang);
  47. }
  48. httpServer.pipeString(res, responseText, parseURL.getMimeTypeFromFileFormatString(format));
  49. };
  50. module.exports = { meta, call };