fixes #232 - '/' in artist causes issues.

This commit is contained in:
Luke Pulverenti
2013-05-12 11:27:56 -04:00
parent 57d7e9fccc
commit 5c873d3ed1
12 changed files with 163 additions and 124 deletions

View File

@@ -103,7 +103,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{BaseItemDto}.</returns>
private async Task<BaseItemDto> GetItem(GetArtist request)
{
var item = await LibraryManager.GetArtist(request.Name).ConfigureAwait(false);
var item = await GetArtist(request.Name, LibraryManager).ConfigureAwait(false);
// Get everything
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true));
@@ -127,7 +127,9 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetArtistsItemCounts request)
{
var items = GetItems(request.UserId).OfType<Audio>().Where(i => i.HasArtist(request.Name)).ToList();
var name = DeSlugArtistName(request.Name, LibraryManager);
var items = GetItems(request.UserId).OfType<Audio>().Where(i => i.HasArtist(name)).ToList();
var counts = new ItemByNameCounts
{

View File

@@ -94,7 +94,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{BaseItemDto}.</returns>
private async Task<BaseItemDto> GetItem(GetGenre request)
{
var item = await LibraryManager.GetGenre(request.Name).ConfigureAwait(false);
var item = await GetGenre(request.Name, LibraryManager).ConfigureAwait(false);
// Get everything
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true));
@@ -156,7 +156,9 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetGenreItemCounts request)
{
var items = GetItems(request.UserId).Where(i => i.Genres != null && i.Genres.Contains(request.Name, StringComparer.OrdinalIgnoreCase)).ToList();
var name = DeSlugGenreName(request.Name, LibraryManager);
var items = GetItems(request.UserId).Where(i => i.Genres != null && i.Genres.Contains(name, StringComparer.OrdinalIgnoreCase)).ToList();
var counts = new ItemByNameCounts
{

View File

@@ -212,19 +212,19 @@ namespace MediaBrowser.Api.UserLibrary
if (string.Equals(type, "Persons"))
{
item = await LibraryManager.GetPerson(name).ConfigureAwait(false);
item = await GetPerson(name, LibraryManager).ConfigureAwait(false);
}
else if (string.Equals(type, "Artists"))
{
item = await LibraryManager.GetArtist(name).ConfigureAwait(false);
item = await GetArtist(name, LibraryManager).ConfigureAwait(false);
}
else if (string.Equals(type, "Genres"))
{
item = await LibraryManager.GetGenre(name).ConfigureAwait(false);
item = await GetGenre(name, LibraryManager).ConfigureAwait(false);
}
else if (string.Equals(type, "Studios"))
{
item = await LibraryManager.GetStudio(name).ConfigureAwait(false);
item = await GetStudio(name, LibraryManager).ConfigureAwait(false);
}
else
{
@@ -256,19 +256,19 @@ namespace MediaBrowser.Api.UserLibrary
if (string.Equals(type, "Persons"))
{
item = await LibraryManager.GetPerson(name).ConfigureAwait(false);
item = await GetPerson(name, LibraryManager).ConfigureAwait(false);
}
else if (string.Equals(type, "Artists"))
{
item = await LibraryManager.GetArtist(name).ConfigureAwait(false);
item = await GetArtist(name, LibraryManager).ConfigureAwait(false);
}
else if (string.Equals(type, "Genres"))
{
item = await LibraryManager.GetGenre(name).ConfigureAwait(false);
item = await GetGenre(name, LibraryManager).ConfigureAwait(false);
}
else if (string.Equals(type, "Studios"))
{
item = await LibraryManager.GetStudio(name).ConfigureAwait(false);
item = await GetStudio(name, LibraryManager).ConfigureAwait(false);
}
else
{

View File

@@ -109,7 +109,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{BaseItemDto}.</returns>
private async Task<BaseItemDto> GetItem(GetPerson request)
{
var item = await LibraryManager.GetPerson(request.Name).ConfigureAwait(false);
var item = await GetPerson(request.Name, LibraryManager).ConfigureAwait(false);
// Get everything
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true));
@@ -145,7 +145,9 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetPersonItemCounts request)
{
var items = GetItems(request.UserId).Where(i => i.People != null && i.People.Any(p => string.Equals(p.Name, request.Name, StringComparison.OrdinalIgnoreCase))).ToList();
var name = DeSlugPersonName(request.Name, LibraryManager);
var items = GetItems(request.UserId).Where(i => i.People != null && i.People.Any(p => string.Equals(p.Name, name, StringComparison.OrdinalIgnoreCase))).ToList();
var counts = new ItemByNameCounts
{

View File

@@ -94,7 +94,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{BaseItemDto}.</returns>
private async Task<BaseItemDto> GetItem(GetStudio request)
{
var item = await LibraryManager.GetStudio(request.Name).ConfigureAwait(false);
var item = await GetStudio(request.Name, LibraryManager).ConfigureAwait(false);
// Get everything
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true));
@@ -118,7 +118,9 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>System.Object.</returns>
public object Get(GetStudioItemCounts request)
{
var items = GetItems(request.UserId).Where(i => i.Studios != null && i.Studios.Contains(request.Name, StringComparer.OrdinalIgnoreCase)).ToList();
var name = DeSlugStudioName(request.Name, LibraryManager);
var items = GetItems(request.UserId).Where(i => i.Studios != null && i.Studios.Contains(name, StringComparer.OrdinalIgnoreCase)).ToList();
var counts = new ItemByNameCounts
{