feature(rest) add onFSPut

This commit is contained in:
coderaiser 2014-02-19 07:36:51 -05:00
parent 1b35591da7
commit 3a3704b577

View file

@ -158,51 +158,12 @@
break;
case 'PUT':
if (lQuery === 'dir')
fse.mkdirs(p.name, function(pError) {
checkSendError(pError, params, function() {
sendMsg(params, 'make dir', p.name);
});
});
else if (lQuery === 'patch')
getBody(p.request, function(patch) {
fs.readFile(p.name, 'utf8', read.bind(null, p.name));
function read(name, error, data) {
checkSendError(error, p.params, function() {
var diffResult;
ret = Util.tryCatchLog(function() {
diffResult = diff.applyPatch(data, patch);
});
if (diffResult && !ret)
fs.writeFile(name, diffResult, write.bind(null, name));
else {
name = path.basename(name);
sendMsg(p.params, 'patch', name, 'fail');
}
});
}
function write(name, error) {
checkSendError(error, params, function() {
name = path.basename(name);
sendMsg(params, 'patch', name);
});
}
});
else
pipe.create({
read : p.request,
to : p.name,
callback : function(pError) {
checkSendError(pError, params, function() {
var lName = path.basename(p.name);
sendMsg(params, 'save', lName);
});
}
});
onFSPut(p.name, lQuery, p.request, function(error, msg) {
if (error)
sendError(params, error);
else
sendResponse(params, msg);
});
break;
case 'DELETE':
@ -225,6 +186,73 @@
return ret;
}
function onFSPut(name, query, readStream, callback) {
var func = Util.retExec(callback),
baseName = path.basename(name);
switch(query) {
case 'dir':
fse.mkdirs(name, function(error) {
var msg;
if (!error)
msg = CloudFunc.formatMsg('make dir', name);
func(error, msg);
});
break;
default:
pipe.create({
read : readStream,
to : name,
callback : function(error) {
var msg;
if (!error)
msg = CloudFunc.formatMsg('save', baseName);
func(error, msg);
}
});
break;
case 'patch':
getBody(readStream, function(patch) {
fs.readFile(name, 'utf8', read);
function read(error, data) {
var diffResult;
if (error)
func(error);
else {
error = Util.tryCatchLog(function() {
diffResult = diff.applyPatch(data, patch);
});
if (diffResult && !error)
fs.writeFile(name, diffResult, write);
else {
msg = CloudFunc.formatMsg('patch', baseName, 'fail');
func(null, msg);
}
}
}
function write(name, error) {
var msg;
if (!error)
msg = CloudFunc.formatMsg('patch', baseName);
func(error, msg);
}
});
break;
}
}
function onDelete(name, files, query, callback) {
var i, n, onStat,
assync = 0,