Simplify logic in ProviderManager.SaveImage

This commit is contained in:
Bond_009 2025-02-04 14:56:52 +01:00
parent 4eecfee29f
commit 9e869b4541

View File

@ -204,20 +204,10 @@ namespace MediaBrowser.Providers.Manager
{ {
contentType = MediaTypeNames.Image.Png; contentType = MediaTypeNames.Image.Png;
} }
else
{
throw new HttpRequestException("Invalid image received: contentType not set.", null, response.StatusCode);
}
} }
// TVDb will sometimes serve a rubbish 404 html page with a 200 OK code, because reasons... // some providers don't correctly report media type, extract from url if no extension found
if (contentType.Equals(MediaTypeNames.Text.Html, StringComparison.OrdinalIgnoreCase)) if (contentType is null || contentType.Equals(MediaTypeNames.Application.Octet, StringComparison.OrdinalIgnoreCase))
{
throw new HttpRequestException("Invalid image received.", null, HttpStatusCode.NotFound);
}
// some iptv/epg providers don't correctly report media type, extract from url if no extension found
if (string.IsNullOrWhiteSpace(MimeTypes.ToExtension(contentType)))
{ {
// Strip query parameters from url to get actual path. // Strip query parameters from url to get actual path.
contentType = MimeTypes.GetMimeType(new Uri(url).GetLeftPart(UriPartial.Path)); contentType = MimeTypes.GetMimeType(new Uri(url).GetLeftPart(UriPartial.Path));
@ -225,7 +215,7 @@ namespace MediaBrowser.Providers.Manager
if (!contentType.StartsWith("image/", StringComparison.OrdinalIgnoreCase)) if (!contentType.StartsWith("image/", StringComparison.OrdinalIgnoreCase))
{ {
throw new HttpRequestException($"Request returned {contentType} instead of an image type", null, HttpStatusCode.NotFound); throw new HttpRequestException($"Request returned '{contentType}' instead of an image type", null, HttpStatusCode.NotFound);
} }
var responseBytes = await response.Content.ReadAsByteArrayAsync(cancellationToken).ConfigureAwait(false); var responseBytes = await response.Content.ReadAsByteArrayAsync(cancellationToken).ConfigureAwait(false);