-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
49 lines (37 loc) · 1.02 KB
/
app.js
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
const express = require('express');
const cors = require('cors');
const logger = require('morgan');
const timeout = require('connect-timeout');
// ENV loader
const dotenv = require('dotenv');
dotenv.config();
// MIDDLEWARES
const authMiddleware = require('./middlewares/auth.middleware');
const errorMiddleware = require('./middlewares/error.middleware');
const haltOnTimedout = require('./middlewares/timedout.middleware');
// ROUTES
const routes = require('./routes');
// INITIATE APP
const app = express();
// CORS
app.use(
cors({
origin: process.env.CORS_ORIGIN,
exposedHeaders: ['Content-Disposition'],
}),
);
// TIMEOUT
app.use(timeout('30s'));
// LOGGING
app.use(logger('combined'));
// BODY PARSER
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
// MIDDLEWARES
app.use(authMiddleware);
app.use(haltOnTimedout); // check if exceed 30s timeout
// ROUTE HANDLERS
app.use('/v1', routes.v1);
// ERROR MIDDLEWARE (SHOULD BE THE LAST HANDLER)
app.use(errorMiddleware);
module.exports = app;