diff --git a/lib/server/rest.js b/lib/server/rest.js index 5ef5f15f..f1ba972f 100644 --- a/lib/server/rest.js +++ b/lib/server/rest.js @@ -158,32 +158,24 @@ }); }); else if (lQuery === 'patch') - getBody(p.request, function(pPatch) { - fs.readFile(p.name, Util.call(read, params)); + getBody(p.request, function(patch) { + fs.readFile(p.name, 'utf8', read.bind(null, p.name)); - function read(params) { - var lDiff, lStr, p, lData, lName, - ret = main.checkCallBackParams(params) && - main.checkParams(params.params); - - if (ret) { - p = params; - lName = p.params.name; + function read(name, error, data) { + checkSendError(error, params, function() { + var diffResult; - checkSendError(p.error, p.params, function() { - lStr = p.data.toString(); - ret = Util.tryCatchLog(function() { - lDiff = diff.applyPatch(lStr, pPatch); - }); - - if (lDiff && !ret) - fs.writeFile(lName, lDiff, Util.call(write, p.params)); - else { - lName = path.basename(lName); - sendMsg(p.params, 'patch', lName, 'fail'); - } + ret = Util.tryCatchLog(function() { + diffResult = diff.applyPatch(data, patch); }); - } + + if (diffResult && !ret) + fs.writeFile(name, diffResult, Util.call(write, params)); + else { + name = path.basename(name); + sendMsg(params, 'patch', name, 'fail'); + } + }); } function write(params) {