var app = require('express')(); var peliasConfig = require( 'pelias-config' ).generate().api; if( peliasConfig.accessLog ){ app.use( require( './middleware/access_log' )( peliasConfig.accessLog ) ); } /** ----------------------- middleware ----------------------- **/ app.use( require('./middleware/headers') ); app.use( require('./middleware/cors') ); app.use( require('./middleware/jsonp') ); /** ----------------------- sanitisers ----------------------- **/ var sanitisers = {}; sanitisers.place = require('./sanitiser/place'); sanitisers.suggest = require('./sanitiser/suggest'); sanitisers.search = require('./sanitiser/search'); sanitisers.coarse = require('./sanitiser/coarse'); sanitisers.reverse = require('./sanitiser/reverse'); /** ----------------------- controllers ----------------------- **/ var controllers = {}; controllers.index = require('./controller/index'); controllers.place = require('./controller/place'); controllers.search = require('./controller/search'); /** ----------------------- routes ----------------------- **/ // api root app.get( '/', controllers.index() ); // place API app.get( '/place', sanitisers.place.middleware, controllers.place() ); // suggest APIs app.get( '/suggest', sanitisers.search.middleware, controllers.search() ); app.get( '/suggest/nearby', sanitisers.suggest.middleware, controllers.search() ); app.get( '/suggest/coarse', sanitisers.coarse.middleware, controllers.search() ); // search APIs app.get( '/search', sanitisers.search.middleware, controllers.search() ); app.get( '/search/coarse', sanitisers.coarse.middleware, controllers.search() ); // reverse API app.get( '/reverse', sanitisers.reverse.middleware, controllers.search(undefined, require('./query/reverse')) ); /** ----------------------- error middleware ----------------------- **/ app.use( require('./middleware/404') ); app.use( require('./middleware/408') ); app.use( require('./middleware/500') ); module.exports = app;