Ejemplo n.º 1
0
var InstanceController = Spine.Class.create({
    init: function(app) {
        app.get('/instances', this.getInstances);
        app.get('/instances/:instancename/count', this.countInstances);
        app.get('/instances/:instancename', this.getInstance);
        app.post('/instances', this.postInstance);
        app.put('/instances/:instancename', this.putInstance);
    },
    getInstances: function(request, response) {
        Instance.find({}, function(err, instances) {
            response.json(instances);
        });
    },
    getInstance: function(request, response) {
        var instancename = request.params.instancename;
        Instance.find({ "name": instancename }, function(err, instances) {
            if (err) {
                console.log("Unable to find instance:" + instancename + " - " + err);
                response.send(500);
            }
            else {
                console.dir(instances);
                response.json(instances);
            }
        });
    },
    countInstances: function(request, response) {
        var instanceName = request.params.instancename;
        Instance.count({ name: instanceName }, function(err, count) {
            response.send("{'total': "+ count + "}");
        });
    },
    postInstance: function(request, response) {
        var instanceName = request.body.name;
        Instance.count({ name: instanceName }, function(err, count) {
            if (count === 0) {
                var instance = InstanceController.saveInstance(request.body);
                InstanceController.trigger("create", instance);
                response.send('OK');
            } else {
                console.log("Cannot create an existing instance:" + instanceName);
                response.send(409);
            }
        });
        
    },
    putInstance: function(request, response) {
        var instanceName = request.params.instancename;
        
        Instance.count({ name: instanceName }, function(err, count) {
            var instance = InstanceController.saveInstance(request.body);
            InstanceController.trigger("update", instance);
            response.send('OK');
        });
        
    }
});
Ejemplo n.º 2
0
var EntityController = Spine.Class.create({
    
    init: function(app) {
        app.post('/heartbeats', this.sendHeartbeat);
        app.post('/firehose', this.firehose);
        app.get('/:entityname/:entityid', this.getEntity);
        app.get('/:entityname', this.getEntities);
        app.put('/:entityname/:entityid', this.putEntity);
    },
    
    sendHeartbeat: function(req, res) {
        var hbtime = req.body.heartbeat;
        EntityController.trigger("heartbeat", {'type': 'heartbeats', 'data': hbtime});
        res.send('OK');
    },
    firehose: function(req, res) {
        EntityController.trigger("update", {'type': 'firehose', 'data': req.body});
        res.send('OK');
    },
    getEntities: function(req, res) {
      
        var entityname = req.params.entityname;
        
        var state = req.query.state;
        var StateEntityModel = EntityModelHelper.modelDefs[entityname + 'state'];
        
        if (StateEntityModel) {
            StateEntityModel.find({"lastUpdateState": state}, function(err, entityStates) {
                res.json(entityStates);
            });
        }
        else {
            res.send('OK');
        }
    },
    
    getEntity: function(req, res) {
        
        var entityname = req.params.entityname;
        var entityid = req.params.entityid;
        // Logger.debug("GET request for: /" + entityname + " and entityid " + entityid);
        
        var EntityModel = EntityModelHelper.modelDefs[entityname];
        
        EntityModel.find({ "name": entityid }, function(err, entities) {
            if (err) {
                Logger.error("Unable to find instance:" + entityid, err);
                res.send(500);
            }
            else {
                res.json(entities);
            }
        });
    }, 
    
    putEntity: function(req, res) {
     
        var entityname = req.params.entityname;
        var entityid = req.params.entityid;
        var reqBody = req.body;
        Logger.debug("PUT request for: /" + entityname + " and entityid " + entityid);
        
        try {
            var modelObject = EntityModelHelper.saveEntity(entityname, reqBody);
            EntityController.trigger("update", {'type': entityname, 'data': modelObject});
        } catch(err) {
            Logger.error("Unable to save entity", err);
            res.send('500');
        }
        
        res.send('OK'); 
    }
    
});
Ejemplo n.º 3
0
var Spine = require('spine'),
    Logger = require('./logger');

var Exceptions = Spine.Class.create();

Exceptions.extend({
    PersistenceException:function (msg) {
        this.name = 'PersistenceException';
        Error.call(this, msg);
        Error.captureStackTrace(this, arguments.callee);
    },
    InvalidArgument: function(msg) {
        this.name = 'InvalidArgument';
        Error.call(this, msg);
        Error.captureStackTrace(this, arguments.callee);
    },
    NotFound: function(msg) {
        this.name = 'NotFound';
        Error.call(this, msg);
        Error.captureStackTrace(this, arguments.callee);
    },
    Conflict: function(msg) {
        this.name = 'Conflict';
        Error.call(this, msg);
        Error.captureStackTrace(this, arguments.callee);
    }
});

module.exports = Exceptions;
Ejemplo n.º 4
0
var Spine = require("spine");

var Route = Spine.Route = Spine.Class.create();
Route.extend(Spine.Events);

