diff --git a/Tools/BiblioTech/CodexChecking/CodexTwoWayChecker.cs b/Tools/BiblioTech/CodexChecking/CodexTwoWayChecker.cs index 83175803..ac83ccd9 100644 --- a/Tools/BiblioTech/CodexChecking/CodexTwoWayChecker.cs +++ b/Tools/BiblioTech/CodexChecking/CodexTwoWayChecker.cs @@ -37,7 +37,7 @@ namespace BiblioTech.CodexChecking public async Task StartDownloadCheck(ICheckResponseHandler handler, ulong userId) { var check = repo.GetOrCreate(userId).DownloadCheck; - if (string.IsNullOrEmpty(check.UniqueData)) + if (IsUniqueDataStale(check)) { check.UniqueData = GenerateUniqueData(); repo.SaveChanges(); @@ -69,7 +69,7 @@ namespace BiblioTech.CodexChecking public async Task StartUploadCheck(ICheckResponseHandler handler, ulong userId) { var check = repo.GetOrCreate(userId).UploadCheck; - if (string.IsNullOrEmpty(check.UniqueData)) + if (IsUniqueDataStale(check)) { check.UniqueData = GenerateUniqueData(); repo.SaveChanges(); @@ -111,6 +111,15 @@ namespace BiblioTech.CodexChecking return $"{RandomBusyMessage.Get().Substring(5)}{RandomUtils.GenerateRandomString(12)}"; } + private bool IsUniqueDataStale(TransferCheck check) + { + var expiry = DateTime.UtcNow - TimeSpan.FromMinutes(10.0); + + return + string.IsNullOrEmpty(check.UniqueData) || + check.CompletedUtc < expiry; + } + private string UploadData(string uniqueData) { var filePath = Path.Combine(config.ChecksDataPath, Guid.NewGuid().ToString());