UNPKG

2.05 kBJavaScriptView Raw
1// @flow
2
3import bodyParser from 'body-parser'
4import { Router } from 'express'
5
6import log from './log'
7
8import type { BotContext, Handlers } from './types'
9
10const jsonParser = bodyParser.json()
11
12export 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}