From b97f5b809daa5e64bc54eb6534ed4c4f69ff6cd9 Mon Sep 17 00:00:00 2001 From: Gladtbam <49943258+Gladtbam@users.noreply.github.com> Date: Wed, 28 Jan 2026 10:40:12 +0800 Subject: fix: Resolve CA1849/CA2007 synchronous IO in EpubImageProvider (#16124) --- .../Books/OpenPackagingFormat/EpubImageProvider.cs | 18 ++++++++++-------- 1 file 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 LoadCover(ZipArchive epub, XmlDocument opf, string opfRootDirectory) + private async Task LoadCover(ZipArchive epub, XmlDocument opf, string opfRootDirectory, CancellationToken cancellationToken) { var utilities = new OpfReader(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 GetFromZip(BaseItem item) + private async Task 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); } } } -- cgit v1.2.3