aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/BaseApiService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/BaseApiService.cs')
-rw-r--r--MediaBrowser.Api/BaseApiService.cs84
1 files changed, 42 insertions, 42 deletions
diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs
index 0f1d240d0..d3cc18d4b 100644
--- a/MediaBrowser.Api/BaseApiService.cs
+++ b/MediaBrowser.Api/BaseApiService.cs
@@ -178,13 +178,7 @@ namespace MediaBrowser.Api
{
if (name.IndexOf(BaseItem.SlugChar) != -1)
{
- var result = libraryManager.GetItemList(new InternalItemsQuery
- {
- SlugName = name,
- IncludeItemTypes = new[] { typeof(MusicArtist).Name },
- DtoOptions = dtoOptions
-
- }).OfType<MusicArtist>().FirstOrDefault();
+ var result = GetItemFromSlugName<MusicArtist>(libraryManager, name, dtoOptions);
if (result != null)
{
@@ -199,13 +193,7 @@ namespace MediaBrowser.Api
{
if (name.IndexOf(BaseItem.SlugChar) != -1)
{
- var result = libraryManager.GetItemList(new InternalItemsQuery
- {
- SlugName = name,
- IncludeItemTypes = new[] { typeof(Studio).Name },
- DtoOptions = dtoOptions
-
- }).OfType<Studio>().FirstOrDefault();
+ var result = GetItemFromSlugName<Studio>(libraryManager, name, dtoOptions);
if (result != null)
{
@@ -220,13 +208,7 @@ namespace MediaBrowser.Api
{
if (name.IndexOf(BaseItem.SlugChar) != -1)
{
- var result = libraryManager.GetItemList(new InternalItemsQuery
- {
- SlugName = name,
- IncludeItemTypes = new[] { typeof(Genre).Name },
- DtoOptions = dtoOptions
-
- }).OfType<Genre>().FirstOrDefault();
+ var result = GetItemFromSlugName<Genre>(libraryManager, name, dtoOptions);
if (result != null)
{
@@ -241,13 +223,7 @@ namespace MediaBrowser.Api
{
if (name.IndexOf(BaseItem.SlugChar) != -1)
{
- var result = libraryManager.GetItemList(new InternalItemsQuery
- {
- SlugName = name,
- IncludeItemTypes = new[] { typeof(MusicGenre).Name },
- DtoOptions = dtoOptions
-
- }).OfType<MusicGenre>().FirstOrDefault();
+ var result = GetItemFromSlugName<MusicGenre>(libraryManager, name, dtoOptions);
if (result != null)
{
@@ -262,13 +238,7 @@ namespace MediaBrowser.Api
{
if (name.IndexOf(BaseItem.SlugChar) != -1)
{
- var result = libraryManager.GetItemList(new InternalItemsQuery
- {
- SlugName = name,
- IncludeItemTypes = new[] { typeof(GameGenre).Name },
- DtoOptions = dtoOptions
-
- }).OfType<GameGenre>().FirstOrDefault();
+ var result = GetItemFromSlugName<GameGenre>(libraryManager, name, dtoOptions);
if (result != null)
{
@@ -283,13 +253,7 @@ namespace MediaBrowser.Api
{
if (name.IndexOf(BaseItem.SlugChar) != -1)
{
- var result = libraryManager.GetItemList(new InternalItemsQuery
- {
- SlugName = name,
- IncludeItemTypes = new[] { typeof(Person).Name },
- DtoOptions = dtoOptions
-
- }).OfType<Person>().FirstOrDefault();
+ var result = GetItemFromSlugName<Person>(libraryManager, name, dtoOptions);
if (result != null)
{
@@ -300,6 +264,42 @@ namespace MediaBrowser.Api
return libraryManager.GetPerson(name);
}
+ private T GetItemFromSlugName<T>(ILibraryManager libraryManager, string name, DtoOptions dtoOptions)
+ where T : BaseItem, new()
+ {
+ var result = libraryManager.GetItemList(new InternalItemsQuery
+ {
+ Name = name.Replace(BaseItem.SlugChar, '&'),
+ IncludeItemTypes = new[] { typeof(T).Name },
+ DtoOptions = dtoOptions
+
+ }).OfType<Person>().FirstOrDefault();
+
+ if (result == null)
+ {
+ result = libraryManager.GetItemList(new InternalItemsQuery
+ {
+ Name = name.Replace(BaseItem.SlugChar, '/'),
+ IncludeItemTypes = new[] { typeof(T).Name },
+ DtoOptions = dtoOptions
+
+ }).OfType<Person>().FirstOrDefault();
+ }
+
+ if (result == null)
+ {
+ result = libraryManager.GetItemList(new InternalItemsQuery
+ {
+ Name = name.Replace(BaseItem.SlugChar, '?'),
+ IncludeItemTypes = new[] { typeof(T).Name },
+ DtoOptions = dtoOptions
+
+ }).OfType<Person>().FirstOrDefault();
+ }
+
+ return result as T;
+ }
+
protected string GetPathValue(int index)
{
var pathInfo = Parse(Request.PathInfo);