helper.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 headers = { 'Server': 'Node' };
  38. const headerTypes = {
  39. plain: 'text/plain',
  40. json: 'application/json',
  41. html: 'text/html; charset=UTF-8'
  42. };
  43. headers['Content-Type'] = headerTypes[headerType];
  44. res.writeHead(200, headers);
  45. },
  46. responses: {
  47. jsonSerialization: (req, res) => {
  48. const HELLO_OBJ = { message: GREETING };
  49. self.addTfbHeaders(res, 'json');
  50. res.end(JSON.stringify(HELLO_OBJ));
  51. },
  52. plaintext: (req, res) => {
  53. self.addTfbHeaders(res, 'plain');
  54. res.end(GREETING);
  55. },
  56. routeNotImplemented: (req, res) => {
  57. res.writeHead(501, {'Content-Type': 'text/plain; charset=UTF-8'});
  58. const reason = { reason: "`" + req.url + "` is not an implemented route" };
  59. res.end(JSON.stringify(reason));
  60. }
  61. }
  62. };