helper.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. const Handlebars = require('handlebars');
  2. const GREETING = "Hello, World!";
  3. const self = module.exports = {
  4. additionalFortune: () => ({
  5. id: 0,
  6. message: 'Additional fortune added at request time.'
  7. }),
  8. fortunesTemplate: Handlebars.compile([
  9. "<!DOCTYPE html>",
  10. "<html>",
  11. "<head><title>Fortunes</title></head>",
  12. "<body>",
  13. "<table>",
  14. "<tr>",
  15. "<th>id</th>",
  16. "<th>message</th>",
  17. "</tr>",
  18. "{{#fortunes}}",
  19. "<tr>",
  20. "<td>{{id}}</td>",
  21. "<td>{{message}}</td>",
  22. "</tr>",
  23. "{{/fortunes}}",
  24. "</table>",
  25. "</body>",
  26. "</html>"
  27. ].join('')),
  28. randomTfbNumber: () => Math.floor(Math.random() * 10000) + 1,
  29. fillArray: (value, len) => {
  30. const arr = [];
  31. for (let i = 0; i < len; i++) {
  32. arr.push(value);
  33. }
  34. return arr;
  35. },
  36. addTfbHeaders: (res, headerType) => {
  37. const headerTypes = {
  38. plain: 'text/plain',
  39. json: 'application/json',
  40. html: 'text/html; charset=UTF-8'
  41. };
  42. res.setHeader('Server', 'Node');
  43. res.setHeader('Content-Type', headerTypes[headerType]);
  44. },
  45. responses: {
  46. jsonSerialization: (req, res) => {
  47. const HELLO_OBJ = { message: GREETING };
  48. self.addTfbHeaders(res, 'json');
  49. res.end(JSON.stringify(HELLO_OBJ));
  50. },
  51. plaintext: (req, res) => {
  52. self.addTfbHeaders(res, 'plain');
  53. res.end(GREETING);
  54. },
  55. routeNotImplemented: (req, res) => {
  56. res.writeHead(501, {'Content-Type': 'text/plain; charset=UTF-8'});
  57. const reason = { reason: "`" + req.url + "` is not an implemented route" };
  58. res.end(JSON.stringify(reason));
  59. }
  60. }
  61. };