diff options
Diffstat (limited to 'MediaBrowser.Api')
| -rw-r--r-- | MediaBrowser.Api/ApiService.cs | 147 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/GenresHandler.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/ItemHandler.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/ItemListHandler.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/StudiosHandler.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/UsersHandler.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/VideoHandler.cs | 16 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/YearsHandler.cs | 1 |
8 files changed, 121 insertions, 70 deletions
diff --git a/MediaBrowser.Api/ApiService.cs b/MediaBrowser.Api/ApiService.cs index 5a787c0e4..be99ef239 100644 --- a/MediaBrowser.Api/ApiService.cs +++ b/MediaBrowser.Api/ApiService.cs @@ -6,7 +6,6 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Users;
namespace MediaBrowser.Api
{
@@ -22,72 +21,91 @@ namespace MediaBrowser.Api return Kernel.Instance.GetItemById(guid);
}
- /// <summary>
- /// Takes a BaseItem and returns the actual object that will be serialized by the api
- /// </summary>
- public static BaseItemContainer<BaseItem> GetSerializationObject(BaseItem item, bool includeChildren, Guid userId)
+ public static DTOBaseItem GetDTOBaseItem(BaseItem item, User user,
+ bool includeChildren = true,
+ bool includePeople = true)
{
- User user = Kernel.Instance.Users.First(u => u.Id == userId);
-
- BaseItemContainer<BaseItem> wrapper = new BaseItemContainer<BaseItem>()
- {
- Item = item,
- UserItemData = user.GetItemData(item.Id),
- Type = item.GetType().Name,
- IsFolder = (item is Folder)
- };
-
- if (string.IsNullOrEmpty(item.LogoImagePath))
- {
- wrapper.ParentLogoItemId = GetParentLogoItemId(item);
- }
-
- if (item.BackdropImagePaths == null || !item.BackdropImagePaths.Any())
+ DTOBaseItem dto = new DTOBaseItem();
+
+ dto.AspectRatio = item.AspectRatio;
+ dto.BackdropCount = item.BackdropImagePaths == null ? 0 : item.BackdropImagePaths.Count();
+ dto.DateCreated = item.DateCreated;
+ dto.DisplayMediaType = item.DisplayMediaType;
+ dto.Genres = item.Genres;
+ dto.HasArt = !string.IsNullOrEmpty(item.ArtImagePath);
+ dto.HasBanner = !string.IsNullOrEmpty(item.BannerImagePath);
+ dto.HasLogo = !string.IsNullOrEmpty(item.LogoImagePath);
+ dto.HasPrimaryImage = !string.IsNullOrEmpty(item.LogoImagePath);
+ dto.HasThumb = !string.IsNullOrEmpty(item.ThumbnailImagePath);
+ dto.Id = item.Id;
+ dto.IndexNumber = item.IndexNumber;
+ dto.IsFolder = item is Folder;
+ dto.LocalTrailerCount = item.LocalTrailers == null ? 0 : item.LocalTrailers.Count();
+ dto.Name = item.Name;
+ dto.OfficialRating = item.OfficialRating;
+ dto.Overview = item.Overview;
+
+ // If there are no backdrops, indicate what parent has them in case the UI wants to allow inheritance
+ if (dto.BackdropCount == 0)
{
int backdropCount;
- wrapper.ParentBackdropItemId = GetParentBackdropItemId(item, out backdropCount);
- wrapper.ParentBackdropCount = backdropCount;
+ dto.ParentBackdropItemId = GetParentBackdropItemId(item, out backdropCount);
+ dto.ParentBackdropCount = backdropCount;
}
if (item.Parent != null)
{
- wrapper.ParentId = item.Parent.Id;
+ dto.ParentId = item.Parent.Id;
}
- if (includeChildren)
+ // If there is no logo, indicate what parent has one in case the UI wants to allow inheritance
+ if (!dto.HasLogo)
{
- var folder = item as Folder;
+ dto.ParentLogoItemId = GetParentLogoItemId(item);
+ }
- if (folder != null)
- {
- wrapper.Children = folder.GetParentalAllowedChildren(user).Select(c => GetSerializationObject(c, false, userId));
- }
+ dto.Path = item.Path;
- // Attach People by transforming them into BaseItemPerson (DTO)
- if (item.People != null)
- {
- wrapper.People = item.People.Select(p =>
- {
- BaseItemPerson baseItemPerson = new BaseItemPerson();
+ dto.PremiereDate = item.PremiereDate;
+ dto.ProductionYear = item.ProductionYear;
+ dto.ProviderIds = item.ProviderIds;
+ dto.RunTimeTicks = item.RunTimeTicks;
+ dto.SortName = item.SortName;
+ dto.Taglines = item.Taglines;
+ dto.TrailerUrl = item.TrailerUrl;
+ dto.Type = item.GetType().Name;
+ dto.UserRating = item.UserRating;
- baseItemPerson.PersonInfo = p;
+ dto.UserData = item.GetUserData(user);
- Person ibnObject = Kernel.Instance.ItemController.GetPerson(p.Name);
+ AttachStudios(dto, item);
- if (ibnObject != null)
- {
- baseItemPerson.PrimaryImagePath = ibnObject.PrimaryImagePath;
- }
+ if (includeChildren)
+ {
+ AttachChildren(dto, item, user);
+ }
- return baseItemPerson;
- });
- }
+ if (includePeople)
+ {
+ AttachPeople(dto, item);
}
+ Folder folder = item as Folder;
+
+ if (folder != null)
+ {
+ dto.SpecialCounts = folder.GetSpecialCounts(user);
+ }
+
+ return dto;
+ }
+
+ private static void AttachStudios(DTOBaseItem dto, BaseItem item)
+ {
// Attach Studios by transforming them into BaseItemStudio (DTO)
if (item.Studios != null)
{
- wrapper.Studios = item.Studios.Select(s =>
+ dto.Studios = item.Studios.Select(s =>
{
BaseItemStudio baseItemStudio = new BaseItemStudio();
@@ -97,14 +115,47 @@ namespace MediaBrowser.Api if (ibnObject != null)
{
- baseItemStudio.PrimaryImagePath = ibnObject.PrimaryImagePath;
+ baseItemStudio.HasImage = !string.IsNullOrEmpty(ibnObject.PrimaryImagePath);
}
return baseItemStudio;
});
}
+ }
+
+ private static void AttachChildren(DTOBaseItem dto, BaseItem item, User user)
+ {
+ var folder = item as Folder;
+
+ if (folder != null)
+ {
+ dto.Children = folder.GetParentalAllowedChildren(user).Select(c => GetDTOBaseItem(c, user, false, false));
+ }
- return wrapper;
+ dto.LocalTrailers = item.LocalTrailers;
+ }
+
+ private static void AttachPeople(DTOBaseItem dto, BaseItem item)
+ {
+ // Attach People by transforming them into BaseItemPerson (DTO)
+ if (item.People != null)
+ {
+ dto.People = item.People.Select(p =>
+ {
+ BaseItemPerson baseItemPerson = new BaseItemPerson();
+
+ baseItemPerson.PersonInfo = p;
+
+ Person ibnObject = Kernel.Instance.ItemController.GetPerson(p.Name);
+
+ if (ibnObject != null)
+ {
+ baseItemPerson.HasImage = !string.IsNullOrEmpty(ibnObject.PrimaryImagePath);
+ }
+
+ return baseItemPerson;
+ });
+ }
}
private static Guid? GetParentBackdropItemId(BaseItem item, out int backdropCount)
diff --git a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs index f7d259e45..c0f2e9eb3 100644 --- a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs @@ -5,7 +5,6 @@ using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Users;
namespace MediaBrowser.Api.HttpHandlers
{
diff --git a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs index 3df8e914f..dcbdf2a90 100644 --- a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs @@ -1,15 +1,18 @@ using System;
+using System.Linq;
using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
- public class ItemHandler : BaseJsonHandler<BaseItemContainer<BaseItem>>
+ public class ItemHandler : BaseJsonHandler<DTOBaseItem>
{
- protected sealed override BaseItemContainer<BaseItem> GetObjectToSerialize()
+ protected sealed override DTOBaseItem GetObjectToSerialize()
{
Guid userId = Guid.Parse(QueryString["userid"]);
+ User user = Kernel.Instance.Users.First(u => u.Id == userId);
BaseItem item = ItemToSerialize;
@@ -18,7 +21,7 @@ namespace MediaBrowser.Api.HttpHandlers return null;
}
- return ApiService.GetSerializationObject(item, true, userId);
+ return ApiService.GetDTOBaseItem(item, user);
}
protected virtual BaseItem ItemToSerialize
diff --git a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs index b4c13540c..84141a6bf 100644 --- a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs @@ -5,18 +5,18 @@ using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Users;
namespace MediaBrowser.Api.HttpHandlers
{
- public class ItemListHandler : BaseJsonHandler<IEnumerable<BaseItemContainer<BaseItem>>>
+ public class ItemListHandler : BaseJsonHandler<IEnumerable<DTOBaseItem>>
{
- protected override IEnumerable<BaseItemContainer<BaseItem>> GetObjectToSerialize()
+ protected override IEnumerable<DTOBaseItem> GetObjectToSerialize()
{
+ User user = Kernel.Instance.Users.First(u => u.Id == UserId);
+
return ItemsToSerialize.Select(i =>
{
- return ApiService.GetSerializationObject(i, false, UserId);
-
+ return ApiService.GetDTOBaseItem(i, user, includeChildren: false, includePeople: false);
});
}
@@ -27,7 +27,7 @@ namespace MediaBrowser.Api.HttpHandlers Folder parent = ApiService.GetItemById(ItemId) as Folder;
User user = Kernel.Instance.Users.First(u => u.Id == UserId);
-
+
if (ListType.Equals("inprogressitems", StringComparison.OrdinalIgnoreCase))
{
return parent.GetInProgressItems(user);
@@ -76,7 +76,7 @@ namespace MediaBrowser.Api.HttpHandlers return Guid.Parse(QueryString["userid"]);
}
}
-
+
private string ListType
{
get
diff --git a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs index 54c33416d..bef381000 100644 --- a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs @@ -5,7 +5,6 @@ using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Users;
namespace MediaBrowser.Api.HttpHandlers
{
diff --git a/MediaBrowser.Api/HttpHandlers/UsersHandler.cs b/MediaBrowser.Api/HttpHandlers/UsersHandler.cs index 64239005f..e1fe638ca 100644 --- a/MediaBrowser.Api/HttpHandlers/UsersHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/UsersHandler.cs @@ -1,7 +1,7 @@ using System.Collections.Generic;
using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
-using MediaBrowser.Model.Users;
+using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
diff --git a/MediaBrowser.Api/HttpHandlers/VideoHandler.cs b/MediaBrowser.Api/HttpHandlers/VideoHandler.cs index 343fcc70b..33a1a9c13 100644 --- a/MediaBrowser.Api/HttpHandlers/VideoHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/VideoHandler.cs @@ -48,11 +48,11 @@ namespace MediaBrowser.Api.HttpHandlers return true;
}
- AudioStream audio = LibraryItem.AudioStreams.FirstOrDefault();
+ AudioStream audioStream = (LibraryItem.AudioStreams ?? new AudioStream[] { }).FirstOrDefault();
- if (audio != null)
+ if (audioStream != null)
{
- if (RequiresAudioConversion(audio))
+ if (RequiresAudioConversion(audioStream))
{
return true;
}
@@ -121,7 +121,7 @@ namespace MediaBrowser.Api.HttpHandlers private string GetAudioArguments(string outputFormat)
{
- AudioStream audioStream = LibraryItem.AudioStreams.FirstOrDefault();
+ AudioStream audioStream = (LibraryItem.AudioStreams ?? new AudioStream[] { }).FirstOrDefault();
if (audioStream == null)
{
@@ -261,7 +261,7 @@ namespace MediaBrowser.Api.HttpHandlers }
}
- if (LibraryItem.VideoCodec.IndexOf("264", StringComparison.OrdinalIgnoreCase) != -1 || LibraryItem.VideoCodec.IndexOf("avc", StringComparison.OrdinalIgnoreCase) != -1)
+ if (LibraryItem.Codec.IndexOf("264", StringComparison.OrdinalIgnoreCase) != -1 || LibraryItem.Codec.IndexOf("avc", StringComparison.OrdinalIgnoreCase) != -1)
{
return false;
}
@@ -279,15 +279,15 @@ namespace MediaBrowser.Api.HttpHandlers }
}
- if (audio.AudioFormat.IndexOf("aac", StringComparison.OrdinalIgnoreCase) != -1)
+ if (audio.Format.IndexOf("aac", StringComparison.OrdinalIgnoreCase) != -1)
{
return false;
}
- if (audio.AudioFormat.IndexOf("ac-3", StringComparison.OrdinalIgnoreCase) != -1 || audio.AudioFormat.IndexOf("ac3", StringComparison.OrdinalIgnoreCase) != -1)
+ if (audio.Format.IndexOf("ac-3", StringComparison.OrdinalIgnoreCase) != -1 || audio.Format.IndexOf("ac3", StringComparison.OrdinalIgnoreCase) != -1)
{
return false;
}
- if (audio.AudioFormat.IndexOf("mpeg", StringComparison.OrdinalIgnoreCase) != -1 || audio.AudioFormat.IndexOf("mp3", StringComparison.OrdinalIgnoreCase) != -1)
+ if (audio.Format.IndexOf("mpeg", StringComparison.OrdinalIgnoreCase) != -1 || audio.Format.IndexOf("mp3", StringComparison.OrdinalIgnoreCase) != -1)
{
return false;
}
diff --git a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs index 071b980a7..3d9ae59f2 100644 --- a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs @@ -5,7 +5,6 @@ using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Users;
namespace MediaBrowser.Api.HttpHandlers
{
|
