simplify deletion

vnext
Paul Schneider 5 years ago
parent 7e8de55858
commit d7573d64a5
2 changed files with 18 additions and 33 deletions

@ -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(
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( var user = dbContext.Users.Single(
u => u.Id == User.GetUserId() 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 };
} }

Loading…