mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-07-20 18:18:56 +00:00
feature(rest) add onFSPut
This commit is contained in:
parent
1b35591da7
commit
3a3704b577
1 changed files with 73 additions and 45 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue