'use strict'; require('dotenv').config(); const { ROOT_PATH, LIB_PATH, API_CONFIG } = process.env; process.env.TZ='utc'; const apiConfig = require( `${ROOT_PATH}/${API_CONFIG}` ); const apps = require('./apps'); const express = require('express'); const cors = require('cors'); const compression = require('compression'); const morgan = require('morgan'); const helmet = require('helmet'); const bodyParser = require('body-parser'); const fileUpload = require('express-fileupload'); const middlewares = require( './lib//Middlewares.js' ); const mongoose = require('mongoose'); mongoose.connect( apiConfig.mongodb, { useNewUrlParser: true } ).then( ( val ) => { console.log( `MongoDB Connected : ${ apiConfig.mongodb }` ); });//catch throw error so service stops! const app = express(); const serverPort = process.env.SERVER_PORT || 3000; app.use( middlewares.Auth ); app.use( fileUpload({ limits: { fileSize: 4 * 1024 * 1024 }, abortOnLimit: true, limitHandler: (req,res,next) => { req.limitSize = true; }, }) ); app.use((req, res, next) => { if (req.limitSize) { res.status(413).send({message:"File size limit has been reached",status:"PAYLOAD_TOO_LARGE"}); }else{ next() } }); app.use(bodyParser.urlencoded({ extended: true, limit: '50mb' })); app.use(bodyParser.json({ limit: '50mb' })); app.use(morgan('dev')); app.use(helmet({ crossOriginResourcePolicy: false })); app.use(compression()); app.use(cors({ origin: '*', methods: [ 'GET', 'POST', 'PATCH', 'PUT', 'DELETE' ], allowedHeaders: ['Content-Type', 'Authorization'] })); app.use( middlewares.errorJSON ); app.use( apps ); app.use( middlewares.error404 ); app.listen( serverPort , function(err){ if( !err ){ console.log('API listen on port', serverPort ); }else{ console.log( err ); } });