aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/BaseApiService.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-07-01 12:24:26 -0400
committerGitHub <noreply@github.com>2017-07-01 12:24:26 -0400
commitff3713153ad2317e1c196f33ac2cba61b449a00e (patch)
tree84d2e6ed5bcb556a2395603b6403c8e992535e6b /MediaBrowser.Api/BaseApiService.cs
parentfad71a6c7d12c8b207cdf473c7dd7daafa53c174 (diff)
parent2dcad6b5977f5c5be81b18c42506ed8ad3fb73b6 (diff)
Merge pull request #2739 from MediaBrowser/beta
Beta
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);