simplify deletion
This commit is contained in:
@ -141,43 +141,21 @@ namespace Yavsc.ApiControllers
|
|||||||
return Ok();
|
return Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpDelete("{*id}")]
|
||||||
[HttpDelete]
|
public IActionResult RemoveDirOrFile ([ValidRemoteUserFilePath] string id)
|
||||||
[Route("/api/fsc/rm/{*id}")]
|
|
||||||
public async Task <IActionResult> Delete ([ValidRemoteUserFilePath] string id)
|
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid) return new BadRequestObjectResult(ModelState);
|
if (!ModelState.IsValid) return new BadRequestObjectResult(ModelState);
|
||||||
|
|
||||||
var user = dbContext.Users.Single(
|
var user = dbContext.Users.Single(
|
||||||
u => u.Id == User.GetUserId()
|
u => u.Id == User.GetUserId()
|
||||||
);
|
);
|
||||||
try {
|
|
||||||
user.DeleteUserFile(id);
|
|
||||||
await dbContext.SaveChangesAsync(User.GetUserId());
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return new BadRequestObjectResult(
|
|
||||||
new FsOperationInfo {
|
|
||||||
Done = false,
|
|
||||||
Error = ex.Message
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return Ok(new { deleted=id });
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpDelete]
|
|
||||||
[Route("/api/fsc/rmdir/{*id}")]
|
|
||||||
public IActionResult RemoveDir ([ValidRemoteUserFilePath] string id)
|
|
||||||
{
|
|
||||||
if (!ModelState.IsValid) return new BadRequestObjectResult(ModelState);
|
|
||||||
var user = dbContext.Users.Single(
|
|
||||||
u => u.Id == User.GetUserId()
|
|
||||||
);
|
|
||||||
try {
|
try {
|
||||||
var result = user.DeleteUserDir(id);
|
var result = user.DeleteUserDirOrFile(id);
|
||||||
if (!result.Done)
|
if (!result.Done)
|
||||||
return new BadRequestObjectResult(result);
|
return new BadRequestObjectResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return new BadRequestObjectResult(
|
return new BadRequestObjectResult(
|
||||||
|
@ -104,17 +104,24 @@ namespace Yavsc.Helpers
|
|||||||
user.DiskUsage -= fi.Length;
|
user.DiskUsage -= fi.Length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static FsOperationInfo DeleteUserDir(this ApplicationUser user, string dirName)
|
public static FsOperationInfo DeleteUserDirOrFile(this ApplicationUser user, string dirName)
|
||||||
{
|
{
|
||||||
var root = Path.Combine(AbstractFileSystemHelpers.UserFilesDirName, user.UserName);
|
var root = Path.Combine(AbstractFileSystemHelpers.UserFilesDirName, user.UserName);
|
||||||
if (string.IsNullOrEmpty(dirName))
|
if (string.IsNullOrEmpty(dirName))
|
||||||
return new FsOperationInfo { Done = false, Error = "specify a dir name"} ;
|
return new FsOperationInfo { Done = false, Error = "specify a directory or file name"} ;
|
||||||
|
|
||||||
var di = new DirectoryInfo(Path.Combine(root, dirName));
|
var di = new DirectoryInfo(Path.Combine(root, dirName));
|
||||||
if (!di.Exists) return new FsOperationInfo { Done = false, Error = "non existent"} ;
|
if (!di.Exists) {
|
||||||
if (di.GetDirectories().Length>0 || di.GetFiles().Length>0)
|
var fi = new FileInfo(Path.Combine(root, dirName));
|
||||||
return new FsOperationInfo { Done = false, Error = "not eñpty"} ;
|
if (!fi.Exists) return new FsOperationInfo { Done = false, Error = "non existent"} ;
|
||||||
di.Delete();
|
fi.Delete();
|
||||||
|
user.DiskUsage -= fi.Length;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (di.GetDirectories().Length>0 || di.GetFiles().Length>0)
|
||||||
|
return new FsOperationInfo { Done = false, Error = "not eñpty"} ;
|
||||||
|
di.Delete();
|
||||||
|
}
|
||||||
return new FsOperationInfo { Done = true };
|
return new FsOperationInfo { Done = true };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user