aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Jellyfin.Api/Controllers/Images/RemoteImageController.cs184
1 files changed, 78 insertions, 106 deletions
diff --git a/Jellyfin.Api/Controllers/Images/RemoteImageController.cs b/Jellyfin.Api/Controllers/Images/RemoteImageController.cs
index 66479582d..8c7d21cd5 100644
--- a/Jellyfin.Api/Controllers/Images/RemoteImageController.cs
+++ b/Jellyfin.Api/Controllers/Images/RemoteImageController.cs
@@ -74,57 +74,50 @@ namespace Jellyfin.Api.Controllers.Images
[FromQuery] string providerName,
[FromQuery] bool includeAllLanguages)
{
- try
+ var item = _libraryManager.GetItemById(id);
+ if (item == null)
{
- var item = _libraryManager.GetItemById(id);
- if (item == null)
- {
- return NotFound();
- }
-
- var images = await _providerManager.GetAvailableRemoteImages(
- item,
- new RemoteImageQuery
- {
- ProviderName = providerName,
- IncludeAllLanguages = includeAllLanguages,
- IncludeDisabledProviders = true,
- ImageType = type
- }, CancellationToken.None)
- .ConfigureAwait(false);
-
- var imageArray = images.ToArray();
- var allProviders = _providerManager.GetRemoteImageProviderInfo(item);
- if (type.HasValue)
- {
- allProviders = allProviders.Where(o => o.SupportedImages.Contains(type.Value));
- }
+ return NotFound();
+ }
- var result = new RemoteImageResult
- {
- TotalRecordCount = imageArray.Length,
- Providers = allProviders.Select(o => o.Name)
- .Distinct(StringComparer.OrdinalIgnoreCase)
- .ToArray()
- };
+ var images = await _providerManager.GetAvailableRemoteImages(
+ item,
+ new RemoteImageQuery
+ {
+ ProviderName = providerName,
+ IncludeAllLanguages = includeAllLanguages,
+ IncludeDisabledProviders = true,
+ ImageType = type
+ }, CancellationToken.None)
+ .ConfigureAwait(false);
- if (startIndex.HasValue)
- {
- imageArray = imageArray.Skip(startIndex.Value).ToArray();
- }
+ var imageArray = images.ToArray();
+ var allProviders = _providerManager.GetRemoteImageProviderInfo(item);
+ if (type.HasValue)
+ {
+ allProviders = allProviders.Where(o => o.SupportedImages.Contains(type.Value));
+ }
- if (limit.HasValue)
- {
- imageArray = imageArray.Take(limit.Value).ToArray();
- }
+ var result = new RemoteImageResult
+ {
+ TotalRecordCount = imageArray.Length,
+ Providers = allProviders.Select(o => o.Name)
+ .Distinct(StringComparer.OrdinalIgnoreCase)
+ .ToArray()
+ };
- result.Images = imageArray;
- return Ok(result);
+ if (startIndex.HasValue)
+ {
+ imageArray = imageArray.Skip(startIndex.Value).ToArray();
}
- catch (Exception e)
+
+ if (limit.HasValue)
{
- return StatusCode(StatusCodes.Status500InternalServerError, e.Message);
+ imageArray = imageArray.Take(limit.Value).ToArray();
}
+
+ result.Images = imageArray;
+ return Ok(result);
}
/// <summary>
@@ -138,21 +131,14 @@ namespace Jellyfin.Api.Controllers.Images
[ProducesResponseType(typeof(string), StatusCodes.Status500InternalServerError)]
public IActionResult GetRemoteImageProviders([FromRoute] string id)
{
- try
+ var item = _libraryManager.GetItemById(id);
+ if (item == null)
{
- var item = _libraryManager.GetItemById(id);
- if (item == null)
- {
- return NotFound();
- }
-
- var providers = _providerManager.GetRemoteImageProviderInfo(item);
- return Ok(providers);
- }
- catch (Exception e)
- {
- return StatusCode(StatusCodes.Status500InternalServerError, e.Message);
+ return NotFound();
}
+
+ var providers = _providerManager.GetRemoteImageProviderInfo(item);
+ return Ok(providers);
}
/// <summary>
@@ -166,49 +152,42 @@ namespace Jellyfin.Api.Controllers.Images
[ProducesResponseType(typeof(string), StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetRemoteImage([FromQuery, BindRequired] string imageUrl)
{
- try
- {
- var urlHash = imageUrl.GetMD5();
- var pointerCachePath = GetFullCachePath(urlHash.ToString());
+ var urlHash = imageUrl.GetMD5();
+ var pointerCachePath = GetFullCachePath(urlHash.ToString());
- string? contentPath = null;
- bool hasFile = false;
+ string? contentPath = null;
+ bool hasFile = false;
- try
- {
- contentPath = await System.IO.File.ReadAllTextAsync(pointerCachePath).ConfigureAwait(false);
- if (System.IO.File.Exists(contentPath))
- {
- hasFile = true;
- }
- }
- catch (FileNotFoundException)
- {
- // Means the file isn't cached yet
- }
- catch (IOException)
- {
- // Means the file isn't cached yet
- }
-
- if (!hasFile)
- {
- await DownloadImage(imageUrl, urlHash, pointerCachePath).ConfigureAwait(false);
- contentPath = await System.IO.File.ReadAllTextAsync(pointerCachePath).ConfigureAwait(false);
- }
-
- if (string.IsNullOrEmpty(contentPath))
+ try
+ {
+ contentPath = await System.IO.File.ReadAllTextAsync(pointerCachePath).ConfigureAwait(false);
+ if (System.IO.File.Exists(contentPath))
{
- return NotFound();
+ hasFile = true;
}
+ }
+ catch (FileNotFoundException)
+ {
+ // Means the file isn't cached yet
+ }
+ catch (IOException)
+ {
+ // Means the file isn't cached yet
+ }
- var contentType = MimeTypes.GetMimeType(contentPath);
- return new FileStreamResult(System.IO.File.OpenRead(contentPath), contentType);
+ if (!hasFile)
+ {
+ await DownloadImage(imageUrl, urlHash, pointerCachePath).ConfigureAwait(false);
+ contentPath = await System.IO.File.ReadAllTextAsync(pointerCachePath).ConfigureAwait(false);
}
- catch (Exception e)
+
+ if (string.IsNullOrEmpty(contentPath))
{
- return StatusCode(StatusCodes.Status500InternalServerError, e.Message);
+ return NotFound();
}
+
+ var contentType = MimeTypes.GetMimeType(contentPath);
+ return new FileStreamResult(System.IO.File.OpenRead(contentPath), contentType);
}
/// <summary>
@@ -227,24 +206,17 @@ namespace Jellyfin.Api.Controllers.Images
[FromQuery, BindRequired] ImageType type,
[FromQuery] string imageUrl)
{
- try
+ var item = _libraryManager.GetItemById(id);
+ if (item == null)
{
- var item = _libraryManager.GetItemById(id);
- if (item == null)
- {
- return NotFound();
- }
+ return NotFound();
+ }
- await _providerManager.SaveImage(item, imageUrl, type, null, CancellationToken.None)
- .ConfigureAwait(false);
+ await _providerManager.SaveImage(item, imageUrl, type, null, CancellationToken.None)
+ .ConfigureAwait(false);
- item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
- return Ok();
- }
- catch (Exception e)
- {
- return StatusCode(StatusCodes.Status500InternalServerError, e.Message);
- }
+ item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
+ return Ok();
}
/// <summary>