-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
100 lines (89 loc) · 2.83 KB
/
app.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
'use strict';
// Setup Node Env
require('dotenv').config();
require('./modules/coreComponents/validateEnv')();
require('./modules/coreComponents/globalMethod')();
// Variables
var Hapi = require('hapi');
var fs = require('fs');
var async = require('async');
var path = require('path');
var gmailNode = require('gmail-node');
var serverTasks = [];
// Create a server with a host and port
var server = new Hapi.Server();
server.connection({
port: +process.env.PORT,
routes: {
cors: process.env.ALLOW_CROSS_DOMAIN === 'true' ? true : false
}
});
// MongoDB Connection
serverTasks.push((callback)=> {
require('./modules/coreComponents/mongodbConnection')(callback);
});
// Plugin Registration Operations
serverTasks.push((callback)=> {
require('./modules/coreComponents/hapiPlugin')(server, callback);
});
// Gmail Node Configuration
serverTasks.push((callback)=> {
let gmailConfig = {
"installed": {
"client_id": process.env.GMAIL_CLIENT_ID,
"project_id": process.env.GMAIL_PROJECT_ID,
"auth_uri": process.env.GMAIL_AUTH_URL,
"token_uri": process.env.GMAIL_TOKEN_URL,
"auth_provider_x509_cert_url": process.env.GMAIL_AUTH_PROVIDER_X509_CERT_URL,
"client_secret": process.env.GMAIL_CLIENT_SECRET,
"redirect_uris": [
process.env.GMAIL_REDIRECT_URIS_INDEX1,
process.env.GMAIL_REDIRECT_URIS_INDEX2
]
}
};
appSet('gmail', gmailNode);
gmailNode.init(gmailConfig, './token.json', callback);
});
// Route Configuration
serverTasks.push((callback)=> {
function applyRouteConfig(dirPath) {
var dirName = dirPath;
var data = fs.readdirSync(dirName);
data.forEach(function (dta) {
var path = dirName + '/' + dta;
if (fs.lstatSync(path).isDirectory()) {
applyRouteConfig(path);
} else if (dta.match(/.route./)) {
server.route(require(path));
}
});
}
applyRouteConfig(__dirname + '/api');
callback(null, 'Routes config successsfully');
});
// Global Module Event Register
serverTasks.push((callback)=> {
require('./modules/coreComponents/globalEventRegister')(callback);
});
//Running Bootstrap Task
serverTasks.push(function (callback) {
require('./modules/coreComponents/bootstrap')(callback);
});
// Start the server
async.series(serverTasks, (err, result)=> {
if (err) {
console.error('Error on Server Start ', err);
throw err;
} else {
server.start((err) => {
if (err) {
console.error(err);
throw err;
} else {
console.log('Environment: ', process.env.ENV_NAME);
console.log('Server running at:', server.info.uri);
}
});
}
});