aboutsummaryrefslogtreecommitdiff
path: root/vim/.backup/server.js~
diff options
context:
space:
mode:
authorBen Beltran <ben@freshout.us>2013-03-25 16:36:57 -0600
committerBen Beltran <ben@freshout.us>2013-03-25 16:36:57 -0600
commitf0c1d1ca24eaefc12e2e1092bd9dbc954b7f4d3c (patch)
tree789f17466b3766a1ada8abc5e49967377bb07766 /vim/.backup/server.js~
parent30a7092fe25d693f33637a92d2abb5ba1c4aea58 (diff)
Update the stuff
Diffstat (limited to 'vim/.backup/server.js~')
-rwxr-xr-xvim/.backup/server.js~258
1 files changed, 258 insertions, 0 deletions
diff --git a/vim/.backup/server.js~ b/vim/.backup/server.js~
new file mode 100755
index 0000000..dc39a5e
--- /dev/null
+++ b/vim/.backup/server.js~
@@ -0,0 +1,258 @@
+#!/usr/bin/env node
+
+require('colors');
+var Ne = require('neon');
+
+Nitrogen = {
+ Manifest : require('./lib/manifest.js'),
+ Server : {}
+};
+
+Ne.Class(Nitrogen.Server, 'Editor')({
+ prototype : {
+ fs : require('fs'),
+ express : require('express'),
+ httpProxy : require('http-proxy'),
+ io : require('socket.io'),
+ http : require('http'),
+ app : null,
+ server : null,
+ socket : null,
+ port : 4000,
+ occipitalOptions : {},
+
+ init : function init(config) {
+ Object.keys(config).forEach(function (property) {
+ this[property] = config[property];
+ }, this);
+
+ console.log('Nitrogen Session Server starting ');
+ this.app = this.express();
+ this.proxy = new this.httpProxy.RoutingProxy();
+ this.server = this.http.createServer(this.app);
+ this.initRack();
+ this.initDb();
+ this.initRoutes();
+ this.server.listen(this.port);
+ this.socket = this.io.listen(this.server);
+ this.initSyncEvents();
+ console.log('Nitrogen Session Server listening on port ' + this.port);
+ },
+
+ initRack : function initRack() {
+ var nitrogen = this;
+ this.app.use(this.express.logger());
+ this.app.use(this.express.compress());
+ this.app.use(function (request, response, next) {
+ response.header("Access-Control-Allow-Origin", "*");
+ response.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
+ response.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
+ if ('OPTIONS' == request.method) {
+ response.send(200);
+ }
+ else {
+ next();
+ }
+ });
+ // This has to be here in order for a proxied post to work.
+ // See https://github.com/nodejitsu/node-http-proxy/issues/180
+ // for more information.
+ this.app.use(function (request, response, next) {
+ if (request.url.match(/\/attachments\/.*/) && request.method === "POST" ){
+ var options = nitrogen.occipitalOptions;
+ nitrogen.proxy.proxyRequest( request, response, options );
+ } else {
+ return next();
+ }
+ });
+ this.app.use(this.express.bodyParser());
+ this.app.use('/', this.express.static('public'));
+ },
+
+ initDb : function initDb() {
+ var fileNames = this.fs.readdirSync(__dirname + '/../').filter(function(fn){ return fn.match(/.*\.json$/); });
+ var i, filePath, collectionName;
+ data = Nitrogen.data = {};
+
+ for( i=0; i < fileNames.length; i+=1 ){
+ filePath = __dirname + '/../' + fileNames[i];
+ collectionName = fileNames[i].replace(/.json/, '');
+ data[collectionName] = this.fs.readFileSync(filePath).toString().replace(/\n$/, "").split(/\n/).map(function(r){
+ return JSON.parse(r);
+ });
+ }
+ },
+
+ initRoutes : function initRoutes() {
+ var nitrogen = this,
+ path = require('path');
+
+ this.app.get('/', function (request, response) {
+ var file = path.resolve('./public/app.html');
+ response.sendfile(file);
+ });
+
+ this.app.get('/api/all', function (req, res) {
+ res.set('Content-Type', 'application/json');
+ res.send(JSON.stringify(data));
+ });
+
+ this.app.get('/api/:model', function (req, res) {
+ var records = data[req.params.model]
+ res.set('Content-Type', 'application/json');
+ res.send(JSON.stringify(records));
+ });
+
+ this.app.get('/api/:model/:id', function (req, res){
+ var model = req.params.model;
+ var record = data[model].filter(function (record) {
+ return record.id == req.params.id;
+ })[0];
+
+ if (record) {
+ res.set('Content-Type', 'application/json');
+ res.send(JSON.stringify(record));
+ }
+ else {
+ res.set('Content-Type', 'application/json');
+ res.send(404, 'record not found');
+ }
+ });
+
+ this.app.get('/api/:model/:id/delete', function (req, res){
+ var model = req.params.model;
+ var record = data[model].filter(function (record) {
+ return record.id == req.params.id;
+ })[0];
+
+ data[model].splice(data[model].indexOf(record), 1);
+
+ res.set('Content-Type', 'application/json');
+ res.send('{}');
+ });
+
+ this.app.post('/api/:model/create', function (req, res){
+ var model = req.params.model;
+ var record = req.body;
+ record.id = util.generateUid(24);
+
+ data[model].push(record);
+
+ res.set('Content-Type', 'application/json');
+ res.send(JSON.stringify(record));
+ });
+
+ this.app.post('/api/:model/:id/update', function (req, res){
+ var model = req.params.model;
+
+ var record = data[model].filter(function (record) {
+ return record.id == req.params.id;
+ })[0];
+
+ var position = data[model].indexOf(record);
+ console.log(req);
+ data[model].splice(position, 1, req.body);
+
+ var record = data[model].filter(function (record) {
+ return record.id == req.params.id;
+ })[0];
+ res.set('Content-Type', 'application/json');
+ res.send(JSON.stringify(record));
+ });
+
+ this.app.get('/manifest_doc.js', function (req, res) {
+ res.set('Content-Type', 'application/json');
+
+ // Generate the package every time for development
+ Manifest.generatePackage(function () {
+ res.sendfile(path.resolve('./public/manifest_doc.js'));
+ });
+ /* TODO: Uncomment when file detection is done
+ nitrogen.fs.exists('./public/manifest_doc.js', function (exists) {
+ if (exists) {
+ res.sendfile(path.resolve('./public/manifest_doc.js'));
+ } else {
+ // create package
+ Manifest.generatePackage(function () {
+ res.sendfile(path.resolve('./public/manifest_doc.js'));
+ });
+ }
+ }); */
+ });
+
+ this.app.get('/get_assets', function (req, res) {
+ res.set('Content-Type', 'text/plain');
+
+ // Generate the package everytime for development
+ Manifest.generatePackage(function () {
+ res.sendfile(path.resolve('../app_assets/package.dat'));
+ });
+ /* TODO: Uncomment when file detection is ready
+ nitrogen.fs.exists('../app_assets/package.dat', function (exists) {
+ if (exists) {
+ res.sendfile(path.resolve('../app_assets/package.dat'));
+ } else {
+ // create package
+ Manifest.generatePackage(function () {
+ res.sendfile(path.resolve('../app_assets/package.dat'));
+ });
+ }
+ }); */
+ });
+
+ this.app.get('/attachments/*', function (req, res) {
+ var options = nitrogen.occipitalOptions;
+
+ nitrogen.proxy.proxyRequest( req, res, options );
+ });
+ },
+
+ initSyncEvents : function () {
+ this.socket.sockets.on('connection', function (socket) {
+ socket.emit('connected', {message : "Connection established"});
+
+ socket.on('sync', function (sync_data) {
+ console.log(">> Incoming LSD DATA".blue);
+
+ sync_data = JSON.parse(sync_data);
+
+ // Let's handle each guy
+ switch(sync_data.action) {
+ case "create":
+ data["tasks"].push(sync_data.data);
+ break;
+ case "update":
+ var record = data["tasks"].filter(function (record) {
+ return record.id == sync_data.data.id;
+ })[0];
+ var position = data["tasks"].indexOf(record);
+ data["tasks"].splice(position, 1, sync_data.data);
+ break;
+ case "remove":
+ var record = data["tasks"].filter(function (record) {
+ return record.id == sync_data.data.id;
+ })[0];
+ var position = data["tasks"].indexOf(record);
+ data["tasks"].splice(position, 1);
+ break;
+ }
+
+ socket.emit('sync_ok', {message : "Sync Received: OK"});
+ });
+ });
+
+ this.socket.sockets.on('disconnect', function (socket) {
+ socket.emit('disconnected', {message : "Connection lost"});
+ });
+ }
+ }
+});
+
+new Nitrogen.Server.Editor({
+ port : process.argv[2] || 4000,
+ occipitalOptions : {
+ host : (process.argv[3]) ? process.argv[3].replace(/:.*/, '') : '127.0.0.1',
+ port : (process.argv[3]) ? process.argv[3].replace(/.*:/, '') : '3001'
+ }
+});
+