Example #1
0
		create : function(params, callback){
			var bus = new Bus();
			
			var ref = this;
			var m = this._getSuper();
			
			bus.on('start', function(){
				StateMachine.getStartState(EMAIL.name, function(err, data){
					if(err != null){
						callback(err, null);
						return;
					}else{
						startState = data.data[0].name;
						params['status'] = startState; // Start State
						
						bus.fire('stateSet');
					}
				});
			});
			
			bus.on('stateSet', function(){
				m.call(ref, params, callback);
			});
			
			bus.fire('start');
		},
		getSplitExperimentById : function(id, callback){
			var bus = new Bus();
			
			var ref = this;
			bus.on('start', function(){
				ref.getById(id, function(err, data){
					if(err){
						callback(err, null);// Respond back with error
					}else{
						//Get Links
						var experiment = data.data;
						bus.fire('experiment_fetched', experiment);
					}
				});
			});
			
			bus.on('experiment_fetched', function(experiment){
				linksImpl.search(function(err, data){
					if(err){
						callback(err);
					}else{
						var links = data.data;
						experiment.links = links;
						callback(null,response.success(experiment, 1, codes.success.RECORD_FETCHED([ref.displayName, id])));
					}
				}, 'experimentId:eq:' + experiment.id + "___isDisabled:eq:0");
			});
			
			bus.fire('start');
		},
Example #3
0
 function boot() {
     // Start client session manager
     sessionManager.start(config.get("session"));
     // Load request routes
     routerLoader.load({
         autoLoader: autoLoader,
         httpConnection: httpConnection,
         socketIOConnection: socketIOConnection,
         sessionManager: sessionManager,
         viewEngine: viewEngine
     });
     // Bind registed service providers
     serviceProviderRegister(serviceContainer);
     // Load autoload classes
     autoLoader.loadConfiguration(config.get("app.autoload"));
     // Start HTTP connection listener
     httpConnection.listen(httpServer);
     // Start Socket.io connection listener
     socketIOConnection.listen(httpServer, sessionManager);
     // Start http server
     httpServer.listen(config.get("app.port"), sessionManager);
     // Fire event
     event.fire("system.booted");
     //Start consumer to listen ActiveMQ
     consumer.connect();
 }
Example #4
0
      setInterval(function() {
        var now = new Date();

        console.log('\x1b[35mSchedule\x1b[0m: Short interval elapsed (' + now.getHours() + ':' + (now.getMinutes() < 10 ? '0' : '') + now.getMinutes() + ')');

        schedEvent.fire(controllers, 'short');
      }, (shortPollSeconds * 1000));
Example #5
0
      setInterval(function() {
        var now = new Date();

        console.log('\x1b[35mSchedule\x1b[0m: Long interval elapsed (' + now.getHours() + ':' + (now.getMinutes() < 10 ? '0' : '') + now.getMinutes() + ')');

        schedEvent.fire(controllers, 'long');
      }, (longPollMinutes * 60000));
				ref.search(function(err, data){
					if(err){
						callback(err, null);// Respond back with error
					}else{
						//Get Links
						var experiment = data.data;
						bus.fire('experiments_fetched', experiment);
					}
				}, query, start, fetchSize, sortBy, sortDir);
				ref.getById(id, function(err, data){
					if(err){
						callback(err, null);// Respond back with error
					}else{
						//Get Links
						var experiment = data.data;
						bus.fire('experiment_fetched', experiment);
					}
				});
				ref.update(id, params, function(err, data){
					if(err){
						callback(err, null);// Respond back with error
					}else{
						//Create a link
						var experiment = data.data;
						bus.fire('experiment_updated', id, params, experiment);
					}
				});
