|
|
|
const app = require('express')();
|
|
|
|
const swaggerJSDoc = require('swagger-jsdoc');
|
|
|
|
const swaggerUi = require('express-swaggerize-ui');
|
|
|
|
const peliasConfig = require( 'pelias-config' ).generate(require('./schema'));
|
|
|
|
|
|
|
|
if( peliasConfig.api.accessLog ){
|
|
|
|
app.use( require( './middleware/access_log' ).createAccessLogger( peliasConfig.api.accessLog ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
var swaggerSpec = swaggerJSDoc(require( './config/swagger'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.get('/api-docs.json', function(req, res) {
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
|
|
|
res.send(swaggerSpec);
|
|
|
|
});
|
|
|
|
|
|
|
|
app.use('/api-docs', swaggerUi());
|
|
|
|
/** ----------------------- pre-processing-middleware ----------------------- **/
|
|
|
|
|
|
|
|
app.use( require('./middleware/headers') );
|
|
|
|
app.use( require('./middleware/cors') );
|
|
|
|
app.use( require('./middleware/options') );
|
|
|
|
app.use( require('./middleware/jsonp') );
|
|
|
|
|
|
|
|
/** ----------------------- routes ----------------------- **/
|
|
|
|
|
|
|
|
|
|
|
|
const defaultRoutes = require('./routes/default');
|
|
|
|
defaultRoutes.addRoutes(app);
|
|
|
|
|
|
|
|
const v1 = require('./routes/v1');
|
|
|
|
v1.addRoutes(app, peliasConfig);
|
|
|
|
|
|
|
|
/** ----------------------- error middleware ----------------------- **/
|
|
|
|
|
|
|
|
app.use( require('./middleware/404') );
|
|
|
|
app.use( require('./middleware/500') );
|
|
|
|
|
|
|
|
module.exports = app;
|