Files
Eventment-API/index.js

67 lines
1.4 KiB
JavaScript

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}`);
});
});