diff options
| author | Gladtbam <49943258+Gladtbam@users.noreply.github.com> | 2026-01-28 10:40:12 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-27 19:40:12 -0700 |
| commit | b97f5b809daa5e64bc54eb6534ed4c4f69ff6cd9 (patch) | |
| tree | 43920fb9e2a3a0f86e650a15b2e61a5a86488376 | |
| parent | b9e5cce3838ec0cc89c67c48d8c2c40348bebc6f (diff) | |
fix: Resolve CA1849/CA2007 synchronous IO in EpubImageProvider (#16124)
| -rw-r--r-- | MediaBrowser.Providers/Books/OpenPackagingFormat/EpubImageProvider.cs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/MediaBrowser.Providers/Books/OpenPackagingFormat/EpubImageProvider.cs b/MediaBrowser.Providers/Books/OpenPackagingFormat/EpubImageProvider.cs index 33d2823de..69cae7762 100644 --- a/MediaBrowser.Providers/Books/OpenPackagingFormat/EpubImageProvider.cs +++ b/MediaBrowser.Providers/Books/OpenPackagingFormat/EpubImageProvider.cs @@ -48,13 +48,13 @@ namespace MediaBrowser.Providers.Books.OpenPackagingFormat { if (string.Equals(Path.GetExtension(item.Path), ".epub", StringComparison.OrdinalIgnoreCase)) { - return GetFromZip(item); + return GetFromZip(item, cancellationToken); } return Task.FromResult(new DynamicImageResponse { HasImage = false }); } - private async Task<DynamicImageResponse> LoadCover(ZipArchive epub, XmlDocument opf, string opfRootDirectory) + private async Task<DynamicImageResponse> LoadCover(ZipArchive epub, XmlDocument opf, string opfRootDirectory, CancellationToken cancellationToken) { var utilities = new OpfReader<EpubImageProvider>(opf, _logger); var coverReference = utilities.ReadCoverPath(opfRootDirectory); @@ -72,9 +72,11 @@ namespace MediaBrowser.Providers.Books.OpenPackagingFormat } var memoryStream = new MemoryStream(); - using (var coverStream = coverFile.Open()) + + var coverStream = await coverFile.OpenAsync(cancellationToken).ConfigureAwait(false); + await using (coverStream.ConfigureAwait(false)) { - await coverStream.CopyToAsync(memoryStream).ConfigureAwait(false); + await coverStream.CopyToAsync(memoryStream, cancellationToken).ConfigureAwait(false); } memoryStream.Position = 0; @@ -85,9 +87,9 @@ namespace MediaBrowser.Providers.Books.OpenPackagingFormat return response; } - private async Task<DynamicImageResponse> GetFromZip(BaseItem item) + private async Task<DynamicImageResponse> GetFromZip(BaseItem item, CancellationToken cancellationToken) { - using var epub = ZipFile.OpenRead(item.Path); + using var epub = await ZipFile.OpenReadAsync(item.Path, cancellationToken).ConfigureAwait(false); var opfFilePath = EpubUtils.ReadContentFilePath(epub); if (opfFilePath == null) @@ -107,12 +109,12 @@ namespace MediaBrowser.Providers.Books.OpenPackagingFormat return new DynamicImageResponse { HasImage = false }; } - using var opfStream = opfFile.Open(); + using var opfStream = await opfFile.OpenAsync(cancellationToken).ConfigureAwait(false); var opfDocument = new XmlDocument(); opfDocument.Load(opfStream); - return await LoadCover(epub, opfDocument, opfRootDirectory).ConfigureAwait(false); + return await LoadCover(epub, opfDocument, opfRootDirectory, cancellationToken).ConfigureAwait(false); } } } |
