-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
52 lines (43 loc) · 1.66 KB
/
server.js
File metadata and controls
52 lines (43 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const express = require('express');
const serverless = require('serverless-http');
if (process.env.NODE_ENV) {
console.log('process.env.NODE_ENV', process.env.NODE_ENV);
} else {
throw new Error('process.env.NODE_ENV is not defined!');
}
const config = require('./config');
require('./src/mongooseConnect');
// Middleware
const customisedBodyParser = require('./src/middleware/bodyParser');
const logRawRequestBody = require('./src/middleware/logRawRequestBody');
const verifySlackRequest = require('./src/middleware/verifySlackRequest');
const setRequestDomain = require('./src/middleware/setRequestDomain');
const setRequestUser = require('./src/middleware/setRequestUser');
const setRequestTextParams = require('./src/middleware/setRequestTextParams');
const errorHandler = require('./src/middleware/errorHandler');
const logRequest = require('./src/middleware/logRequest');
// Controllers
const handleSlackRequest = require('./src/handleSlackRequest');
const app = express();
app.use(customisedBodyParser);
app.use(logRawRequestBody);
app.use(setRequestDomain);
if (config[process.env.NODE_ENV].shouldVerifySlackRequest) {
console.log('Slack request verification is ENABLED');
app.use(verifySlackRequest);
} else {
console.log('Slack request verification is DISABLED');
}
app.use(setRequestUser);
app.use(setRequestTextParams);
app.use(logRequest);
app.get('/', (req, res) => {
res.send({ status: 'OK' });
});
app.post('/', (req, res, next) => {
handleSlackRequest(req, res, next);
});
app.use(errorHandler); // must be last middleware
const port = 3000;
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
module.exports.handler = serverless(app);