Route.extend({
  routes: [],

  add: function(path, callback){
    if (typeof path === "object")
      for(var p in path) this.add(p, path[p]);
    else
      this.routes.push(this.init(path, callback));
  },
  
  setup: function(options){
    this.bind("change", this.change);
  },
  
  unbind: function(){},
  
  navigate: function(){
    var args = Spine.makeArray(arguments);
    var triggerRoutes = true;
    
    if (typeof args[args.length - 1] === "boolean") {
      triggerRoutes = args.pop();
    }
    
    var path = args.join("/");      
    if (this.path === path) return;
Ejemplo n.º 5
0
var winston = require('winston'),
    Spine = require('spine'),
    moment = require('moment');


var logger = new (winston.Logger)({
    transports: [
        new (winston.transports.Console)(),
        new (winston.transports.File)({ filename: 'allyourlogs.log' })
    ]
});

var Logger = Spine.Class.create({});

Logger.extend({
    getDate: function() {
        return moment().format('ddd, MMM Do YYYY, h:mm:ss a');
    },
    debug: function(message) {
        logger.debug("["+ Logger.getDate() +"] - " + message);
    },
    warn: function(message) {
        logger.warn("["+ Logger.getDate() +"] - " + message);
    },
    error: function(message, err) {
        logger.error("["+ Logger.getDate() +"] - " + message, err);
    }
});

module.exports = Logger;
Ejemplo n.º 6
0
var Spine = require('spine'),
    Logger = require('./logger');

var HttpResponse = Spine.Class.create();

HttpResponse.extend({
    BadRequest: function(res, err) {
        res.statusCode = 400;
        res.send(err);
    },
    Conflict: function(res, err) {
        res.statusCode = 409;
        res.send(err);
    },
    InternalServerError: function(res, err) {
        res.statusCode = 500;
        res.send(err);
    },
    NotFound: function(res, err) {
        res.statusCode = 404;
        res.send(err);
    },
    OK: function(res, msg) {
        res.statusCode = 200;
        res.send(msg);
    }
});

module.exports = HttpResponse;
Ejemplo n.º 7
0
    Property = require('../models/property');
    
var PropertyController = Spine.Class.create({
    init: function(app) {
        app.get('/Properties', this.getAllProperties);
        app.get('/Properties/:propertyname', this.getProperty);
        app.post('/Properties', this.postProperty);
    },
    getAllProperties: function(request, response) {
        Property.find({}, function(err, properties) {
            response.json(properties);
        });
    },
    getProperty: function(request, response) {
        var property = request.params.propertyname;
        Property.findOne({ "name": property }, function(err, data) {
            if (err) {
                console.log("Unable to find property:" + property + " - " + err);
                response.send(500);
            }
            else {
                response.json(data);
            }
        });
    },
    postProperty: function(request, response) {
        PropertyController.saveProperty(request.body);
        response.send('OK');
    }
});

PropertyController.extend({
Ejemplo n.º 8
0
var Spine = require('spine'),
    faye = require('faye'),
    mongoose = require('mongoose');

var Environment = Spine.Class.create();

Environment.extend({

    startServices: function(app) {
     
        if (process.env.VCAP_SERVICES) {
            var env = JSON.parse(process.env.VCAP_SERVICES);
            var mongo = env['mongodb-1.8'][0]['credentials'];
        }
        else {
            var mongo = {
                "hostname": "localhost",
                "port": 27017,
                "db": "hawk-dev"
            }
        }
        var generate_mongo_url = function(obj) {
                obj.hostname = (obj.hostname || 'localhost');
                obj.port = (obj.port || 27017);
                obj.db = (obj.db || 'test');
                if (obj.username && obj.password) {
                    return "mongodb://" + obj.username + ":" + obj.password + "@" + obj.hostname + ":" + obj.port + "/" + obj.db;
                }
                else {
                    return "mongodb://" + obj.hostname + ":" + obj.port + "/" + obj.db;
                }
Ejemplo n.º 9
0
var DomainController = Spine.Class.create({
    getDomains: function(request, response) {
        Logger.debug("get all domains");
        Domain.find({}, function(err, domains) {
            if (err) {
                Logger.debug("No domains found");
                require('sys').puts(err.stack());
                response.send('No domains found.', 404);
            }
            else {
                response.json(domains);
            }
        });
    },
    addDomain: function(req, res) {
        Logger.debug("adding domain: "+ JSON.stringify(req.body));
        var domain = new Domain();
        var field;
        for (field in req.body) {
			if (req.body.hasOwnProperty(field)) {
                domain[field] = req.body[field];
			}
        }
        domain.save(function(err) {
            if (err) {
                return new Error("unable to save domain: " + domain.name + "- " + err);
            }
            else {
                Logger.debug("Saved domain:" + JSON.stringify(domain));
                res.send('OK');
            }
        });
    },
    init: function(app) {
        Logger.debug("Initialising domain Controller");
        app.get('/domains', this.getDomains);
        app.post('/domains', this.addDomain);
    }
    
});