-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
119 lines (92 loc) · 2.86 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// BASE API SERVER SETUP
// =========================================================
var https = require('https');
var fs = require('fs');
var express = require('express');
var bodyParser = require('body-parser');
var multer = require('multer');
var methodOverride = require('method-override');
var morgan = require('morgan');
var expressValidator = require('express-validator');
var mongoose = require('mongoose');
var Response = require('./helper/ResponseHelper');
var env = process.env.NODE_ENV || "development";
var secrets = require('./config/secrets');
global.Log = require('./config/logger');
global.__coreDir = __dirname+"/";
// DATABASE CONNECTION
// =========================================================
mongoose.connect(secrets[env].mongodb);
var connected = false;
mongoose.connection
.on('connected', function () {
connected = true;
Log.i('MongoDB connection open to', secrets[env].mongodb);
})
.on('error', function (err) {
Log.e('MongoDB connection error: ', err);
})
.on('disconnected', function () {
if (connected) {
Log.w('MongoDB connection disconnected');
connected = false;
}
});
function gracefullyExit() {
mongoose.connection.close(function () {
Log.i('MongoDB connection closed due to app termination');
process.exit(0);
});
}
// TODO: Initialize Models
// EXPRESS SETUP
// =========================================================
var app = express();
app.set('port', process.env.PORT || 3000);
app.disable('x-powered-by');
if (env !== 'test')
app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: './incoming/' })); // Multipart uploads are moved in this directory
app.use(expressValidator());
app.use(methodOverride());
// ROUTES
// =========================================================
var api1 = require('./routes/v1');
app.use('/1', api1);
// ERROR HANDLING
// =========================================================
app.use(function (err, req, res, next) {
if(err) {
res.status(err.code);
res.json(err);
}
else {
next();
}
});
app.use(function (req, res, next) {
//if(req.response !== undefined) {
if(typeof(req.response) === "object") {
res.json(req.response);
}
else {
res.send(req.response);
}
/*}
else {
res.status(404);
res.json(new Response.error('NOT_FOUND', "'"+req.hostname+req.originalUrl + "' not found."));
}*/
});
// WEBSERVER
// =========================================================
var options = {
key: fs.readFileSync('./localhost.key'),
cert: fs.readFileSync('./localhost.cert')
};
var server = https.createServer(options, app);
server.listen(app.get('port'), function () {
Log.i('Server running on port ' + app.get('port'));
});