UNPKG

2.21 kBJavaScriptView Raw
1
2var http = require( "http" ),
3 path = require( "path" ),
4 color = require( "colors" ),
5 Q = require( "q" ),
6 fs = require( "fs" ),
7 socketIO = require( "socket.io" ),
8 CoreModule = require( "./core/core" );
9
10var deferred = Q.defer(),
11 loadPromise = deferred.promise;
12
13
14// Main Class
15var Fast = function( options ){
16
17 console.log( '\n----------------------------'.yellow );
18 console.log( 'Preparing everything...'.yellow );
19
20 Core = CoreModule( path.join( __dirname, "core" ) );
21
22 CoreModule.load( options || {}, function(){
23
24 Core.environment.load();
25 Core.config.load();
26 Core.auth.load();
27 Core.api.load();
28
29 if( fs.existsSync( Core.config.globals.viewRoot ) )
30 Core.view.load();
31
32 Core.api = Core.api.services;
33
34 // Make Core object immutable
35 // Preventing malicious altering
36 CoreModule.lock();
37
38 deferred.resolve();
39 });
40
41 return {
42 listen : listen
43 };
44};
45
46var listen = function( port, callback ){
47
48 var server,
49 io;
50
51 loadPromise.then( function(){
52
53 if( typeof port == "function" || !port || isNaN( port ) ) {
54 callback = port;
55 port = Core.config.globals.port;
56
57 } else
58 Core.config.globals.port = port;
59
60 if( !callback ){
61 callback = function(){
62 console.log( 'Success!'.green );
63 console.log( '\nFast is running on port '.cyan + port.toString().cyan );
64 console.log( '\nAPI root folder path is '.cyan + Core.config.globals.apiRoot.cyan );
65 console.log( '----------------------------\n'.yellow );
66 }
67 }
68
69 if( Core.config.globals.useSSL ){
70 if( Core.config.globals.SSLKeys && Core.config.globals.SSLKeys.key && Core.config.globals.SSLKeys.cert )
71 server = https.createServer( Core.config.globals.SSLKeys, Core.app );
72 else
73 Core.error( "SSL keys are missing", true );
74
75 } else {
76 server = http.createServer( Core.app );
77 }
78
79 if( server ){
80 if( Core.config.globals.enableWebSocket && Core.config.globals.webSocketConnectionCallback ){
81 io = socketIO.listen( server, { log: Core.config.globals.environment != "production" } );
82
83 Core.socket( io, Core.config.globals.webSocketConnectionCallback );
84 }
85
86 server.listen( port, callback );
87 }
88 });
89};
90
91module.exports.createServer = Fast;
92module.exports.listen = listen;
\No newline at end of file