Example #9
0
				StateMachine.getStartState(EMAIL.name, function(err, data){
					if(err != null){
						callback(err, null);
						return;
					}else{
						startState = data.data[0].name;
						params['status'] = startState; // Start State
						
						bus.fire('stateSet');
					}
				});
				linksImpl.search(function(err, data){
					if(err){
						callback(err);
					}else{
						if(params['url']){ // If URL is getting updated
							if(data.totalCount > 0){
								var link = data.data[0];
								bus.fire('link_fetched', link.id, params, experiment);
							}else{
								bus.fire('create_link', params, experiment);
							}
						}else{
							if(data.totalCount > 0){
								var link = data.data[0];
								experiment.links = [link];
								callback(null,response.success(experiment, 1, codes.success.RECORD_UPDATED([ref.displayName, id])));
							}
						}
						
					}
				}, 'experimentId:eq:' + id + "___isDisabled:eq:0");
		createSplitExperiment : function(params, callback){
			var bus = new Bus();
			
			var ref = this;
			
			// URL should not be blank
			var url = params['url'];
			if(check.isNull(url)){
				callback(response.error(codes.error.EXPERIMENT_URL_EMPTY()));
				return;
			}
			
			// URL should be valid
			if(check.isNull(params['url'])){
				callback(response.error(codes.error.INVALID_EXPERIMENT_URL()));
				return;
			}
			
			params['type'] = EXPERIMENT.types.SPLITTER;
			
			bus.on('start', function(){
				ref.create(params, function(err, data){
					if(err){
						callback(err, null);// Respond back with error
					}else{
						//Create a link
						var experiment = data.data;
						bus.fire('experiment_created', params, experiment);
					}
				});
			});
			
			bus.on('experiment_created', function(params, experiment){
				var payload = {
					experimentId : experiment.id,
					url : params['url'],
					createdBy : experiment.createdBy,
					userId : experiment.userId
				};
				linksImpl.create(payload, function(err, data){
					if(err){
						callback(err);
					}else{
						var link = data.data;
						experiment.links = [link];
						callback(null,response.success(experiment, 1, codes.success.RECORD_CREATED([ref.displayName])));
					}
				});
			});
			
			bus.fire('start');
		},
Example #12
0
				ref.search(function(err,data){
					// If error occurred
					if(err){
						callback(err);
						return;
					}
					
					if(data && data.totalCount > 0){ // Records with same User Id and Name can not exist 
						callback(response.error(codes.error.GOAL_USER_ID_NAME_EXISTS()));
					}else{
						bus.fire('noDuplicates');
					}
				}, 'userId:eq:' + params.userId + '___name:eq:' + params.name);
Example #13
0
		update : function(id, params, callback){
			if(id == null){
				callback(response.error(codes.error.ID_NULL));
			}else{
				
				var bus = new Bus();
				
				var ref = this;
				var m = this._getSuper();
				
				// Only Status of an email can be updated
				var status = params.status;
				
				bus.on('start', function(){
					ref._dao.getById(id).then(function(model){
						if(model == undefined){
							callback(response.error(codes.error.RECORD_WITH_ID_NOT_EXISTS([ref.displayName, id])));
						}else{
							bus.fire('modelFound', model);
						}
					}, function(error){
						callback(response.error(codes.error.RECORD_WITH_ID_NOT_FETCHED([ref.displayName, id])));
					});
				});
				
				bus.on('modelFound', function(model){
					if(status && status != model.status){ //Status is getting changed
						StateMachine.isValidTransition(EMAIL.name, model.status, status, function(err, data){
							if(err != null){
								callback(err, null);
								return;
							}else{
								bus.fire('validOrNoTransitions');
							}
						});
					}else{
						bus.fire('validOrNoTransitions');
					}
				});
				
				bus.on('validOrNoTransitions', function(){
					m.call(ref, id, {status : status}, callback);
				});
				
				bus.fire('start');
			}
		},
