67 lines
1.4 KiB
JavaScript
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}`);
|
|
});
|
|
});
|