public void Cleanup() { if (String.IsNullOrWhiteSpace(_configService.RecycleBin)) { logger.Info("Recycle Bin has not been configured, cannot cleanup."); return; } logger.Info("Removing items older than 7 days from the recycling bin"); foreach (var folder in _diskProvider.GetDirectories(_configService.RecycleBin)) { if (_diskProvider.FolderGetLastWrite(folder).AddDays(7) > DateTime.UtcNow) { logger.Debug("Folder hasn't expired yet, skipping: {0}", folder); continue; } _diskProvider.DeleteFolder(folder, true); } foreach (var file in _diskProvider.GetFiles(_configService.RecycleBin, SearchOption.TopDirectoryOnly)) { if (_diskProvider.FileGetLastWriteUtc(file).AddDays(7) > DateTime.UtcNow) { logger.Debug("File hasn't expired yet, skipping: {0}", file); continue; } _diskProvider.DeleteFile(file); } logger.Debug("Recycling Bin has been cleaned up."); }
private string GetHash(string folder, string[] files) { var data = new StringBuilder(); data.Append(folder); try { data.Append(_diskProvider.FolderGetLastWrite(folder).ToBinary()); } catch (Exception ex) { _logger.Trace(ex, "Ignored hashing error during scan for {0}", folder); } foreach (var file in files.OrderBy(v => v)) { data.Append(GetHash(file)); } return(HashConverter.GetHash(data.ToString()).ToHexString()); }