client/data/simple-persist.js
author rougeronj
Wed, 03 Jun 2015 17:27:46 +0200
changeset 471 e0c7be5dc02c
parent 356 763c925e7a9c
child 647 eaaa1efce396
permissions -rw-r--r--
Add a router to handle fragment identifier Set up a listener of the router in the scene to update it Start Backbone.history (eventlistener of the router) when all the project is loaded Include router.js to all the test file
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
295
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
// Simple persist middle ware
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
var path = require('path'),
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
    fs = require('fs');
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
var jsonFile = path.join(__dirname,"example-cinema.json");
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
var resetFile = path.join(__dirname,"example-cinema-src.json");
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
exports.middleware = function(req, res, next) {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
    'use strict';
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
    if (req.url !== '/simple-persist') {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
      return next();
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
    }
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    res.setHeader('Content-Type', 'application/json; charset=utf-8');
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
    res.statusCode = 200;
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
355
fa39654e7084 Add Post option to simple persist to be able to simulate "Save Once" which uses Post request
rougeronj
parents: 295
diff changeset
    18
    if(req.method === "PUT" || req.method === "POST") {
295
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
      req.pipe(fs.createWriteStream(jsonFile));
356
763c925e7a9c Add 3 second before sending back the result to simulate some latency
rougeronj
parents: 355
diff changeset
    20
      setTimeout(function () {
763c925e7a9c Add 3 second before sending back the result to simulate some latency
rougeronj
parents: 355
diff changeset
    21
    	  res.end(JSON.stringify({result: "OK"}));
763c925e7a9c Add 3 second before sending back the result to simulate some latency
rougeronj
parents: 355
diff changeset
    22
      }, 3000);
295
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    }
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    else {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
      var params = require('url').parse(req.url),
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
          readStream;
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
      if('reset' in params && params.reset) {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
        readStream = fs.createReadStream(resetFile);
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
        readStream.pipe(fs.createWriteStream(jsonFile));
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
      }
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
      else {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
        readStream = fs.createReadStream(jsonFile);
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
        readStream.on('error',function() {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
          var srcFile = fs.createReadStream(resetFile);
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
          srcFile.pipe(fs.createWriteStream(jsonFile));
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
          srcFile.pipe(res);
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
        });
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
      }
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
      readStream.pipe(res);
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    }
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
};