helper.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. const Handlebars = require('handlebars');
  2. const GREETING = "Hello, World!";
  3. const headerTypes = {
  4. plain: 'text/plain',
  5. json: 'application/json',
  6. html: 'text/html; charset=UTF-8'
  7. };
  8. const self = module.exports = {
  9. additionalFortune: () => ({
  10. id: 0,
  11. message: 'Additional fortune added at request time.'
  12. }),
  13. fortunesTemplate: Handlebars.compile([
  14. "<!DOCTYPE html>",
  15. "<html>",
  16. "<head><title>Fortunes</title></head>",
  17. "<body>",
  18. "<table>",
  19. "<tr>",
  20. "<th>id</th>",
  21. "<th>message</th>",
  22. "</tr>",
  23. "{{#fortunes}}",
  24. "<tr>",
  25. "<td>{{id}}</td>",
  26. "<td>{{message}}</td>",
  27. "</tr>",
  28. "{{/fortunes}}",
  29. "</table>",
  30. "</body>",
  31. "</html>"
  32. ].join('')),
  33. randomTfbNumber: () => Math.floor(Math.random() * 10000) + 1,
  34. fillArray: (value, len) => {
  35. const arr = [];
  36. for (let i = 0; i < len; i++) {
  37. arr.push(value);
  38. }
  39. return arr;
  40. },
  41. addTfbHeaders: (res, headerType) => {
  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. };