aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-29 15:37:05 -0400
committerLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-29 15:37:05 -0400
commitcaa369c1a37ff3b4755e1359e1e2ddbd3e8d9beb (patch)
treea5f2339c406127bcdf0bf975b38e3b408e2fe76c
parentcb7f04e4d3ff0a14dabb89ff828dde5a4703dc6b (diff)
A few serialization fixes
-rw-r--r--MediaBrowser.Api/ApiService.cs46
-rw-r--r--MediaBrowser.Api/HttpHandlers/GenresHandler.cs21
-rw-r--r--MediaBrowser.Api/HttpHandlers/StudiosHandler.cs21
-rw-r--r--MediaBrowser.Api/HttpHandlers/YearsHandler.cs21
-rw-r--r--MediaBrowser.Model/DTO/DTOBaseItem.cs4
-rw-r--r--MediaBrowser.Model/DTO/VideoInfo.cs7
-rw-r--r--MediaBrowser.Model/Entities/Video.cs2
7 files changed, 85 insertions, 37 deletions
diff --git a/MediaBrowser.Api/ApiService.cs b/MediaBrowser.Api/ApiService.cs
index e90755f5f..8c30f688e 100644
--- a/MediaBrowser.Api/ApiService.cs
+++ b/MediaBrowser.Api/ApiService.cs
@@ -58,7 +58,12 @@ namespace MediaBrowser.Api
dto.BackdropCount = item.BackdropImagePaths == null ? 0 : item.BackdropImagePaths.Count();
dto.DateCreated = item.DateCreated;
dto.DisplayMediaType = item.DisplayMediaType;
- dto.Genres = item.Genres;
+
+ if (item.Genres != null)
+ {
+ dto.Genres = item.Genres.ToArray();
+ }
+
dto.HasArt = !string.IsNullOrEmpty(item.ArtImagePath);
dto.HasBanner = !string.IsNullOrEmpty(item.BannerImagePath);
dto.HasLogo = !string.IsNullOrEmpty(item.LogoImagePath);
@@ -102,7 +107,12 @@ namespace MediaBrowser.Api
dto.ProviderIds = item.ProviderIds;
dto.RunTimeTicks = item.RunTimeTicks;
dto.SortName = item.SortName;
- dto.Taglines = item.Taglines;
+
+ if (item.Taglines != null)
+ {
+ dto.Taglines = item.Taglines.ToArray();
+ }
+
dto.TrailerUrl = item.TrailerUrl;
dto.Type = item.GetType().Name;
dto.UserRating = item.UserRating;
@@ -143,10 +153,18 @@ namespace MediaBrowser.Api
Width = video.Width,
Codec = video.Codec,
VideoType = video.VideoType,
- AudioStreams = video.AudioStreams,
- Subtitles = video.Subtitles,
ScanType = video.ScanType
};
+
+ if (video.AudioStreams != null)
+ {
+ dto.VideoInfo.AudioStreams = video.AudioStreams.ToArray();
+ }
+
+ if (video.Subtitles != null)
+ {
+ dto.VideoInfo.Subtitles = video.Subtitles.ToArray();
+ }
}
}
@@ -155,23 +173,21 @@ namespace MediaBrowser.Api
// Attach Studios by transforming them into BaseItemStudio (DTO)
if (item.Studios != null)
{
- IEnumerable<Studio> entities = await Task.WhenAll<Studio>(item.Studios.Select(c => Kernel.Instance.ItemController.GetStudio(c))).ConfigureAwait(false);
+ Studio[] entities = await Task.WhenAll<Studio>(item.Studios.Select(c => Kernel.Instance.ItemController.GetStudio(c))).ConfigureAwait(false);
- dto.Studios = item.Studios.Select(s =>
+ dto.Studios = new BaseItemStudio[entities.Length];
+
+ for (int i = 0; i < entities.Length; i++)
{
+ Studio entity = entities[i];
BaseItemStudio baseItemStudio = new BaseItemStudio();
- baseItemStudio.Name = s;
-
- Studio ibnObject = entities.First(i => i.Name.Equals(s, StringComparison.OrdinalIgnoreCase));
+ baseItemStudio.Name = entity.Name;
- if (ibnObject != null)
- {
- baseItemStudio.HasImage = !string.IsNullOrEmpty(ibnObject.PrimaryImagePath);
- }
+ baseItemStudio.HasImage = !string.IsNullOrEmpty(entity.PrimaryImagePath);
- return baseItemStudio;
- }).ToArray();
+ dto.Studios[i] = baseItemStudio;
+ }
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs
index 3280c3e32..b5608c0a3 100644
--- a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs
@@ -9,9 +9,9 @@ using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
- public class GenresHandler : BaseJsonHandler<IEnumerable<IBNItem>>
+ public class GenresHandler : BaseJsonHandler<IBNItem[]>
{
- protected override Task<IEnumerable<IBNItem>> GetObjectToSerialize()
+ protected override Task<IBNItem[]> GetObjectToSerialize()
{
Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
Guid userId = Guid.Parse(QueryString["userid"]);
@@ -24,7 +24,7 @@ namespace MediaBrowser.Api.HttpHandlers
/// 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
/// </summary>
- private async Task<IEnumerable<IBNItem>> GetAllGenres(Folder parent, User user)
+ private async Task<IBNItem[]> GetAllGenres(Folder parent, User user)
{
Dictionary<string, int> data = new Dictionary<string, int>();
@@ -53,9 +53,20 @@ namespace MediaBrowser.Api.HttpHandlers
}
}
- IEnumerable<Genre> entities = await Task.WhenAll<Genre>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetGenre(key); })).ConfigureAwait(false);
+ // Get the Genre objects
+ Genre[] entities = await Task.WhenAll<Genre>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetGenre(key); })).ConfigureAwait(false);
- return entities.Select(e => ApiService.GetIBNItem(e, data[e.Name]));
+ // Convert to an array of IBNItem
+ IBNItem[] items = new IBNItem[entities.Length];
+
+ for (int i = 0; i < entities.Length; i++)
+ {
+ Genre e = entities[i];
+
+ items[i] = ApiService.GetIBNItem(e, data[e.Name]);
+ }
+
+ return items;
}
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs
index 64348ac89..486aa762b 100644
--- a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs
@@ -9,9 +9,9 @@ using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
- public class StudiosHandler : BaseJsonHandler<IEnumerable<IBNItem>>
+ public class StudiosHandler : BaseJsonHandler<IBNItem[]>
{
- protected override Task<IEnumerable<IBNItem>> GetObjectToSerialize()
+ protected override Task<IBNItem[]> GetObjectToSerialize()
{
Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
Guid userId = Guid.Parse(QueryString["userid"]);
@@ -24,7 +24,7 @@ namespace MediaBrowser.Api.HttpHandlers
/// 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
/// </summary>
- private async Task<IEnumerable<IBNItem>> GetAllStudios(Folder parent, User user)
+ private async Task<IBNItem[]> GetAllStudios(Folder parent, User user)
{
Dictionary<string, int> data = new Dictionary<string, int>();
@@ -53,9 +53,20 @@ namespace MediaBrowser.Api.HttpHandlers
}
}
- IEnumerable<Studio> entities = await Task.WhenAll<Studio>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetStudio(key); })).ConfigureAwait(false);
+ // Get the Studio objects
+ Studio[] entities = await Task.WhenAll<Studio>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetStudio(key); })).ConfigureAwait(false);
- return entities.Select(e => ApiService.GetIBNItem(e, data[e.Name]));
+ // Convert to an array of IBNItem
+ IBNItem[] items = new IBNItem[entities.Length];
+
+ for (int i = 0; i < entities.Length; i++)
+ {
+ Studio e = entities[i];
+
+ items[i] = ApiService.GetIBNItem(e, data[e.Name]);
+ }
+
+ return items;
}
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs
index ee07ac8b0..ff05120a0 100644
--- a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs
@@ -9,9 +9,9 @@ using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
- public class YearsHandler : BaseJsonHandler<IEnumerable<IBNItem>>
+ public class YearsHandler : BaseJsonHandler<IBNItem[]>
{
- protected override Task<IEnumerable<IBNItem>> GetObjectToSerialize()
+ protected override Task<IBNItem[]> GetObjectToSerialize()
{
Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
Guid userId = Guid.Parse(QueryString["userid"]);
@@ -24,7 +24,7 @@ namespace MediaBrowser.Api.HttpHandlers
/// Gets all years from all recursive children of a folder
/// The CategoryInfo class is used to keep track of the number of times each year appears
/// </summary>
- private async Task<IEnumerable<IBNItem>> GetAllYears(Folder parent, User user)
+ private async Task<IBNItem[]> GetAllYears(Folder parent, User user)
{
Dictionary<int, int> data = new Dictionary<int, int>();
@@ -50,9 +50,20 @@ namespace MediaBrowser.Api.HttpHandlers
}
}
- IEnumerable<Year> entities = await Task.WhenAll<Year>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetYear(key); })).ConfigureAwait(false);
+ // Get the Year objects
+ Year[] entities = await Task.WhenAll<Year>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetYear(key); })).ConfigureAwait(false);
- return entities.Select(e => ApiService.GetIBNItem(e, data[int.Parse(e.Name)]));
+ // Convert to an array of IBNItem
+ IBNItem[] items = new IBNItem[entities.Length];
+
+ for (int i = 0; i < entities.Length; i++)
+ {
+ Year e = entities[i];
+
+ items[i] = ApiService.GetIBNItem(e, data[int.Parse(e.Name)]);
+ }
+
+ return items;
}
}
}
diff --git a/MediaBrowser.Model/DTO/DTOBaseItem.cs b/MediaBrowser.Model/DTO/DTOBaseItem.cs
index 7e85cc84e..c729db74b 100644
--- a/MediaBrowser.Model/DTO/DTOBaseItem.cs
+++ b/MediaBrowser.Model/DTO/DTOBaseItem.cs
@@ -37,10 +37,10 @@ namespace MediaBrowser.Model.DTO
public string Overview { get; set; }
[ProtoMember(9)]
- public IList<string> Taglines { get; set; }
+ public string[] Taglines { get; set; }
[ProtoMember(10)]
- public IList<string> Genres { get; set; }
+ public string[] Genres { get; set; }
[ProtoMember(11)]
public string DisplayMediaType { get; set; }
diff --git a/MediaBrowser.Model/DTO/VideoInfo.cs b/MediaBrowser.Model/DTO/VideoInfo.cs
index d55d06626..8e0d6f38f 100644
--- a/MediaBrowser.Model/DTO/VideoInfo.cs
+++ b/MediaBrowser.Model/DTO/VideoInfo.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Entities;
using ProtoBuf;
namespace MediaBrowser.Model.DTO
@@ -23,9 +22,9 @@ namespace MediaBrowser.Model.DTO
public VideoType VideoType { get; set; }
[ProtoMember(6)]
- public IEnumerable<SubtitleStream> Subtitles { get; set; }
+ public SubtitleStream[] Subtitles { get; set; }
[ProtoMember(7)]
- public IEnumerable<AudioStream> AudioStreams { get; set; }
+ public AudioStream[] AudioStreams { get; set; }
}
}
diff --git a/MediaBrowser.Model/Entities/Video.cs b/MediaBrowser.Model/Entities/Video.cs
index 5d0e06202..27a9ab821 100644
--- a/MediaBrowser.Model/Entities/Video.cs
+++ b/MediaBrowser.Model/Entities/Video.cs
@@ -49,7 +49,7 @@ namespace MediaBrowser.Model.Entities
[ProtoMember(2)]
public bool IsDefault { get; set; }
- [ProtoMember(2)]
+ [ProtoMember(3)]
public bool IsForced { get; set; }
}