Example #14
0
 this.onConnection = function (req, res) {
     // Fire event
     event.fire("connection.http.request", req);
     // Pass to listeners
     var self = this;
     var url = req.url;
     if (req.method === "GET") {
         var contentType = req.headers["content-type"];
         var callback = getCallback.bind(this)("GET", url);
         if (callback.fn != null) {
             req.inputs = callback.urlInputs;
             req.inputs = req.inputs.merge(getInputs(url, "GET", contentType));
             req.baseUrl = getBaseUrl(url);
             callback.fn(req, res, url);
         } else {
             res.writeHead(404, {"Content-Type": "application/json"});
             res.end(JSON.stringify({
                 status: 404,
                 result: "page not found"
             }));
         }
     } else if (req.method === "POST") {
         var body = "";
         var contentType = req.headers["content-type"];
         req.on("data", function (data) {
             body += data;
             // Too much POST data, close the connection!
             if (body.length > 1e6)
                 req.connection.destroy();
         });
         req.on("end", function () {
             req.inputs = getInputs(body, "POST", contentType);
             req.baseUrl = getBaseUrl(url);
             var callback = getCallback.bind(self)("POST", url);
             if (callback.fn != null) {
                 callback.fn(req, res);
             } else {
                 res.writeHead(404, {"Content-Type": "application/json"});
                 res.end(JSON.stringify({
                     status: 404,
                     result: "page not found"
                 }));
             }
         });
     }
 };
		searchSplitExperiments : function(callback, query, start, fetchSize, sortBy, sortDir){
			var ref = this;
			
			var bus = new Bus();
			
			bus.on('start', function(){
				ref.search(function(err, data){
					if(err){
						callback(err, null);// Respond back with error
					}else{
						//Get Links
						var experiment = data.data;
						bus.fire('experiments_fetched', experiment);
					}
				}, query, start, fetchSize, sortBy, sortDir);
			});
			
			bus.on('experiments_fetched', function(experiments){
				if(experiments.length > 0){
					var count = 0;
					_.each(experiments, function(experiment){
						linksImpl.search(function(err, data){
							if(err){
								callback(err);
							}else{
								var links = data.data;
								experiment.links = links;
								
								if(++count == experiments.length){
									callback(null,response.success(experiments, experiments.length, codes.success.RECORDS_SEARCHED([ref.displayName])));
								};
							};
						}, 'experimentId:eq:' + experiment.id + "___isDisabled:eq:0");
					});
				}else{
					callback(null,response.success(experiments, experiments.length, codes.success.RECORDS_SEARCHED([ref.displayName])));
				}
			});
			
			bus.fire('start');
		}
		updateSplitExperiment : function(id, params, callback){
			var bus = new Bus();
			
			var ref = this;
			
			if(params['url'] && !check.isURL(params['url'])){
				// URL should be valid
				callback(response.error(codes.error.INVALID_EXPERIMENT_URL()));
				return;
			}
			
			bus.on('start', function(){
				ref.update(id, params, function(err, data){
					if(err){
						callback(err, null);// Respond back with error
					}else{
						//Create a link
						var experiment = data.data;
						bus.fire('experiment_updated', id, params, experiment);
					}
				});
			});
			
			bus.on('experiment_updated', function(id, params, experiment){
				linksImpl.search(function(err, data){
					if(err){
						callback(err);
					}else{
						if(params['url']){ // If URL is getting updated
							if(data.totalCount > 0){
								var link = data.data[0];
								bus.fire('link_fetched', link.id, params, experiment);
							}else{
								bus.fire('create_link', params, experiment);
							}
						}else{
							if(data.totalCount > 0){
								var link = data.data[0];
								experiment.links = [link];
								callback(null,response.success(experiment, 1, codes.success.RECORD_UPDATED([ref.displayName, id])));
							}
						}
						
					}
				}, 'experimentId:eq:' + id + "___isDisabled:eq:0");
			});
			
			bus.on('create_link', function(params, experiment){
				var payload = {
					experimentId : experiment.id,
					url : params['url'],
					createdBy : experiment.createdBy,
					userId : experiment.userId
				};
				linksImpl.create(payload, function(err, data){
					if(err){
						callback(err);
					}else{
						var link = data.data;
						experiment.links = [link];
						callback(null,response.success(experiment, 1, codes.success.RECORD_CREATED([ref.displayName])));
					}
				});
			});
			
			bus.on('link_fetched', function(linkId, params, experiment){
				var payload = {
					url : params['url'],
					updatedBy : experiment.createdBy,
					userId : experiment.userId
				};
				linksImpl.update(linkId, payload, function(err, data){
					if(err){
						callback(err);
					}else{
						var link = data.data;
						experiment.links = [link];
						callback(null,response.success(experiment, 1, codes.success.RECORD_UPDATED([ref.displayName, id])));
					}
				});
			});
			
			bus.fire('start');
		},
