From 64d1e8a68973ac5efb4e5c97a7e6c86e02c3f9cc Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Sat, 1 Sep 2018 16:19:53 -0500 Subject: [PATCH] minor snap tidies --- src/FilterLists.Services/Snapshot/Snapshot.cs | 56 ++++++++++--------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/src/FilterLists.Services/Snapshot/Snapshot.cs b/src/FilterLists.Services/Snapshot/Snapshot.cs index 163c853e4..88436e12d 100644 --- a/src/FilterLists.Services/Snapshot/Snapshot.cs +++ b/src/FilterLists.Services/Snapshot/Snapshot.cs @@ -107,24 +107,30 @@ private async Task GetLines() var response = await httpClient.GetAsync(ListUrl, HttpCompletionOption.ResponseHeadersRead); SnapEntity.HttpStatusCode = (int)response.StatusCode; response.EnsureSuccessStatusCode(); - lines = new HashSet(); - using (var stream = await response.Content.ReadAsStreamAsync()) + await GetLinesFromSource(response); + } + } + + private async Task GetLinesFromSource(HttpResponseMessage response) + { + lines = new HashSet(); + using (var stream = await response.Content.ReadAsStreamAsync()) + using (var memoryStream = new MemoryStream()) + { + await stream.CopyToAsync(memoryStream); + memoryStream.Position = 0; + SetChecksum(memoryStream); + await SetWasUpdated(); + if (SnapEntity.WasUpdated) { - using (var memoryStream = new MemoryStream()) - { - await stream.CopyToAsync(memoryStream); - memoryStream.Position = 0; - SetChecksum(memoryStream); - if (await SaveIsNewChecksum()) - { - memoryStream.Position = 0; - if (ListUrl.EndsWith(".7z")) - await GetLinesFrom7Zip(memoryStream); - else - await GetLinesFromStream(memoryStream); - } - } + memoryStream.Position = 0; + if (ListUrl.EndsWith(".7z")) + await GetLinesFrom7Zip(memoryStream); + else + await GetLinesFromStream(memoryStream); } + + await dbContext.SaveChangesAsync(); } } @@ -136,29 +142,25 @@ private void SetChecksum(Stream stream) } } - private async Task SaveIsNewChecksum() - { - SnapEntity.WasUpdated = - !SnapEntity.Md5Checksum.SequenceEqual(await GetPreviousChecksum() ?? Array.Empty()); - await dbContext.SaveChangesAsync(); - return SnapEntity.WasUpdated; - } + private async Task SetWasUpdated() => + SnapEntity.WasUpdated = !SnapEntity.Md5Checksum.SequenceEqual(await GetPreviousChecksum()); private async Task GetPreviousChecksum() => await dbContext.Snapshots .Where(s => s.WasSuccessful && s.FilterListId == List.Id) .OrderByDescending(s => s.CreatedDateUtc) .Select(s => s.Md5Checksum) - .FirstOrDefaultAsync(); + .FirstOrDefaultAsync() ?? Array.Empty(); private async Task GetLinesFrom7Zip(Stream stream) { using (var archive = SevenZipArchive.Open(stream)) { - foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory)) - using (var entryMemoryStream = entry.OpenEntryStream()) + var archiveEntries = archive.Entries.Where(entry => !entry.IsDirectory); + foreach (var entry in archiveEntries) + using (var entryStream = entry.OpenEntryStream()) { - await GetLinesFromStream(entryMemoryStream); + await GetLinesFromStream(entryStream); } } }