const jwt = require('jsonwebtoken'); const mongoose = require('mongoose'); const passport = require('passport'); const restify = require('restify'); const config = require('./config'); const auth = require('./strategies/auth')(passport); const validateJsonData = require('./lib/validateType.js'); /** * Initialize Server */ const server = restify.createServer({ name: config.name, version: config.version, }); /** * Middleware */ server.use(restify.plugins.acceptParser(server.acceptable)); server.use(restify.plugins.bodyParser({ hash: 'sha1', mapParams: true, multiples: true, })); server.use(restify.plugins.fullResponse()); server.use(restify.plugins.gzipResponse()); server.use(restify.plugins.queryParser({ mapParams: true })); server.use(auth.passport.initialize()); /** * Error checking */ server.post('*', validateJsonData); server.put('*', validateJsonData); /** * Start Server, Connect to DB & Require Routes */ server.listen(config.port, () => { // establish connection to mongodb mongoose.Promise = global.Promise; mongoose.connect( config.db.uri, { useCreateIndex: true, useFindAndModify: false, useNewUrlParser: true, }, ); const db = mongoose.connection; db.on('error', (err) => { console.error(err); process.exit(1); }); db.once('open', () => { require('./routes')(server, auth); console.log(`Server is listening on port ${config.port}`); }); });