Example #17
0
		update : function(id, params, callback){
			if(id == null){
				callback(response.error(codes.error.ID_NULL));
			}else{
				
				var bus = new Bus();
				
				var ref = this;
				var m = this._getSuper();
				
				var userId = null;
				
				bus.on('start', function(){
					ref._dao.getById(id).then(function(model){
						if(model == undefined){
							callback(response.error(codes.error.RECORD_WITH_ID_NOT_EXISTS([ref.displayName, id])));
						}else{
							userId = model.userId;
							bus.fire('modelFound', model);
						}
					}, function(error){
						callback(response.error(codes.error.RECORD_WITH_ID_NOT_FETCHED([ref.displayName, id])));
					});
				});
				
				bus.on('modelFound', function(model){
					if(params.userId && params.userId != model.userId){
						// Can't change the user id of an experiment
						callback(response.error(codes.error.GOAL_USER_ID_CANT_UPDATE()));
						return;
					}
					
					if(params.url && params.url != model.url){ // URL is getting changes
						// URL should not be blank
						if(check.isNull(params['url'])){
							callback(response.error(codes.error.GOAL_URL_REQUIRED()));
							return;
						}
						
						// URL should not be blank
						if(!check.isURL(params['url'])){
							callback(response.error(codes.error.INVALID_GOAL_URL()));
							return;
						}
					}
					
					if(params.name && params.name != model.name){ //Name is getting updated
						var name = params.name || model.name;
						ref.search(function(err,data){
							// If error occurred
							if(err){
								callback(err);
								return;
							}
							
							if(data && data.totalCount > 0){ // Records with same User Id and Name can not exist 
								callback(response.error(codes.error.GOAL_USER_ID_NAME_EXISTS()));
							}else{
								bus.fire('noDuplicates', model);
							}
						}, 'userId:eq:' + model.userId + '___name:eq:' + name);
					}else{
						bus.fire('noDuplicates', model);
					}
				});
				
				bus.on('noDuplicates', function(model){
					if(params.status && params.status != model.status){
						StateMachine.isValidTransition(GOAL.name, model.status, params.status, function(err, data){
							if(err != null){
								callback(err, null);
								return;
							}else{
								bus.fire('validOrNoTransitions');
							}
						});
					}else{
						bus.fire('validOrNoTransitions');
					}
				});
				
				bus.on('validOrNoTransitions', function(){
					m.call(ref, id, params, callback);
					
					// Mark script old for the user
					emitter.emit(EVENT_MARK_SCRIPT_OLD, userId);
				});
				
				bus.fire('start');
			}
			
		}
Example #18
0
		create : function(params, callback){
			var bus = new Bus();
			
			var ref = this;
			var m = this._getSuper();
			
			// User ID should not be valid
			var userId = params['userId'];
			if(check.isNull(userId) || !check.isInt(userId)){
				callback(response.error(codes.error.VALID_USER_REQUIRED()));
				return;
			}
			
			// Name should not be blank
			var name = params['name'];
			if(check.isNull(name)){
				callback(response.error(codes.error.GOAL_NAME_REQUIRED()));
				return;
			}
			
			// Type should not be blank
			if(check.isNull(params['type'])){
				callback(response.error(codes.error.GOAL_TYPE_REQUIRED()));
				return;
			}
			
			// URL should not be blank
			if(check.isNull(params['url'])){
				callback(response.error(codes.error.GOAL_URL_REQUIRED()));
				return;
			}
			
			// URL should not be blank
			if(!check.isURL(params['url'])){
				callback(response.error(codes.error.INVALID_GOAL_URL()));
				return;
			}
			
			bus.on('start', function(){
				StateMachine.getStartState(GOAL.name, function(err, data){
					if(err != null){
						callback(err, null);
						return;
					}else{
						startState = data.data[0].name;
						params['status'] = startState; // Start State
						
						bus.fire('stateSet');
					}
				});
			});
			
			bus.on('stateSet', function(){
				ref.search(function(err,data){
					// If error occurred
					if(err){
						callback(err);
						return;
					}
					
					if(data && data.totalCount > 0){ // Records with same User Id and Name can not exist 
						callback(response.error(codes.error.GOAL_USER_ID_NAME_EXISTS()));
					}else{
						bus.fire('noDuplicates');
					}
				}, 'userId:eq:' + params.userId + '___name:eq:' + params.name);
			});
			
			bus.on('noDuplicates', function(){
				m.call(ref, params, callback);
				
				// Mark script old for the user
				emitter.emit(EVENT_MARK_SCRIPT_OLD, userId);
			});
			
			bus.fire('start');
		},