fix: Resolve CA1849/CA2007 synchronous IO in EpubImageProvider (#16124)
This commit is contained in:
@@ -48,13 +48,13 @@ namespace MediaBrowser.Providers.Books.OpenPackagingFormat
|
|||||||
{
|
{
|
||||||
if (string.Equals(Path.GetExtension(item.Path), ".epub", StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(Path.GetExtension(item.Path), ".epub", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return GetFromZip(item);
|
return GetFromZip(item, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Task.FromResult(new DynamicImageResponse { HasImage = false });
|
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 utilities = new OpfReader<EpubImageProvider>(opf, _logger);
|
||||||
var coverReference = utilities.ReadCoverPath(opfRootDirectory);
|
var coverReference = utilities.ReadCoverPath(opfRootDirectory);
|
||||||
@@ -72,9 +72,11 @@ namespace MediaBrowser.Providers.Books.OpenPackagingFormat
|
|||||||
}
|
}
|
||||||
|
|
||||||
var memoryStream = new MemoryStream();
|
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;
|
memoryStream.Position = 0;
|
||||||
@@ -85,9 +87,9 @@ namespace MediaBrowser.Providers.Books.OpenPackagingFormat
|
|||||||
return response;
|
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);
|
var opfFilePath = EpubUtils.ReadContentFilePath(epub);
|
||||||
if (opfFilePath == null)
|
if (opfFilePath == null)
|
||||||
@@ -107,12 +109,12 @@ namespace MediaBrowser.Providers.Books.OpenPackagingFormat
|
|||||||
return new DynamicImageResponse { HasImage = false };
|
return new DynamicImageResponse { HasImage = false };
|
||||||
}
|
}
|
||||||
|
|
||||||
using var opfStream = opfFile.Open();
|
using var opfStream = await opfFile.OpenAsync(cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
var opfDocument = new XmlDocument();
|
var opfDocument = new XmlDocument();
|
||||||
opfDocument.Load(opfStream);
|
opfDocument.Load(opfStream);
|
||||||
|
|
||||||
return await LoadCover(epub, opfDocument, opfRootDirectory).ConfigureAwait(false);
|
return await LoadCover(epub, opfDocument, opfRootDirectory, cancellationToken).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user