aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-07 15:30:41 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-07 15:30:41 -0500
commit76658f07977a5857c752dc1266b66f881b454f48 (patch)
tree34a55486343c34fedc03099891a2e2eb8690dc02 /MediaBrowser.Server.Implementations
parent5e2a2a02ef73517f11ef9c7a513ac53ed0f9b2e8 (diff)
create images list object
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs20
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs128
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs9
3 files changed, 69 insertions, 88 deletions
diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
index 06a03ba1ca..12d3eadfd3 100644
--- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
+++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
@@ -619,27 +619,24 @@ namespace MediaBrowser.Server.Implementations.Drawing
/// Gets the image cache tag.
/// </summary>
/// <param name="item">The item.</param>
- /// <param name="imageType">Type of the image.</param>
- /// <param name="imagePath">The image path.</param>
+ /// <param name="image">The image.</param>
/// <returns>Guid.</returns>
/// <exception cref="System.ArgumentNullException">item</exception>
- public Guid GetImageCacheTag(IHasImages item, ImageType imageType, string imagePath)
+ public Guid GetImageCacheTag(IHasImages item, ItemImageInfo image)
{
if (item == null)
{
throw new ArgumentNullException("item");
}
- if (string.IsNullOrEmpty(imagePath))
+ if (image == null)
{
- throw new ArgumentNullException("imagePath");
+ throw new ArgumentNullException("image");
}
- var dateModified = item.GetImageDateModified(imagePath);
-
- var supportedEnhancers = GetSupportedEnhancers(item, imageType);
+ var supportedEnhancers = GetSupportedEnhancers(item, image.Type);
- return GetImageCacheTag(item, imageType, imagePath, dateModified, supportedEnhancers.ToList());
+ return GetImageCacheTag(item, image.Type, image.Path, image.DateModified, supportedEnhancers.ToList());
}
/// <summary>
@@ -693,9 +690,10 @@ namespace MediaBrowser.Server.Implementations.Drawing
{
var enhancers = GetSupportedEnhancers(item, imageType).ToList();
- var imagePath = item.GetImagePath(imageType, imageIndex);
+ var imageInfo = item.GetImageInfo(imageType, imageIndex);
+ var imagePath = imageInfo.Path;
- var dateModified = item.GetImageDateModified(imagePath);
+ var dateModified = imageInfo.DateModified;
var result = await GetEnhancedImage(imagePath, dateModified, item, imageType, imageIndex, enhancers);
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 84033f9ad8..5fa96c34b7 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Common.Extensions;
+using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Dto;
@@ -34,8 +35,9 @@ namespace MediaBrowser.Server.Implementations.Dto
private readonly IImageProcessor _imageProcessor;
private readonly IServerConfigurationManager _config;
+ private readonly IFileSystem _fileSystem;
- public DtoService(ILogger logger, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config)
+ public DtoService(ILogger logger, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config, IFileSystem fileSystem)
{
_logger = logger;
_libraryManager = libraryManager;
@@ -44,6 +46,7 @@ namespace MediaBrowser.Server.Implementations.Dto
_itemRepo = itemRepo;
_imageProcessor = imageProcessor;
_config = config;
+ _fileSystem = fileSystem;
}
/// <summary>
@@ -207,11 +210,11 @@ namespace MediaBrowser.Server.Implementations.Dto
Configuration = user.Configuration
};
- var image = user.PrimaryImagePath;
+ var image = user.GetImageInfo(ImageType.Primary, 0);
- if (!string.IsNullOrEmpty(image))
+ if (image != null)
{
- dto.PrimaryImageTag = GetImageCacheTag(user, ImageType.Primary, image);
+ dto.PrimaryImageTag = GetImageCacheTag(user, image);
try
{
@@ -288,12 +291,7 @@ namespace MediaBrowser.Server.Implementations.Dto
RunTimeTicks = item.RunTimeTicks
};
- var imagePath = item.PrimaryImagePath;
-
- if (!string.IsNullOrEmpty(imagePath))
- {
- info.PrimaryImageTag = GetImageCacheTag(item, ImageType.Primary, imagePath);
- }
+ info.PrimaryImageTag = GetImageCacheTag(item, ImageType.Primary);
return info;
}
@@ -380,11 +378,7 @@ namespace MediaBrowser.Server.Implementations.Dto
/// <returns>List{System.String}.</returns>
private List<Guid> GetBackdropImageTags(BaseItem item)
{
- return item.BackdropImagePaths
- .Select(p => GetImageCacheTag(item, ImageType.Backdrop, p))
- .Where(i => i.HasValue)
- .Select(i => i.Value)
- .ToList();
+ return GetCacheTags(item, ImageType.Backdrop).ToList();
}
/// <summary>
@@ -399,23 +393,40 @@ namespace MediaBrowser.Server.Implementations.Dto
{
return new List<Guid>();
}
+ return GetCacheTags(item, ImageType.Screenshot).ToList();
+ }
- return hasScreenshots.ScreenshotImagePaths
- .Select(p => GetImageCacheTag(item, ImageType.Screenshot, p))
+ private IEnumerable<Guid> GetCacheTags(BaseItem item, ImageType type)
+ {
+ return item.GetImages(type)
+ .Select(p => GetImageCacheTag(item, p))
.Where(i => i.HasValue)
.Select(i => i.Value)
.ToList();
}
- private Guid? GetImageCacheTag(BaseItem item, ImageType type, string path)
+ private Guid? GetImageCacheTag(BaseItem item, ImageType type)
+ {
+ try
+ {
+ return _imageProcessor.GetImageCacheTag(item, type);
+ }
+ catch (IOException ex)
+ {
+ _logger.ErrorException("Error getting {0} image info", ex, type);
+ return null;
+ }
+ }
+
+ private Guid? GetImageCacheTag(BaseItem item, ItemImageInfo image)
{
try
{
- return _imageProcessor.GetImageCacheTag(item, type, path);
+ return _imageProcessor.GetImageCacheTag(item, image);
}
catch (IOException ex)
{
- _logger.ErrorException("Error getting {0} image info for {1}", ex, type, path);
+ _logger.ErrorException("Error getting {0} image info for {1}", ex, image.Type, image.Path);
return null;
}
}
@@ -468,12 +479,7 @@ namespace MediaBrowser.Server.Implementations.Dto
if (dictionary.TryGetValue(person.Name, out entity))
{
- var primaryImagePath = entity.PrimaryImagePath;
-
- if (!string.IsNullOrEmpty(primaryImagePath))
- {
- baseItemPerson.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary, primaryImagePath);
- }
+ baseItemPerson.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary);
}
dto.People[i] = baseItemPerson;
@@ -520,12 +526,7 @@ namespace MediaBrowser.Server.Implementations.Dto
if (dictionary.TryGetValue(studio, out entity))
{
- var primaryImagePath = entity.PrimaryImagePath;
-
- if (!string.IsNullOrEmpty(primaryImagePath))
- {
- studioDto.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary, primaryImagePath);
- }
+ studioDto.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary);
}
dto.Studios[i] = studioDto;
@@ -544,7 +545,7 @@ namespace MediaBrowser.Server.Implementations.Dto
while (parent != null)
{
- if (parent.BackdropImagePaths != null && parent.BackdropImagePaths.Count > 0)
+ if (parent.GetImages(ImageType.Backdrop).Any())
{
return parent;
}
@@ -595,7 +596,12 @@ namespace MediaBrowser.Server.Implementations.Dto
if (!string.IsNullOrEmpty(chapterInfo.ImagePath))
{
- dto.ImageTag = GetImageCacheTag(item, ImageType.Chapter, chapterInfo.ImagePath);
+ dto.ImageTag = GetImageCacheTag(item, new ItemImageInfo
+ {
+ Path = chapterInfo.ImagePath,
+ Type = ImageType.Chapter,
+ DateModified = _fileSystem.GetLastWriteTimeUtc(chapterInfo.ImagePath)
+ });
}
return dto;
@@ -698,7 +704,7 @@ namespace MediaBrowser.Server.Implementations.Dto
if (fields.Contains(ItemFields.Keywords))
{
- var hasTags = item as IHasKeywords;
+ var hasTags = item as IHasKeywords;
if (hasTags != null)
{
dto.Keywords = hasTags.Keywords;
@@ -750,15 +756,15 @@ namespace MediaBrowser.Server.Implementations.Dto
dto.ImageTags = new Dictionary<ImageType, Guid>();
- foreach (var image in item.Images)
+ // Prevent implicitly captured closure
+ var currentItem = item;
+ foreach (var image in currentItem.ImageInfos.Where(i => !currentItem.AllowsMultipleImages(i.Type)))
{
- var type = image.Key;
-
- var tag = GetImageCacheTag(item, type, image.Value);
+ var tag = GetImageCacheTag(item, image);
if (tag.HasValue)
{
- dto.ImageTags[type] = tag.Value;
+ dto.ImageTags[image.Type] = tag.Value;
}
}
@@ -804,7 +810,7 @@ namespace MediaBrowser.Server.Implementations.Dto
{
dto.CollectionType = collectionFolder.CollectionType;
}
-
+
if (fields.Contains(ItemFields.RemoteTrailers))
{
dto.RemoteTrailers = hasTrailers != null ?
@@ -862,7 +868,7 @@ namespace MediaBrowser.Server.Implementations.Dto
{
dto.ParentLogoItemId = GetDtoId(parentWithLogo);
- dto.ParentLogoImageTag = GetImageCacheTag(parentWithLogo, ImageType.Logo, parentWithLogo.GetImagePath(ImageType.Logo));
+ dto.ParentLogoImageTag = GetImageCacheTag(parentWithLogo, ImageType.Logo);
}
}
@@ -875,7 +881,7 @@ namespace MediaBrowser.Server.Implementations.Dto
{
dto.ParentArtItemId = GetDtoId(parentWithImage);
- dto.ParentArtImageTag = GetImageCacheTag(parentWithImage, ImageType.Art, parentWithImage.GetImagePath(ImageType.Art));
+ dto.ParentArtImageTag = GetImageCacheTag(parentWithImage, ImageType.Art);
}
}
@@ -888,7 +894,7 @@ namespace MediaBrowser.Server.Implementations.Dto
{
dto.ParentThumbItemId = GetDtoId(parentWithImage);
- dto.ParentThumbImageTag = GetImageCacheTag(parentWithImage, ImageType.Thumb, parentWithImage.GetImagePath(ImageType.Thumb));
+ dto.ParentThumbImageTag = GetImageCacheTag(parentWithImage, ImageType.Thumb);
}
}
@@ -959,12 +965,7 @@ namespace MediaBrowser.Server.Implementations.Dto
{
dto.AlbumId = GetDtoId(albumParent);
- var imagePath = albumParent.PrimaryImagePath;
-
- if (!string.IsNullOrEmpty(imagePath))
- {
- dto.AlbumPrimaryImageTag = GetImageCacheTag(albumParent, ImageType.Primary, imagePath);
- }
+ dto.AlbumPrimaryImageTag = GetImageCacheTag(albumParent, ImageType.Primary);
}
}
@@ -1085,17 +1086,9 @@ namespace MediaBrowser.Server.Implementations.Dto
dto.AirTime = series.AirTime;
dto.SeriesStudio = series.Studios.FirstOrDefault();
- if (series.HasImage(ImageType.Thumb))
- {
- dto.SeriesThumbImageTag = GetImageCacheTag(series, ImageType.Thumb, series.GetImagePath(ImageType.Thumb));
- }
-
- var imagePath = series.PrimaryImagePath;
+ dto.SeriesThumbImageTag = GetImageCacheTag(series, ImageType.Thumb);
- if (!string.IsNullOrEmpty(imagePath))
- {
- dto.SeriesPrimaryImageTag = GetImageCacheTag(series, ImageType.Primary, imagePath);
- }
+ dto.SeriesPrimaryImageTag = GetImageCacheTag(series, ImageType.Primary);
}
// Add SeasonInfo
@@ -1110,12 +1103,7 @@ namespace MediaBrowser.Server.Implementations.Dto
dto.AirTime = series.AirTime;
dto.SeriesStudio = series.Studios.FirstOrDefault();
- var imagePath = series.PrimaryImagePath;
-
- if (!string.IsNullOrEmpty(imagePath))
- {
- dto.SeriesPrimaryImageTag = GetImageCacheTag(series, ImageType.Primary, imagePath);
- }
+ dto.SeriesPrimaryImageTag = GetImageCacheTag(series, ImageType.Primary);
}
var game = item as Game;
@@ -1303,15 +1291,17 @@ namespace MediaBrowser.Server.Implementations.Dto
/// <returns>Task.</returns>
public void AttachPrimaryImageAspectRatio(IItemDto dto, IHasImages item)
{
- var path = item.PrimaryImagePath;
+ var imageInfo = item.GetImageInfo(ImageType.Primary, 0);
- if (string.IsNullOrEmpty(path))
+ if (imageInfo == null)
{
return;
}
+ var path = imageInfo.Path;
+
// See if we can avoid a file system lookup by looking for the file in ResolveArgs
- var dateModified = item.GetImageDateModified(path);
+ var dateModified = imageInfo.DateModified;
ImageSize size;
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
index 4805adb1f0..22d683e1b6 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
@@ -401,16 +401,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
private Guid? GetImageTag(IHasImages info)
{
- var path = info.PrimaryImagePath;
-
- if (string.IsNullOrEmpty(path))
- {
- return null;
- }
-
try
{
- return _imageProcessor.GetImageCacheTag(info, ImageType.Primary, path);
+ return _imageProcessor.GetImageCacheTag(info, ImageType.Primary);
}
catch (Exception ex)
{