123 lines
3.8 KiB
JavaScript
123 lines
3.8 KiB
JavaScript
var cors = require('cors')
|
|
const express = require('express');
|
|
const app = express();
|
|
const bodyParser = require('body-parser');
|
|
const multer = require('multer');
|
|
const config = require('../common/config/env.config.js');
|
|
const AuthorizationRouter = require('../authorization/routes.config');
|
|
const UsersRouter = require('../src/users/routes.config');
|
|
const EndpointsRouter = require('../src/endpoints/routes.config');
|
|
const ProjectRouter = require('../src/project/routes.config');
|
|
const HeadersRouter = require('../src/headers/routes.config');
|
|
const ItemsRouter = require('../src/items/routes.config');
|
|
const LogingRouter = require('../src/loging/routes.config');
|
|
const swaggerUI = require("swagger-ui-express");
|
|
const swaggerJsDoc = require("swagger-jsdoc");
|
|
const PORT = config.port || 8080;
|
|
const path = require('path');
|
|
app.use(function (req, res, next) {
|
|
res.header('Access-Control-Allow-Origin', '*');
|
|
res.header('Access-Control-Allow-Credentials', 'true');
|
|
res.header('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
|
|
res.header('Access-Control-Expose-Headers', 'Content-Length');
|
|
res.header('Access-Control-Allow-Headers', 'Accept, Authorization, Content-Type, X-Requested-With, Range');
|
|
if (req.method === 'OPTIONS') {
|
|
return res.send(200);
|
|
} else {
|
|
return next();
|
|
}
|
|
});
|
|
|
|
|
|
app.use(cors({
|
|
origin:['http://localhost:8080'],
|
|
credentials:true
|
|
}));
|
|
app.use(function (req, res, next) {
|
|
res.header('Access-Control-Allow-Origin', '*');
|
|
res.header('Access-Control-Allow-Credentials', 'true');
|
|
res.header('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
|
|
res.header('Access-Control-Expose-Headers', 'Content-Length');
|
|
res.header('Access-Control-Allow-Headers', 'Accept, Authorization, Content-Type, X-Requested-With, Range');
|
|
if (req.method === 'OPTIONS') {
|
|
return res.sendStatus(200);
|
|
} else {
|
|
return next();
|
|
}
|
|
});
|
|
const options = {
|
|
definition: {
|
|
openapi: "3.0.0",
|
|
info: {
|
|
title: "LHDN API Simulation API",
|
|
version: "1.0.1",
|
|
description: "LHDN API Simulation API",
|
|
},
|
|
servers: [
|
|
{
|
|
url: "http://localhost:"+PORT,
|
|
},
|
|
],
|
|
},
|
|
apis: ["./docs/*.yaml"],
|
|
};
|
|
|
|
const specs = swaggerJsDoc(options);
|
|
app.use("/apidocs", swaggerUI.serve, swaggerUI.setup(specs));
|
|
|
|
app.use(bodyParser.json())
|
|
|
|
|
|
|
|
function postTrimmer(req, res, next) {
|
|
|
|
if (req.method === 'POST' || req.method === 'PATCH') {
|
|
for (const [key, value] of Object.entries(req.body)) {
|
|
if (typeof(value) === 'string')
|
|
req.body[key] = value.trim();
|
|
}
|
|
}
|
|
if (req.method === 'GET') {
|
|
for (const [key, value] of Object.entries(req.query)) {
|
|
if (typeof(value) === 'string')
|
|
req.query[key] = value.trim();
|
|
}
|
|
}
|
|
next();
|
|
}
|
|
|
|
const storage = multer.diskStorage({
|
|
destination: function (req, file, cb) {
|
|
cb(null, 'uploads')
|
|
},
|
|
filename: function (req, file, cb) {
|
|
const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)
|
|
cb(null, uniqueSuffix+'.'+file.originalname)
|
|
}
|
|
})
|
|
|
|
const multerMid = multer({
|
|
storage: storage,
|
|
// dest: 'files/',
|
|
limits: {
|
|
// no larger than 5mb.
|
|
fileSize: 2 * 1024 * 1024,
|
|
},
|
|
});
|
|
|
|
app.use('/download', express.static(path.join(__dirname, '../download')));
|
|
app.use(multerMid.single('uploadFile'));
|
|
app.use(postTrimmer);
|
|
//app.use(express.static('uploads'))
|
|
app.use(express.static('../download'))
|
|
//console.log(path.join(__dirname, '../download'))
|
|
//
|
|
AuthorizationRouter.routesConfig(app);
|
|
UsersRouter.routesConfig(app);
|
|
EndpointsRouter.routesConfig(app);
|
|
ProjectRouter.routesConfig(app);
|
|
HeadersRouter.routesConfig(app);
|
|
ItemsRouter.routesConfig(app);
|
|
LogingRouter.routesConfig(app);
|
|
|
|
module.exports = app; |