Added more IBN api methods
This commit is contained in:
parent
d4d2e85486
commit
9c456c63c8
53
MediaBrowser.Api/HttpHandlers/GenreHandler.cs
Normal file
53
MediaBrowser.Api/HttpHandlers/GenreHandler.cs
Normal file
|
@ -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
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a single genre
|
||||||
|
/// </summary>
|
||||||
|
public class GenreHandler : BaseJsonHandler<IBNItem<Genre>>
|
||||||
|
{
|
||||||
|
protected override IBNItem<Genre> 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a Genre
|
||||||
|
/// </summary>
|
||||||
|
private IBNItem<Genre> GetGenre(Folder parent, User user, string name)
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
// Get all the allowed recursive children
|
||||||
|
IEnumerable<BaseItem> 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<Genre>()
|
||||||
|
{
|
||||||
|
Item = Kernel.Instance.ItemController.GetGenre(name),
|
||||||
|
BaseItemCount = count
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,7 +23,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>
|
||||||
public IEnumerable<IBNItem<Genre>> GetAllGenres(Folder parent, User user)
|
private IEnumerable<IBNItem<Genre>> GetAllGenres(Folder parent, User user)
|
||||||
{
|
{
|
||||||
Dictionary<string, int> data = new Dictionary<string, int>();
|
Dictionary<string, int> data = new Dictionary<string, int>();
|
||||||
|
|
||||||
|
|
|
@ -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.Controller;
|
||||||
|
using MediaBrowser.Model.DTO;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
|
||||||
namespace MediaBrowser.Api.HttpHandlers
|
namespace MediaBrowser.Api.HttpHandlers
|
||||||
{
|
{
|
||||||
public class PersonHandler : BaseJsonHandler<Person>
|
/// <summary>
|
||||||
|
/// Gets a single Person
|
||||||
|
/// </summary>
|
||||||
|
public class PersonHandler : BaseJsonHandler<IBNItem<Person>>
|
||||||
{
|
{
|
||||||
protected override Person GetObjectToSerialize()
|
protected override IBNItem<Person> 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a Person
|
||||||
|
/// </summary>
|
||||||
|
private IBNItem<Person> GetPerson(Folder parent, User user, string name)
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
// Get all the allowed recursive children
|
||||||
|
IEnumerable<BaseItem> 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<Person>()
|
||||||
|
{
|
||||||
|
Item = Kernel.Instance.ItemController.GetPerson(name),
|
||||||
|
BaseItemCount = count
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
53
MediaBrowser.Api/HttpHandlers/StudioHandler.cs
Normal file
53
MediaBrowser.Api/HttpHandlers/StudioHandler.cs
Normal file
|
@ -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
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a single studio
|
||||||
|
/// </summary>
|
||||||
|
public class StudioHandler : BaseJsonHandler<IBNItem<Studio>>
|
||||||
|
{
|
||||||
|
protected override IBNItem<Studio> 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a Studio
|
||||||
|
/// </summary>
|
||||||
|
private IBNItem<Studio> GetStudio(Folder parent, User user, string name)
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
// Get all the allowed recursive children
|
||||||
|
IEnumerable<BaseItem> 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<Studio>()
|
||||||
|
{
|
||||||
|
Item = Kernel.Instance.ItemController.GetStudio(name),
|
||||||
|
BaseItemCount = count
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
53
MediaBrowser.Api/HttpHandlers/YearHandler.cs
Normal file
53
MediaBrowser.Api/HttpHandlers/YearHandler.cs
Normal file
|
@ -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
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a single year
|
||||||
|
/// </summary>
|
||||||
|
public class YearHandler : BaseJsonHandler<IBNItem<Year>>
|
||||||
|
{
|
||||||
|
protected override IBNItem<Year> 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));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a Year
|
||||||
|
/// </summary>
|
||||||
|
private IBNItem<Year> GetYear(Folder parent, User user, int year)
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
// Get all the allowed recursive children
|
||||||
|
IEnumerable<BaseItem> 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<Year>()
|
||||||
|
{
|
||||||
|
Item = Kernel.Instance.ItemController.GetYear(year),
|
||||||
|
BaseItemCount = count
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -49,6 +49,7 @@
|
||||||
<Compile Include="ApiService.cs" />
|
<Compile Include="ApiService.cs" />
|
||||||
<Compile Include="HttpHandlers\AudioHandler.cs" />
|
<Compile Include="HttpHandlers\AudioHandler.cs" />
|
||||||
<Compile Include="HttpHandlers\BaseMediaHandler.cs" />
|
<Compile Include="HttpHandlers\BaseMediaHandler.cs" />
|
||||||
|
<Compile Include="HttpHandlers\GenreHandler.cs" />
|
||||||
<Compile Include="HttpHandlers\GenresHandler.cs" />
|
<Compile Include="HttpHandlers\GenresHandler.cs" />
|
||||||
<Compile Include="HttpHandlers\ImageHandler.cs" />
|
<Compile Include="HttpHandlers\ImageHandler.cs" />
|
||||||
<Compile Include="HttpHandlers\ItemHandler.cs" />
|
<Compile Include="HttpHandlers\ItemHandler.cs" />
|
||||||
|
@ -56,9 +57,11 @@
|
||||||
<Compile Include="HttpHandlers\PersonHandler.cs" />
|
<Compile Include="HttpHandlers\PersonHandler.cs" />
|
||||||
<Compile Include="HttpHandlers\PluginConfigurationHandler.cs" />
|
<Compile Include="HttpHandlers\PluginConfigurationHandler.cs" />
|
||||||
<Compile Include="HttpHandlers\PluginsHandler.cs" />
|
<Compile Include="HttpHandlers\PluginsHandler.cs" />
|
||||||
|
<Compile Include="HttpHandlers\StudioHandler.cs" />
|
||||||
<Compile Include="HttpHandlers\StudiosHandler.cs" />
|
<Compile Include="HttpHandlers\StudiosHandler.cs" />
|
||||||
<Compile Include="HttpHandlers\UsersHandler.cs" />
|
<Compile Include="HttpHandlers\UsersHandler.cs" />
|
||||||
<Compile Include="HttpHandlers\VideoHandler.cs" />
|
<Compile Include="HttpHandlers\VideoHandler.cs" />
|
||||||
|
<Compile Include="HttpHandlers\YearHandler.cs" />
|
||||||
<Compile Include="HttpHandlers\YearsHandler.cs" />
|
<Compile Include="HttpHandlers\YearsHandler.cs" />
|
||||||
<Compile Include="ImageProcessor.cs" />
|
<Compile Include="ImageProcessor.cs" />
|
||||||
<Compile Include="Plugin.cs" />
|
<Compile Include="Plugin.cs" />
|
||||||
|
|
|
@ -85,6 +85,22 @@ namespace MediaBrowser.Api
|
||||||
{
|
{
|
||||||
return new VideoHandler();
|
return new VideoHandler();
|
||||||
}
|
}
|
||||||
|
else if (localPath.EndsWith("/api/person", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
return new PersonHandler();
|
||||||
|
}
|
||||||
|
else if (localPath.EndsWith("/api/genre", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
return new GenreHandler();
|
||||||
|
}
|
||||||
|
else if (localPath.EndsWith("/api/year", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
return new YearHandler();
|
||||||
|
}
|
||||||
|
else if (localPath.EndsWith("/api/studio", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
return new StudioHandler();
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -294,6 +294,58 @@ namespace MediaBrowser.ApiInteraction
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a studio
|
||||||
|
/// </summary>
|
||||||
|
public async Task<IBNItem<Studio>> GetStudioAsync(Guid userId, string name)
|
||||||
|
{
|
||||||
|
string url = ApiUrl + "/studio?userId=" + userId.ToString() + "&name=" + name;
|
||||||
|
|
||||||
|
using (Stream stream = await HttpClient.GetStreamAsync(url))
|
||||||
|
{
|
||||||
|
return JsonSerializer.DeserializeFromStream<IBNItem<Studio>>(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a genre
|
||||||
|
/// </summary>
|
||||||
|
public async Task<IBNItem<Genre>> GetGenreAsync(Guid userId, string name)
|
||||||
|
{
|
||||||
|
string url = ApiUrl + "/genre?userId=" + userId.ToString() + "&name=" + name;
|
||||||
|
|
||||||
|
using (Stream stream = await HttpClient.GetStreamAsync(url))
|
||||||
|
{
|
||||||
|
return JsonSerializer.DeserializeFromStream<IBNItem<Genre>>(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a person
|
||||||
|
/// </summary>
|
||||||
|
public async Task<IBNItem<Person>> GetPersonAsync(Guid userId, string name)
|
||||||
|
{
|
||||||
|
string url = ApiUrl + "/person?userId=" + userId.ToString() + "&name=" + name;
|
||||||
|
|
||||||
|
using (Stream stream = await HttpClient.GetStreamAsync(url))
|
||||||
|
{
|
||||||
|
return JsonSerializer.DeserializeFromStream<IBNItem<Person>>(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a year
|
||||||
|
/// </summary>
|
||||||
|
public async Task<IBNItem<Year>> GetYearAsync(Guid userId, int year)
|
||||||
|
{
|
||||||
|
string url = ApiUrl + "/year?userId=" + userId.ToString() + "&year=" + year;
|
||||||
|
|
||||||
|
using (Stream stream = await HttpClient.GetStreamAsync(url))
|
||||||
|
{
|
||||||
|
return JsonSerializer.DeserializeFromStream<IBNItem<Year>>(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
HttpClient.Dispose();
|
HttpClient.Dispose();
|
||||||
|
|
|
@ -4,6 +4,10 @@ using MediaBrowser.Model.Entities;
|
||||||
|
|
||||||
namespace MediaBrowser.Model.DTO
|
namespace MediaBrowser.Model.DTO
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// This is strictly used as a data transfer object from the api layer.
|
||||||
|
/// This holds information about a BaseItem in a format that is convenient for the client.
|
||||||
|
/// </summary>
|
||||||
public class DTOBaseItem : IHasProviderIds
|
public class DTOBaseItem : IHasProviderIds
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user