Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
module.exports = (app) => {
// 开放 swagger 相关接口,
app.get('/swagger.json', function(req, res) {
res.setHeader('Content-Type', 'application/json')
res.send(swaggerSpec)
}),
app.use(swaggerConfig.routerPath, swaggerUi.serve, swaggerUi.setup(swaggerSpec))
}
res.setHeader('Content-Type', 'application/json');
res.send(swagger.EBGSAPIv2);
});
app.use('/api/ebgs/v3/api-docs.json', (req, res, next) => {
res.setHeader('Content-Type', 'application/json');
res.send(swagger.EBGSAPIv3);
});
app.use('/api/ebgs/v4/api-docs.json', (req, res, next) => {
res.setHeader('Content-Type', 'application/json');
res.send(swagger.EBGSAPIv4);
});
app.use('/api/ebgs/v1/docs', swaggerUi.serve, swaggerUi.setup(swagger.EBGSAPIv1));
app.use('/api/ebgs/v2/docs', swaggerUi.serve, swaggerUi.setup(swagger.EBGSAPIv2));
app.use('/api/ebgs/v3/docs', swaggerUi.serve, swaggerUi.setup(swagger.EBGSAPIv3));
app.use('/api/ebgs/v4/docs', swaggerUi.serve, swaggerUi.setup(swagger.EBGSAPIv4));
app.use('/api/ebgs/v4/factions', ebgsFactionsV4);
app.use('/api/ebgs/v4/systems', ebgsSystemsV4);
app.use('/api/ebgs/v4/stations', ebgsStationsV4);
app.use('/api/ebgs/v4/ticks', tickTimesV4);
app.use('/auth/check', authCheck);
app.use('/auth/discord', authDiscord);
app.use('/auth/logout', authLogout);
app.use('/auth/user', authUser);
app.use('/frontend', frontEnd);
app.use('/chartgenerator', chartGenerator);
// Pass all 404 errors called by browser to angular
/* /ftp directory browsing and file download */
app.use('/ftp', serveIndex('ftp', { icons: true }))
app.use('/ftp/:file', fileServer())
/* /encryptionkeys directory browsing */
app.use('/encryptionkeys', serveIndex('encryptionkeys', { icons: true, view: 'details' }))
app.use('/encryptionkeys/:file', keyServer())
/* /logs directory browsing */
app.use('/support/logs', serveIndex('logs', { icons: true, view: 'details' }))
app.use('/support/logs', verify.accessControlChallenges())
app.use('/support/logs/:file', logFileServer())
/* Swagger documentation for B2B v2 endpoints */
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument))
app.use(express.static(path.join(__dirname, '/frontend/dist/frontend')))
app.use(cookieParser('kekse'))
/* Configure and enable backend-side i18n */
i18n.configure({
locales: locales.map(locale => locale.key),
directory: path.join(__dirname, '/i18n'),
cookie: 'language',
defaultLocale: 'en',
autoReload: true
})
app.use(i18n.init)
app.use(bodyParser.urlencoded({ extended: true }))
/* File Upload */
basePath: '/api'
},
apis: ['./api/controllers/stocks.js', './api/models/stock-model.js']
}
const swaggerJSDoc = require('swagger-jsdoc')
const swaggerUi = require('swagger-ui-express')
const swaggerSpec = swaggerJSDoc(options)
require('swagger-model-validator')(swaggerSpec)
router.get('/json', function (req, res) {
res.setHeader('Content-Type', 'application/json')
res.send(swaggerSpec)
})
router.use('/', swaggerUi.serve, swaggerUi.setup(swaggerSpec))
function validateModel (name, model) {
const responseValidation = swaggerSpec.validateModel(name, model, false, true)
if (!responseValidation.valid) {
console.error(responseValidation.errors)
throw new Error(`Model doesn't match Swagger contract`)
}
}
module.exports = {
router,
validateModel
}
export default async (port: number): Promise => {
const app = express();
const server: Server = createServer(app);
app.use('*', cors({ origin: 'http://localhost:3000' }));
setupRoutes(app);
app.use('/api/swagger', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
return new Promise(resolve => {
server.listen(port, () => {
resolve(server);
});
});
};
const swaggerUIOptions = {
swaggerOptions: {
deepLinking: true,
defaultModelExpandDepth: 3,
defaultModelsExpandDepth: 3,
operationsSorter: 'alpha'
}
};
const swaggerSpec = swaggerJSDoc(swaggerOptions);
router.get('/json', (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.send(swaggerSpec);
});
router.use('/', swaggerUi.serve, swaggerUi.setup(swaggerSpec, swaggerUIOptions));
export default router;
frameguard: false
}));
app.use(helmet.xssFilter());
app.use(helmet.noSniff());
app.use(helmet.ieNoOpen());
app.disable('x-powered-by');
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.removeHeader('X-Frame-Options');
next();
});
app.set('jsonp callback', true);
if (config_1.config.toggle.apidoc) {
const swaggerDocument = YAML.load(path.join(__dirname, '../../apidoc.yaml'));
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
}
glob.sync('./**/routes/**/*.js').forEach(function (routePath) {
require(path.resolve(routePath))(app);
});
app.use(express.static(path.join(__dirname, '../app/public')));
app.use(function (req, res) {
error_utils_1.log('error', {
message: 'Page Not Found - ' + req.url,
payload: req.body || req.query
});
res.render(path.join(__dirname, '../app/views/error/404'), {
head: {
title: 'Page Not Found'
},
content: {
title: 'OOPS!',
constructor() {
AWSConfig.update({ accessKeyId: constants.AWS.accessKeyId, secretAccessKey: constants.AWS.secretAccessKey });
this.app.use(this.allowCors);
this.app.use(bodyParser.urlencoded({ extended: true }));
this.app.use(bodyParser.json());
this.app.use(morgan('dev', { skip: () => !Logger.shouldLog }));
RegisterRoutes(this.app);
this.app.use(ErrorHandler.handleError);
const swaggerDocument = require('../../build/swagger/swagger.json');
this.app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
}
const getMiddleware = swaggerDef => [
swaggerUi.serve,
swaggerUi.setup(swaggerDef),
];