diff --git a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs index 33beb29019..c61768a6d0 100644 --- a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs @@ -136,6 +136,21 @@ namespace MediaBrowser.Api.HttpHandlers } } + private ImageType ImageType + { + get + { + string imageType = QueryString["type"]; + + if (string.IsNullOrEmpty(imageType)) + { + return Model.Entities.ImageType.Primary; + } + + return (ImageType)Enum.Parse(typeof(ImageType), imageType, true); + } + } + protected override void WriteResponseToOutputStream(Stream stream) { ImageProcessor.ProcessImage(ImagePath, stream, Width, Height, MaxWidth, MaxHeight, Quality); @@ -152,7 +167,6 @@ namespace MediaBrowser.Api.HttpHandlers string id = QueryString["id"]; string personName = QueryString["personname"]; - string imageType = QueryString["type"] ?? string.Empty; string imageIndex = QueryString["index"]; BaseItem item; @@ -168,28 +182,28 @@ namespace MediaBrowser.Api.HttpHandlers int index = string.IsNullOrEmpty(imageIndex) ? 0 : int.Parse(imageIndex); - return GetImagePathFromTypes(item, imageType, index); + return GetImagePathFromTypes(item, ImageType, index); } - private string GetImagePathFromTypes(BaseItem item, string imageType, int imageIndex) + private string GetImagePathFromTypes(BaseItem item, ImageType imageType, int imageIndex) { - if (imageType.Equals("logo", StringComparison.OrdinalIgnoreCase)) + if (imageType == ImageType.Logo) { return item.LogoImagePath; } - else if (imageType.Equals("backdrop", StringComparison.OrdinalIgnoreCase)) + else if (imageType == ImageType.Backdrop) { return item.BackdropImagePaths.ElementAt(imageIndex); } - else if (imageType.Equals("banner", StringComparison.OrdinalIgnoreCase)) + else if (imageType == ImageType.Banner) { return item.BannerImagePath; } - else if (imageType.Equals("art", StringComparison.OrdinalIgnoreCase)) + else if (imageType == ImageType.Art) { return item.ArtImagePath; } - else if (imageType.Equals("thumbnail", StringComparison.OrdinalIgnoreCase)) + else if (imageType == ImageType.Thumbnail) { return item.ThumbnailImagePath; } diff --git a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs index d2898104fc..ff48ae6e36 100644 --- a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs @@ -6,7 +6,7 @@ namespace MediaBrowser.Api.HttpHandlers { public class StudiosHandler : JsonHandler { - protected sealed override object ObjectToSerialize + protected override object ObjectToSerialize { get { diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs index f997aea5dd..820d94831a 100644 --- a/MediaBrowser.Common/Kernel/BaseKernel.cs +++ b/MediaBrowser.Common/Kernel/BaseKernel.cs @@ -6,12 +6,12 @@ using System.Configuration; using System.IO; using System.Linq; using System.Reflection; -using MediaBrowser.Model.Configuration; using MediaBrowser.Common.Json; using MediaBrowser.Common.Net; using MediaBrowser.Common.Plugins; -using MediaBrowser.Model.Progress; using MediaBrowser.Logging; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Progress; namespace MediaBrowser.Common.Kernel { @@ -267,12 +267,18 @@ namespace MediaBrowser.Common.Kernel return null; } + /// + /// Disposes all resources currently in use. + /// public void Dispose() { DisposeHttpServer(); DisposeLogger(); } + /// + /// Disposes the current HttpServer + /// private void DisposeHttpServer() { if (HttpServer != null) @@ -281,6 +287,9 @@ namespace MediaBrowser.Common.Kernel } } + /// + /// Disposes the current Logger instance + /// private void DisposeLogger() { if (Logger.LoggerInstance != null) diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index 025add7c51..a6a0594965 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -318,7 +318,7 @@ namespace MediaBrowser.Controller /// Gets all studios from all recursive children of a folder /// The CategoryInfo class is used to keep track of the number of times each studio appears /// - public IEnumerable GetAllStudios(Folder parent, Guid userId) + public IEnumerable> GetAllStudios(Folder parent, Guid userId) { Dictionary data = new Dictionary(); @@ -348,7 +348,7 @@ namespace MediaBrowser.Controller } // Now go through the dictionary and create a Category for each studio - List list = new List(); + List> list = new List>(); foreach (string key in data.Keys) { @@ -357,11 +357,10 @@ namespace MediaBrowser.Controller if (entity != null) { - list.Add(new CategoryInfo() + list.Add(new CategoryInfo() { - Name = entity.Name, - ItemCount = data[key], - PrimaryImagePath = entity.PrimaryImagePath + Item = entity, + ItemCount = data[key] }); } } @@ -373,7 +372,7 @@ namespace MediaBrowser.Controller /// Gets all genres from all recursive children of a folder /// The CategoryInfo class is used to keep track of the number of times each genres appears /// - public IEnumerable GetAllGenres(Folder parent, Guid userId) + public IEnumerable> GetAllGenres(Folder parent, Guid userId) { Dictionary data = new Dictionary(); @@ -403,7 +402,7 @@ namespace MediaBrowser.Controller } // Now go through the dictionary and create a Category for each genre - List list = new List(); + List> list = new List>(); foreach (string key in data.Keys) { @@ -412,11 +411,10 @@ namespace MediaBrowser.Controller if (entity != null) { - list.Add(new CategoryInfo() + list.Add(new CategoryInfo() { - Name = entity.Name, - ItemCount = data[key], - PrimaryImagePath = entity.PrimaryImagePath + Item = entity, + ItemCount = data[key] }); } } diff --git a/MediaBrowser.Logging/StreamLogger.cs b/MediaBrowser.Logging/StreamLogger.cs index f1a16c7ad1..c4ad7b80f6 100644 --- a/MediaBrowser.Logging/StreamLogger.cs +++ b/MediaBrowser.Logging/StreamLogger.cs @@ -4,6 +4,9 @@ using System.Text; namespace MediaBrowser.Logging { + /// + /// Provides a Logger that can write to any Stream + /// public class StreamLogger : BaseLogger { private Stream Stream { get; set; } diff --git a/MediaBrowser.Model/Entities/ApiBaseItem.cs b/MediaBrowser.Model/Entities/ApiBaseItem.cs index 665a2f6c66..b3fbbbcdef 100644 --- a/MediaBrowser.Model/Entities/ApiBaseItem.cs +++ b/MediaBrowser.Model/Entities/ApiBaseItem.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using MediaBrowser.Model.Users; namespace MediaBrowser.Model.Entities @@ -26,5 +27,15 @@ namespace MediaBrowser.Model.Entities public bool IsFolder { get; set; } public string Type { get; set; } + + public bool IsType(Type type) + { + return IsType(type.Name); + } + + public bool IsType(string type) + { + return Type.Equals(type, StringComparison.OrdinalIgnoreCase); + } } } diff --git a/MediaBrowser.Model/Entities/CategoryInfo.cs b/MediaBrowser.Model/Entities/CategoryInfo.cs index adf8ac7d96..934a0ae1d1 100644 --- a/MediaBrowser.Model/Entities/CategoryInfo.cs +++ b/MediaBrowser.Model/Entities/CategoryInfo.cs @@ -2,16 +2,14 @@ namespace MediaBrowser.Model.Entities { /// - /// This is a stub class used by the api to get IBN types in a compact format + /// This is a stub class used by the api to get IBN types along with their item counts /// - public class CategoryInfo + public class CategoryInfo { /// - /// The name of the genre, year, studio, etc + /// The actual genre, year, studio, etc /// - public string Name { get; set; } - - public string PrimaryImagePath { get; set; } + public T Item { get; set; } /// /// The number of items that have the genre, year, studio, etc diff --git a/MediaBrowser.Model/Entities/ImageType.cs b/MediaBrowser.Model/Entities/ImageType.cs new file mode 100644 index 0000000000..d9bb06cbca --- /dev/null +++ b/MediaBrowser.Model/Entities/ImageType.cs @@ -0,0 +1,13 @@ + +namespace MediaBrowser.Model.Entities +{ + public enum ImageType + { + Primary, + Art, + Backdrop, + Banner, + Logo, + Thumbnail + } +} diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 9338b3884e..0157fcbf85 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -47,6 +47,7 @@ +