aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGladtbam <49943258+Gladtbam@users.noreply.github.com>2026-01-28 10:40:12 +0800
committerGitHub <noreply@github.com>2026-01-27 19:40:12 -0700
commitb97f5b809daa5e64bc54eb6534ed4c4f69ff6cd9 (patch)
tree43920fb9e2a3a0f86e650a15b2e61a5a86488376
parentb9e5cce3838ec0cc89c67c48d8c2c40348bebc6f (diff)
fix: Resolve CA1849/CA2007 synchronous IO in EpubImageProvider (#16124)HEADmaster
-rw-r--r--MediaBrowser.Providers/Books/OpenPackagingFormat/EpubImageProvider.cs18
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);
}
}
}