diff --git a/services/Archival/FilterLists.Archival.Application/Commands/ArchiveList.cs b/services/Archival/FilterLists.Archival.Application/Commands/ArchiveList.cs index a1e265ec1..13da161d3 100644 --- a/services/Archival/FilterLists.Archival.Application/Commands/ArchiveList.cs +++ b/services/Archival/FilterLists.Archival.Application/Commands/ArchiveList.cs @@ -101,9 +101,11 @@ private async IAsyncEnumerable GetSegmentsAsync( { var sourceFileName = Uri.UnescapeDataString(segment.Url.Segments.Last()); var sourceExtension = Path.GetExtension(sourceFileName); - yield return new FileSegment( - sourceExtension, - await _client.GetContentAsync(segment.Url, cancellationToken)); + var contentAsync = await _client.GetContentAsync(segment.Url, cancellationToken); + if (contentAsync != Stream.Null) + { + yield return new FileSegment(sourceExtension, contentAsync); + } } } } diff --git a/services/Archival/FilterLists.Archival.Infrastructure/Persistence/IFileRepository.cs b/services/Archival/FilterLists.Archival.Infrastructure/Persistence/IFileRepository.cs index 809ad7cda..d122c78da 100644 --- a/services/Archival/FilterLists.Archival.Infrastructure/Persistence/IFileRepository.cs +++ b/services/Archival/FilterLists.Archival.Infrastructure/Persistence/IFileRepository.cs @@ -53,19 +53,22 @@ public async Task AddFileAsync(IFile file, CancellationToken cancellationToken) textStreams.Add(strategy.Convert(segment, cancellationToken)); } - _logger.LogInformation("Writing {FileName}", file.TargetFileName); - - var fileInfo = new FileInfo(Path.Combine(_options.RepositoryPath, file.TargetFileName)); - _writtenFiles.Add(fileInfo); - await using var target = fileInfo.OpenWrite(); - - // TODO: validate multi-segment lists are concatenated correctly and in order - foreach (var textStream in textStreams) + if (textStreams.Count > 0) { - await textStream.CopyToAsync(target, cancellationToken); - } + _logger.LogInformation("Writing {FileName}", file.TargetFileName); - _logger.LogInformation("Finished writing {FileName}", file.TargetFileName); + var fileInfo = new FileInfo(Path.Combine(_options.RepositoryPath, file.TargetFileName)); + _writtenFiles.Add(fileInfo); + await using var target = fileInfo.OpenWrite(); + + // TODO: validate multi-segment lists are concatenated correctly and in order + foreach (var textStream in textStreams) + { + await textStream.CopyToAsync(target, cancellationToken); + } + + _logger.LogInformation("Finished writing {FileName}", file.TargetFileName); + } } public void Commit()