| 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-- |
| 295 | 1 |
// Simple persist middle ware |
2 |
var path = require('path'), |
|
3 |
fs = require('fs'); |
|
4 |
||
5 |
var jsonFile = path.join(__dirname,"example-cinema.json"); |
|
6 |
var resetFile = path.join(__dirname,"example-cinema-src.json"); |
|
7 |
||
8 |
exports.middleware = function(req, res, next) { |
|
9 |
'use strict'; |
|
10 |
||
11 |
if (req.url !== '/simple-persist') { |
|
12 |
return next(); |
|
13 |
} |
|
14 |
||
15 |
res.setHeader('Content-Type', 'application/json; charset=utf-8'); |
|
16 |
res.statusCode = 200; |
|
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 | 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 | 23 |
} |
24 |
else { |
|
25 |
var params = require('url').parse(req.url), |
|
26 |
readStream; |
|
27 |
if('reset' in params && params.reset) { |
|
28 |
readStream = fs.createReadStream(resetFile); |
|
29 |
readStream.pipe(fs.createWriteStream(jsonFile)); |
|
30 |
} |
|
31 |
else { |
|
32 |
readStream = fs.createReadStream(jsonFile); |
|
33 |
readStream.on('error',function() { |
|
34 |
var srcFile = fs.createReadStream(resetFile); |
|
35 |
srcFile.pipe(fs.createWriteStream(jsonFile)); |
|
36 |
srcFile.pipe(res); |
|
37 |
}); |
|
38 |
} |
|
39 |
readStream.pipe(res); |
|
40 |
} |
|
41 |
}; |