A few serialization fixes

pull/702/head
LukePulverenti Luke Pulverenti luke pulverenti 12 years ago
parent cb7f04e4d3
commit caa369c1a3

@ -58,7 +58,12 @@ namespace MediaBrowser.Api
dto.BackdropCount = item.BackdropImagePaths == null ? 0 : item.BackdropImagePaths.Count(); dto.BackdropCount = item.BackdropImagePaths == null ? 0 : item.BackdropImagePaths.Count();
dto.DateCreated = item.DateCreated; dto.DateCreated = item.DateCreated;
dto.DisplayMediaType = item.DisplayMediaType; dto.DisplayMediaType = item.DisplayMediaType;
dto.Genres = item.Genres;
if (item.Genres != null)
{
dto.Genres = item.Genres.ToArray();
}
dto.HasArt = !string.IsNullOrEmpty(item.ArtImagePath); dto.HasArt = !string.IsNullOrEmpty(item.ArtImagePath);
dto.HasBanner = !string.IsNullOrEmpty(item.BannerImagePath); dto.HasBanner = !string.IsNullOrEmpty(item.BannerImagePath);
dto.HasLogo = !string.IsNullOrEmpty(item.LogoImagePath); dto.HasLogo = !string.IsNullOrEmpty(item.LogoImagePath);
@ -102,7 +107,12 @@ namespace MediaBrowser.Api
dto.ProviderIds = item.ProviderIds; dto.ProviderIds = item.ProviderIds;
dto.RunTimeTicks = item.RunTimeTicks; dto.RunTimeTicks = item.RunTimeTicks;
dto.SortName = item.SortName; dto.SortName = item.SortName;
dto.Taglines = item.Taglines;
if (item.Taglines != null)
{
dto.Taglines = item.Taglines.ToArray();
}
dto.TrailerUrl = item.TrailerUrl; dto.TrailerUrl = item.TrailerUrl;
dto.Type = item.GetType().Name; dto.Type = item.GetType().Name;
dto.UserRating = item.UserRating; dto.UserRating = item.UserRating;
@ -143,10 +153,18 @@ namespace MediaBrowser.Api
Width = video.Width, Width = video.Width,
Codec = video.Codec, Codec = video.Codec,
VideoType = video.VideoType, VideoType = video.VideoType,
AudioStreams = video.AudioStreams,
Subtitles = video.Subtitles,
ScanType = video.ScanType 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) // Attach Studios by transforming them into BaseItemStudio (DTO)
if (item.Studios != null) 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 baseItemStudio = new BaseItemStudio();
baseItemStudio.Name = s; baseItemStudio.Name = entity.Name;
Studio ibnObject = entities.First(i => i.Name.Equals(s, StringComparison.OrdinalIgnoreCase));
if (ibnObject != null) baseItemStudio.HasImage = !string.IsNullOrEmpty(entity.PrimaryImagePath);
{
baseItemStudio.HasImage = !string.IsNullOrEmpty(ibnObject.PrimaryImagePath);
}
return baseItemStudio; dto.Studios[i] = baseItemStudio;
}).ToArray(); }
} }
} }

@ -9,9 +9,9 @@ using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers 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; Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
Guid userId = Guid.Parse(QueryString["userid"]); Guid userId = Guid.Parse(QueryString["userid"]);
@ -24,7 +24,7 @@ namespace MediaBrowser.Api.HttpHandlers
/// Gets all genres from all recursive children of a folder /// 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 /// The CategoryInfo class is used to keep track of the number of times each genres appears
/// </summary> /// </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>(); 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;
} }
} }
} }

@ -9,9 +9,9 @@ using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers 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; Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
Guid userId = Guid.Parse(QueryString["userid"]); Guid userId = Guid.Parse(QueryString["userid"]);
@ -24,7 +24,7 @@ namespace MediaBrowser.Api.HttpHandlers
/// Gets all studios from all recursive children of a folder /// 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 /// The CategoryInfo class is used to keep track of the number of times each studio appears
/// </summary> /// </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>(); 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;
} }
} }
} }

@ -9,9 +9,9 @@ using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers 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; Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
Guid userId = Guid.Parse(QueryString["userid"]); Guid userId = Guid.Parse(QueryString["userid"]);
@ -24,7 +24,7 @@ namespace MediaBrowser.Api.HttpHandlers
/// Gets all years from all recursive children of a folder /// 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 /// The CategoryInfo class is used to keep track of the number of times each year appears
/// </summary> /// </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>(); 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;
} }
} }
} }

@ -37,10 +37,10 @@ namespace MediaBrowser.Model.DTO
public string Overview { get; set; } public string Overview { get; set; }
[ProtoMember(9)] [ProtoMember(9)]
public IList<string> Taglines { get; set; } public string[] Taglines { get; set; }
[ProtoMember(10)] [ProtoMember(10)]
public IList<string> Genres { get; set; } public string[] Genres { get; set; }
[ProtoMember(11)] [ProtoMember(11)]
public string DisplayMediaType { get; set; } public string DisplayMediaType { get; set; }

@ -1,5 +1,4 @@
using System.Collections.Generic; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Entities;
using ProtoBuf; using ProtoBuf;
namespace MediaBrowser.Model.DTO namespace MediaBrowser.Model.DTO
@ -23,9 +22,9 @@ namespace MediaBrowser.Model.DTO
public VideoType VideoType { get; set; } public VideoType VideoType { get; set; }
[ProtoMember(6)] [ProtoMember(6)]
public IEnumerable<SubtitleStream> Subtitles { get; set; } public SubtitleStream[] Subtitles { get; set; }
[ProtoMember(7)] [ProtoMember(7)]
public IEnumerable<AudioStream> AudioStreams { get; set; } public AudioStream[] AudioStreams { get; set; }
} }
} }

@ -49,7 +49,7 @@ namespace MediaBrowser.Model.Entities
[ProtoMember(2)] [ProtoMember(2)]
public bool IsDefault { get; set; } public bool IsDefault { get; set; }
[ProtoMember(2)] [ProtoMember(3)]
public bool IsForced { get; set; } public bool IsForced { get; set; }
} }

Loading…
Cancel
Save