1 |
|
2 |
|
3 | import bodyParser from 'body-parser'
|
4 | import { Router } from 'express'
|
5 |
|
6 | import log from './log'
|
7 |
|
8 | import type { BotContext, Handlers } from './types'
|
9 |
|
10 | const jsonParser = bodyParser.json()
|
11 |
|
12 | export const createRouter = (
|
13 | context: BotContext,
|
14 | handlers: Handlers,
|
15 | ): Router => {
|
16 | const router = new Router()
|
17 |
|
18 | router.use(jsonParser)
|
19 |
|
20 | if (handlers.enable) {
|
21 | router.post('/enable', (req, res) => {
|
22 | handlers.enable(req.body, context)
|
23 | res.sendStatus(200)
|
24 | })
|
25 | }
|
26 |
|
27 | if (handlers.disable) {
|
28 | router.post('/disable', (req, res) => {
|
29 | handlers.disable(req.body, context)
|
30 | res.sendStatus(200)
|
31 | })
|
32 | }
|
33 |
|
34 | if (handlers.conversation_added) {
|
35 | router.post('/conversation_added', (req, res) => {
|
36 | handlers.conversation_added(req.body, context)
|
37 | res.sendStatus(200)
|
38 | })
|
39 | }
|
40 |
|
41 | if (handlers.conversation_removed) {
|
42 | router.post('/conversation_removed', (req, res) => {
|
43 | handlers.conversation_removed(req.body, context)
|
44 | res.sendStatus(200)
|
45 | })
|
46 | }
|
47 |
|
48 | if (handlers.edit_subscription) {
|
49 | router.post('/edit_subscription', (req, res) => {
|
50 | handlers.edit_subscription(req.body, context)
|
51 | res.sendStatus(200)
|
52 | })
|
53 | }
|
54 |
|
55 | if (handlers.delete_subscription) {
|
56 | router.post('/delete_subscription', (req, res) => {
|
57 | handlers.delete_subscription(req.body, context)
|
58 | res.sendStatus(200)
|
59 | })
|
60 | }
|
61 |
|
62 | if (handlers.post) {
|
63 | router.post('/post', async (req, res) => {
|
64 | if (!params.user_id) {
|
65 | return res.status(400).send('Missing user_id')
|
66 | }
|
67 | if (!params.data) {
|
68 | return res.status(400).send('Missing data')
|
69 | }
|
70 | if (!params.context) {
|
71 | return res.status(400).send('Missing context')
|
72 | }
|
73 | try {
|
74 | const payload = await handlers.post(params, context)
|
75 | if (payload) {
|
76 | res.send(payload)
|
77 | } else {
|
78 | res.send({ success: true })
|
79 | }
|
80 | } catch (err) {
|
81 | log('error handling post request', params, err)
|
82 | res.sendStatus(500)
|
83 | }
|
84 | })
|
85 | }
|
86 |
|
87 | return router
|
88 | }
|