51 lines
1.5 KiB
Plaintext
Executable File
51 lines
1.5 KiB
Plaintext
Executable File
require('dotenv').config({ path: '.env' });
|
|
const express = require('express');
|
|
const formidable = require('formidable');
|
|
const routes = require('./routes/routes');
|
|
const MorganMiddleware = require('./middleware/MorganMiddleware');
|
|
|
|
const app = express();
|
|
|
|
app.use(MorganMiddleware);
|
|
|
|
app.use(express.json({ limit: '10mb' })); // parsing application/json
|
|
app.use(express.urlencoded({ extended: true })); // parsing application/x-www-form-urlencoded
|
|
// parsing form-data
|
|
app.use(async function (req, res, next) {
|
|
try {
|
|
let isMultipart = req.headers['content-type'].includes('multipart/form-data', 0);
|
|
if (isMultipart) {
|
|
let form = new formidable.IncomingForm();
|
|
let parseFormData = async function () {
|
|
return new Promise((resolve, reject) => {
|
|
form.parse(req, function (err, fields, files) {
|
|
if (err) {
|
|
reject(err);
|
|
return;
|
|
}
|
|
req.body = fields;
|
|
resolve(true);
|
|
})
|
|
})
|
|
}
|
|
await parseFormData();
|
|
}
|
|
} catch (e) {
|
|
}
|
|
next();
|
|
});
|
|
|
|
app.use(async function (req, res, next) {
|
|
// set control allowed headers
|
|
res.header('Access-Control-Allow-Origin', '*');
|
|
res.header('Access-Control-Allow-Methods', 'OPTIONS,GET,HEAD,PUT,PATCH,POST,DELETE');
|
|
res.header('Access-Control-Allow-Headers', 'Accept, Authorization, Content-Type, X-Requested-With, Range, x-api-key, x-forwarded-for');
|
|
next();
|
|
});
|
|
|
|
// api
|
|
routes.use(app);
|
|
|
|
app.listen(process.env.PORT, () => {
|
|
console.log('Service running at port ' + process.env.PORT);
|
|
}); |