UNPKG

3.24 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.createRouter = undefined;
7
8var _bodyParser = require('body-parser');
9
10var _bodyParser2 = _interopRequireDefault(_bodyParser);
11
12var _express = require('express');
13
14var _log = require('./log');
15
16var _log2 = _interopRequireDefault(_log);
17
18function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
20function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
21
22const jsonParser = _bodyParser2.default.json();
23
24const createRouter = exports.createRouter = (handlers, context) => {
25 (0, _log2.default)('create router with handlers: %s', Object.keys(handlers).join(', '));
26
27 const router = new _express.Router();
28
29 router.use(jsonParser);
30
31 if (handlers.enable) {
32 router.post('/enable', (req, res) => {
33 handlers.enable(req.body || {}, context);
34 res.sendStatus(200);
35 });
36 }
37
38 if (handlers.disable) {
39 router.post('/disable', (req, res) => {
40 handlers.disable(req.body || {}, context);
41 res.sendStatus(200);
42 });
43 }
44
45 if (handlers.conversation_added) {
46 router.post('/conversation_added', (req, res) => {
47 handlers.conversation_added(req.body || {}, context);
48 res.sendStatus(200);
49 });
50 }
51
52 if (handlers.conversation_removed) {
53 router.post('/conversation_removed', (req, res) => {
54 handlers.conversation_removed(req.body || {}, context);
55 res.sendStatus(200);
56 });
57 }
58
59 if (handlers.edit_subscription) {
60 router.post('/edit_subscription', (req, res) => {
61 handlers.edit_subscription(req.body || {}, context);
62 res.sendStatus(200);
63 });
64 }
65
66 if (handlers.delete_subscription) {
67 router.post('/delete_subscription', (req, res) => {
68 handlers.delete_subscription(req.body || {}, context);
69 res.sendStatus(200);
70 });
71 }
72
73 if (handlers.post) {
74 router.post('/post', (() => {
75 var _ref = _asyncToGenerator(function* (req, res) {
76 const params = req.body || {};
77 if (!params.user_id) {
78 return res.status(400).send('Missing user_id');
79 }
80 if (!params.data) {
81 return res.status(400).send('Missing data');
82 }
83 if (!params.context) {
84 return res.status(400).send('Missing context');
85 }
86 try {
87 const postResult = handlers.post(params, context);
88 const payload = postResult.then ? yield postResult : postResult;
89 if (payload) {
90 res.send(payload);
91 } else {
92 res.send({ success: true });
93 }
94 } catch (err) {
95 (0, _log2.default)('error handling post request', params, err);
96 res.sendStatus(500);
97 }
98 });
99
100 return function (_x, _x2) {
101 return _ref.apply(this, arguments);
102 };
103 })());
104 }
105
106 return router;
107};
\No newline at end of file