UNPKG

5.99 kBJavaScriptView Raw
1'use strict';
2
3var _inherits = require('babel-runtime/helpers/inherits')['default'];
4
5var _get = require('babel-runtime/helpers/get')['default'];
6
7var _createClass = require('babel-runtime/helpers/create-class')['default'];
8
9var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
10
11var _core = require('babel-runtime/core-js')['default'];
12
13var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
14
15var _interopRequireWildcard = require('babel-runtime/helpers/interop-require-wildcard')['default'];
16
17_core.Object.defineProperty(exports, '__esModule', {
18 value: true
19});
20
21exports.createServer = createServer;
22
23var _MissingConfigException = require('./Exception/MissingConfigException');
24
25var _sessionParser = require('./ExpressMiddleware/SessionParser');
26
27var _sessionParser2 = _interopRequireWildcard(_sessionParser);
28
29var _sessionManager = require('./Session/SessionManager');
30
31var _sessionManager2 = _interopRequireWildcard(_sessionManager);
32
33var _socketIOConnection = require('./ExpressMiddleware/SocketIOConnection');
34
35var _socketIOConnection2 = _interopRequireWildcard(_socketIOConnection);
36
37var _static2 = require('./ExpressMiddleware/Static');
38
39var _static3 = _interopRequireWildcard(_static2);
40
41var _proxy = require('./ExpressMiddleware/Proxy');
42
43var _proxy2 = _interopRequireWildcard(_proxy);
44
45var _controllerManager = require('./Controller/ControllerManager');
46
47var _controllerManager2 = _interopRequireWildcard(_controllerManager);
48
49var _router = require('./Routing/Router');
50
51var _router2 = _interopRequireWildcard(_router);
52
53var _configure = require('./Core/Configure');
54
55var _configure2 = _interopRequireWildcard(_configure);
56
57var events = require('events');
58var fs = require('fs');
59var path = require('path');
60var express = require('express');
61var http = require('http');
62var socketio = require('socket.io');
63var cookieParser = require('cookie-parser');
64var bodyParser = require('body-parser');
65
66/**
67 * @class
68 */
69
70var Server = (function (_events$EventEmitter) {
71 /**
72 * Constructor
73 *
74 * @param {string|object} Path to config or a json object containing the configuration
75 * @extends events.EventEmitter
76 */
77
78 function Server(config) {
79 _classCallCheck(this, Server);
80
81 _get(_core.Object.getPrototypeOf(Server.prototype), 'constructor', this).call(this);
82 this._app = express();
83 this._http = http.Server(this._app);
84 this._sio = socketio(this._http);
85 if (typeof config !== 'undefined') this.config(config);
86 }
87
88 _inherits(Server, _events$EventEmitter);
89
90 _createClass(Server, [{
91 key: 'config',
92
93 /**
94 * Sets config for CakeJS
95 *
96 * This methods set default values for missing keys
97 *
98 * @param {string|object} Path to config or a json object containing the configuration
99 * @returns {void}
100 */
101 value: (function (_config) {
102 function config(_x) {
103 return _config.apply(this, arguments);
104 }
105
106 config.toString = function () {
107 return _config.toString();
108 };
109
110 return config;
111 })(function (config) {
112 _configure2['default'].config(config);
113 })
114 }, {
115 key: 'start',
116
117 /**
118 * Starts the CakeJS server
119 *
120 * @returns {Promise}
121 */
122 value: function start() {
123 var javascriptLibraryContent;
124 return _regeneratorRuntime.async(function start$(context$2$0) {
125 var _this = this;
126
127 while (1) switch (context$2$0.prev = context$2$0.next) {
128 case 0:
129 context$2$0.next = 2;
130 return _controllerManager2['default'].load(path.resolve(_configure2['default'].get('CakeJS.src', path.resolve('.')), 'Controller'));
131
132 case 2:
133 context$2$0.next = 4;
134 return _router2['default'].initialize();
135
136 case 4:
137
138 //Starts the web related services
139 _sessionManager2['default'].config(_configure2['default'].get('Session.name', 'cakejs_sessid'), _configure2['default'].get('Session.ttl', 1000 * 60 * 60 * 24));
140 this._app.use(cookieParser());
141 this._app.use(_sessionParser2['default'](_configure2['default'].get('Session.name', 'cakejs_sessid'), _configure2['default'].get('Session.ttl', 1000 * 60 * 60 * 24)));
142 this.emit('use', this._app);
143 javascriptLibraryContent = fs.readFileSync(path.resolve(__filename, '..', 'Client', 'client.js'));
144
145 this._app.get('/js/cakejs.js', function (request, response) {
146 response.writeHead(200, { 'content-type': 'text/javascript' });
147 response.write(javascriptLibraryContent);
148 response.end();
149 });
150 if (_configure2['default'].get('Static') !== null) {
151 this._app.use(bodyParser.urlencoded({ extended: false }));
152 this._app.use(_static3['default'](_configure2['default'].get('Static.webroot', '/var/www')));
153 } else if (_configure2['default'].get('Proxy') !== null) {
154 this._app.use(_proxy2['default'](_configure2['default'].get('Proxy.host', '127.0.0.1'), _configure2['default'].get('Proxy.port', 80)));
155 }
156 this._sio.set('authorization', _sessionParser2['default']());
157 this._sio.on('connection', _socketIOConnection2['default']());
158 context$2$0.next = 15;
159 return new _core.Promise(function (resolve) {
160 return _this._http.listen(_configure2['default'].get('Listen.port', 8080), function () {
161 resolve();
162 });
163 });
164
165 case 15:
166 case 'end':
167 return context$2$0.stop();
168 }
169 }, null, this);
170 }
171 }, {
172 key: 'stop',
173
174 /**
175 * Stops the CakeJS server
176 *
177 * @returns {Promise}
178 */
179 value: function stop() {
180 return _regeneratorRuntime.async(function stop$(context$2$0) {
181 var _this2 = this;
182
183 while (1) switch (context$2$0.prev = context$2$0.next) {
184 case 0:
185 context$2$0.next = 2;
186 return new _core.Promise(function (resolve) {
187 return _this2._http.close(resolve);
188 });
189
190 case 2:
191 case 'end':
192 return context$2$0.stop();
193 }
194 }, null, this);
195 }
196 }]);
197
198 return Server;
199})(events.EventEmitter);
200
201exports.Server = Server;
202
203function createServer() {
204 return new Server();
205}
206
207//Preloads managers
208
209//Build routes
\No newline at end of file