mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-07-20 18:18:56 +00:00
fix(delete) deleteFiles: remove when access denied
This commit is contained in:
parent
7c3cd2258e
commit
66647c09c9
2 changed files with 52 additions and 42 deletions
|
|
@ -202,18 +202,18 @@
|
|||
else {
|
||||
files = Util.parseJSON(body);
|
||||
|
||||
onDelete(p.name, files, query, function(error, callback) {
|
||||
onDelete(p.name, files, query, function(error) {
|
||||
var names;
|
||||
|
||||
if (error)
|
||||
if (error) {
|
||||
sendError(params,error);
|
||||
else {
|
||||
names = (files && files.length) ? files : p.name;
|
||||
|
||||
if (callback)
|
||||
Util.exec(callback);
|
||||
} else {
|
||||
if (files && files.length)
|
||||
names = files;
|
||||
else
|
||||
sendMsg(params, 'delete', names);
|
||||
names = p.name;
|
||||
|
||||
sendMsg(params, 'delete', names);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,18 +5,18 @@
|
|||
fs = require('fs'),
|
||||
dir = main.dir,
|
||||
Util = main.util,
|
||||
rimraf = main.require('rimraf'),
|
||||
fse = {
|
||||
delete : main.require('rimraf') || fs.rmdir,
|
||||
delete : rimraf || fs.rmdir,
|
||||
};
|
||||
|
||||
exports.onDelete = onDelete;
|
||||
|
||||
function onDelete(name, files, query, callback) {
|
||||
var i, n, isDirFunc, onIsDir, dirPath,
|
||||
assync = 0,
|
||||
rmFile = fs.unlink,
|
||||
rmDir = fse.delete,
|
||||
func = Util.retExec(callback);
|
||||
var func = Util.retExec(callback),
|
||||
fileNames = Util.slice(files),
|
||||
rmFile = fs.unlink,
|
||||
rmDir = fse.delete;
|
||||
|
||||
switch(query) {
|
||||
default:
|
||||
|
|
@ -26,36 +26,46 @@
|
|||
case 'dir':
|
||||
rmDir(name, func);
|
||||
break;
|
||||
|
||||
|
||||
case 'files':
|
||||
n = files && files.length,
|
||||
dirPath = name,
|
||||
|
||||
onIsDir = function(name, error, isDir) {
|
||||
var log = Util.log.bind(Util);
|
||||
++assync;
|
||||
|
||||
if (error)
|
||||
func(error);
|
||||
else {
|
||||
if (isDir)
|
||||
rmDir(name, log);
|
||||
else
|
||||
rmFile(name, log);
|
||||
|
||||
if (assync === n)
|
||||
func();
|
||||
}
|
||||
};
|
||||
|
||||
for (i = 0; i < n; i ++) {
|
||||
name = dirPath + files[i];
|
||||
isDirFunc = Util.bind(onIsDir, name);
|
||||
|
||||
dir.isDir(name, isDirFunc);
|
||||
Util.log(name);
|
||||
}
|
||||
deleteFiles(name, fileNames, func);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function deleteFiles(from, names, callback) {
|
||||
var name,
|
||||
rmFile = fs.unlink,
|
||||
rmDir = fse.delete,
|
||||
isLast = true;
|
||||
|
||||
isLast = !names.length;
|
||||
name = names.shift();
|
||||
|
||||
if (isLast)
|
||||
callback(null);
|
||||
else
|
||||
Util.ifExec(rimraf, function(result, func) {
|
||||
(func || rimraf)(from + name, function(error) {
|
||||
if (error)
|
||||
callback(error);
|
||||
else
|
||||
deleteFiles(from, names, callback);
|
||||
});
|
||||
}, function(func) {
|
||||
dir.isDir(name, function(error, isDir) {
|
||||
var funcRm;
|
||||
|
||||
if (error)
|
||||
callback(error);
|
||||
else if (isDir)
|
||||
funcRm = rmDir;
|
||||
else
|
||||
funcRm = rmFile;
|
||||
|
||||
func(null, funcRm);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
})();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue