client/data/simple-persist.js
author ymh <ymh.work@gmail.com>
Fri, 13 Mar 2015 16:36:57 +0100
changeset 400 7d11d49fd355
parent 356 763c925e7a9c
child 647 eaaa1efce396
permissions -rw-r--r--
Added tag V00.08.03 for changeset 2851da9997ea
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
};