From f4e1da297fa5f2ff8604f6912fc847fcc754f770 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 31 Mar 2019 00:16:53 +0000 Subject: [PATCH] trying to not overcome the quota, [TODO] remove truncated saved part --- src/Yavsc/Helpers/FileSystemHelpers.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Yavsc/Helpers/FileSystemHelpers.cs b/src/Yavsc/Helpers/FileSystemHelpers.cs index 2d94a24c..c93c1e75 100644 --- a/src/Yavsc/Helpers/FileSystemHelpers.cs +++ b/src/Yavsc/Helpers/FileSystemHelpers.cs @@ -102,6 +102,12 @@ public static FileRecievedInfo ReceiveProSignature(this ClaimsPrincipal user, st fi.Delete(); user.DiskUsage -= fi.Length; } + + public static void AddQuota(this ApplicationUser user, int quota) + { + user.DiskQuota += quota; + } + public static FileRecievedInfo ReceiveUserFile(this ApplicationUser user, string root, IFormFile f, string destFileName = null) { // TODO lock user's disk usage for this scope, @@ -130,19 +136,25 @@ public static FileRecievedInfo ReceiveProSignature(this ClaimsPrincipal user, st item.QuotaOffensed = true; return item; } - usage += len; + - while (len > 0) + while (len > 0 && usage < user.DiskQuota) { int blen = len > 1024 ? 1024 : (int)len; org.Read(buffer, 0, blen); dest.Write(buffer, 0, blen); len -= blen; + usage += blen; } + user.DiskUsage = usage; dest.Close(); org.Close(); } } + if (usage >= user.DiskQuota) { + item.QuotaOffensed = true; + + } user.DiskUsage = usage; return item; }