aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-28 16:01:12 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-28 16:01:12 -0400
commitff61b0b11ab0dc9f33645b797c3d09dec8687439 (patch)
tree99b6907c68fbcc2227bd71d9dba000aa2aa69a6e
parent9274f9f35f1269c147c6815bb85e196e3128374a (diff)
better error handling with image enhancers
-rw-r--r--MediaBrowser.Api/Images/ImageService.cs15
-rw-r--r--MediaBrowser.Controller/Drawing/ImageManager.cs30
-rw-r--r--MediaBrowser.Controller/Dto/DtoBuilder.cs27
3 files changed, 66 insertions, 6 deletions
diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs
index 8db0609d9..4b4aeb83f 100644
--- a/MediaBrowser.Api/Images/ImageService.cs
+++ b/MediaBrowser.Api/Images/ImageService.cs
@@ -658,7 +658,20 @@ namespace MediaBrowser.Api.Images
// See if we can avoid a file system lookup by looking for the file in ResolveArgs
var originalFileImageDateModified = kernel.ImageManager.GetImageDateModified(item, request.Type, index);
- var supportedImageEnhancers = kernel.ImageEnhancers.Where(i => i.Supports(item, request.Type)).ToList();
+ var supportedImageEnhancers = kernel.ImageEnhancers.Where(i =>
+ {
+ try
+ {
+ return i.Supports(item, request.Type);
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error in image enhancer: {0}", ex, i.GetType().Name);
+
+ return false;
+ }
+
+ }).ToList();
// If the file does not exist GetLastWriteTimeUtc will return jan 1, 1601 as opposed to throwing an exception
// http://msdn.microsoft.com/en-us/library/system.io.file.getlastwritetimeutc.aspx
diff --git a/MediaBrowser.Controller/Drawing/ImageManager.cs b/MediaBrowser.Controller/Drawing/ImageManager.cs
index f891d5a18..f2d6657d5 100644
--- a/MediaBrowser.Controller/Drawing/ImageManager.cs
+++ b/MediaBrowser.Controller/Drawing/ImageManager.cs
@@ -531,8 +531,21 @@ namespace MediaBrowser.Controller.Drawing
throw new ArgumentNullException("item");
}
- var supportedEnhancers = _kernel.ImageEnhancers.Where(i => i.Supports(item, imageType)).ToList();
+ var supportedEnhancers = _kernel.ImageEnhancers.Where(i =>
+ {
+ try
+ {
+ return i.Supports(item, imageType);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error in image enhancer: {0}", ex, i.GetType().Name);
+
+ return false;
+ }
+ }).ToList();
+
// No enhancement - don't cache
if (supportedEnhancers.Count == 0)
{
@@ -609,7 +622,20 @@ namespace MediaBrowser.Controller.Drawing
var dateModified = GetImageDateModified(item, imagePath);
- var supportedEnhancers = _kernel.ImageEnhancers.Where(i => i.Supports(item, imageType));
+ var supportedEnhancers = _kernel.ImageEnhancers.Where(i =>
+ {
+ try
+ {
+ return i.Supports(item, imageType);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error in image enhancer: {0}", ex, i.GetType().Name);
+
+ return false;
+ }
+
+ }).ToList();
return GetImageCacheTag(imagePath, dateModified, supportedEnhancers, item, imageType);
}
diff --git a/MediaBrowser.Controller/Dto/DtoBuilder.cs b/MediaBrowser.Controller/Dto/DtoBuilder.cs
index 558c19049..549248595 100644
--- a/MediaBrowser.Controller/Dto/DtoBuilder.cs
+++ b/MediaBrowser.Controller/Dto/DtoBuilder.cs
@@ -182,11 +182,32 @@ namespace MediaBrowser.Controller.Dto
return;
}
- foreach (var enhancer in Kernel.Instance.ImageEnhancers
- .Where(i => i.Supports(item, ImageType.Primary)))
+ var supportedEnhancers = Kernel.Instance.ImageEnhancers.Where(i =>
{
+ try
+ {
+ return i.Supports(item, ImageType.Primary);
+ }
+ catch (Exception ex)
+ {
+ logger.ErrorException("Error in image enhancer: {0}", ex, i.GetType().Name);
+
+ return false;
+ }
+
+ }).ToList();
- size = enhancer.GetEnhancedImageSize(item, ImageType.Primary, 0, size);
+
+ foreach (var enhancer in supportedEnhancers)
+ {
+ try
+ {
+ size = enhancer.GetEnhancedImageSize(item, ImageType.Primary, 0, size);
+ }
+ catch (Exception ex)
+ {
+ logger.ErrorException("Error in image enhancer: {0}", ex, enhancer.GetType().Name);
+ }
}
dto.PrimaryImageAspectRatio = size.Width / size.Height;