From 9c456c63c8d29301a36eb3bb5cbb5fa53688e0ee Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Sat, 18 Aug 2012 12:27:34 -0400 Subject: Added more IBN api methods --- MediaBrowser.Api/HttpHandlers/GenreHandler.cs | 53 ++++++++++++++++++++++++++ MediaBrowser.Api/HttpHandlers/GenresHandler.cs | 2 +- MediaBrowser.Api/HttpHandlers/PersonHandler.cs | 47 +++++++++++++++++++++-- MediaBrowser.Api/HttpHandlers/StudioHandler.cs | 53 ++++++++++++++++++++++++++ MediaBrowser.Api/HttpHandlers/YearHandler.cs | 53 ++++++++++++++++++++++++++ 5 files changed, 203 insertions(+), 5 deletions(-) create mode 100644 MediaBrowser.Api/HttpHandlers/GenreHandler.cs create mode 100644 MediaBrowser.Api/HttpHandlers/StudioHandler.cs create mode 100644 MediaBrowser.Api/HttpHandlers/YearHandler.cs (limited to 'MediaBrowser.Api/HttpHandlers') diff --git a/MediaBrowser.Api/HttpHandlers/GenreHandler.cs b/MediaBrowser.Api/HttpHandlers/GenreHandler.cs new file mode 100644 index 0000000000..2b0d1c57d3 --- /dev/null +++ b/MediaBrowser.Api/HttpHandlers/GenreHandler.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Controller; +using MediaBrowser.Model.DTO; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Api.HttpHandlers +{ + /// + /// Gets a single genre + /// + public class GenreHandler : BaseJsonHandler> + { + protected override IBNItem GetObjectToSerialize() + { + Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; + Guid userId = Guid.Parse(QueryString["userid"]); + User user = Kernel.Instance.Users.First(u => u.Id == userId); + + string name = QueryString["name"]; + + return GetGenre(parent, user, name); + } + + /// + /// Gets a Genre + /// + private IBNItem GetGenre(Folder parent, User user, string name) + { + int count = 0; + + // Get all the allowed recursive children + IEnumerable allItems = parent.GetParentalAllowedRecursiveChildren(user); + + foreach (var item in allItems) + { + if (item.Genres != null && item.Genres.Any(s => s.Equals(name, StringComparison.OrdinalIgnoreCase))) + { + count++; + } + } + + // Get the original entity so that we can also supply the PrimaryImagePath + return new IBNItem() + { + Item = Kernel.Instance.ItemController.GetGenre(name), + BaseItemCount = count + }; + } + } +} diff --git a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs index c0f2e9eb3b..1134eb5689 100644 --- a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs @@ -23,7 +23,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 /// - public IEnumerable> GetAllGenres(Folder parent, User user) + private IEnumerable> GetAllGenres(Folder parent, User user) { Dictionary data = new Dictionary(); diff --git a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs index 513840b81e..75cccfac60 100644 --- a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs @@ -1,14 +1,53 @@ -using MediaBrowser.Common.Net.Handlers; +using System; +using System.Collections.Generic; +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 PersonHandler : BaseJsonHandler + /// + /// Gets a single Person + /// + public class PersonHandler : BaseJsonHandler> { - protected override Person GetObjectToSerialize() + protected override IBNItem GetObjectToSerialize() { - return Kernel.Instance.ItemController.GetPerson(QueryString["name"]); + Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; + Guid userId = Guid.Parse(QueryString["userid"]); + User user = Kernel.Instance.Users.First(u => u.Id == userId); + + string name = QueryString["name"]; + + return GetPerson(parent, user, name); + } + + /// + /// Gets a Person + /// + private IBNItem GetPerson(Folder parent, User user, string name) + { + int count = 0; + + // Get all the allowed recursive children + IEnumerable allItems = parent.GetParentalAllowedRecursiveChildren(user); + + foreach (var item in allItems) + { + if (item.People != null && item.People.Any(s => s.Name.Equals(name, StringComparison.OrdinalIgnoreCase))) + { + count++; + } + } + + // Get the original entity so that we can also supply the PrimaryImagePath + return new IBNItem() + { + Item = Kernel.Instance.ItemController.GetPerson(name), + BaseItemCount = count + }; } } } diff --git a/MediaBrowser.Api/HttpHandlers/StudioHandler.cs b/MediaBrowser.Api/HttpHandlers/StudioHandler.cs new file mode 100644 index 0000000000..40daadc70f --- /dev/null +++ b/MediaBrowser.Api/HttpHandlers/StudioHandler.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Controller; +using MediaBrowser.Model.DTO; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Api.HttpHandlers +{ + /// + /// Gets a single studio + /// + public class StudioHandler : BaseJsonHandler> + { + protected override IBNItem GetObjectToSerialize() + { + Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; + Guid userId = Guid.Parse(QueryString["userid"]); + User user = Kernel.Instance.Users.First(u => u.Id == userId); + + string name = QueryString["name"]; + + return GetStudio(parent, user, name); + } + + /// + /// Gets a Studio + /// + private IBNItem GetStudio(Folder parent, User user, string name) + { + int count = 0; + + // Get all the allowed recursive children + IEnumerable allItems = parent.GetParentalAllowedRecursiveChildren(user); + + foreach (var item in allItems) + { + if (item.Studios != null && item.Studios.Any(s => s.Equals(name, StringComparison.OrdinalIgnoreCase))) + { + count++; + } + } + + // Get the original entity so that we can also supply the PrimaryImagePath + return new IBNItem() + { + Item = Kernel.Instance.ItemController.GetStudio(name), + BaseItemCount = count + }; + } + } +} diff --git a/MediaBrowser.Api/HttpHandlers/YearHandler.cs b/MediaBrowser.Api/HttpHandlers/YearHandler.cs new file mode 100644 index 0000000000..89cde99433 --- /dev/null +++ b/MediaBrowser.Api/HttpHandlers/YearHandler.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Controller; +using MediaBrowser.Model.DTO; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Api.HttpHandlers +{ + /// + /// Gets a single year + /// + public class YearHandler : BaseJsonHandler> + { + protected override IBNItem GetObjectToSerialize() + { + Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; + Guid userId = Guid.Parse(QueryString["userid"]); + User user = Kernel.Instance.Users.First(u => u.Id == userId); + + string year = QueryString["year"]; + + return GetYear(parent, user, int.Parse(year)); + } + + /// + /// Gets a Year + /// + private IBNItem GetYear(Folder parent, User user, int year) + { + int count = 0; + + // Get all the allowed recursive children + IEnumerable allItems = parent.GetParentalAllowedRecursiveChildren(user); + + foreach (var item in allItems) + { + if (item.ProductionYear.HasValue && item.ProductionYear.Value == year) + { + count++; + } + } + + // Get the original entity so that we can also supply the PrimaryImagePath + return new IBNItem() + { + Item = Kernel.Instance.ItemController.GetYear(year), + BaseItemCount = count + }; + } + } +} -- cgit v1.2.3