|
|
|
@ -86,7 +86,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
return HandleGetSystemUpdateID();
|
|
|
|
|
|
|
|
|
|
if (string.Equals(methodName, "Browse", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
return HandleBrowse(methodParams, user, deviceId).Result;
|
|
|
|
|
return HandleBrowse(methodParams, user, deviceId);
|
|
|
|
|
|
|
|
|
|
if (string.Equals(methodName, "X_GetFeatureList", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
return HandleXGetFeatureList();
|
|
|
|
@ -98,10 +98,10 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
return HandleXSetBookmark(methodParams, user);
|
|
|
|
|
|
|
|
|
|
if (string.Equals(methodName, "Search", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
return HandleSearch(methodParams, user, deviceId).Result;
|
|
|
|
|
return HandleSearch(methodParams, user, deviceId);
|
|
|
|
|
|
|
|
|
|
if (string.Equals(methodName, "X_BrowseByLetter", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
return HandleX_BrowseByLetter(methodParams, user, deviceId).Result;
|
|
|
|
|
return HandleX_BrowseByLetter(methodParams, user, deviceId);
|
|
|
|
|
|
|
|
|
|
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
|
|
|
|
|
}
|
|
|
|
@ -203,7 +203,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
return defaultValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async Task<IEnumerable<KeyValuePair<string, string>>> HandleBrowse(IDictionary<string, string> sparams, User user, string deviceId)
|
|
|
|
|
private IEnumerable<KeyValuePair<string, string>> HandleBrowse(IDictionary<string, string> sparams, User user, string deviceId)
|
|
|
|
|
{
|
|
|
|
|
var id = sparams["ObjectID"];
|
|
|
|
|
var flag = sparams["BrowseFlag"];
|
|
|
|
@ -263,7 +263,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
|
|
|
|
|
if (item.IsDisplayedAsFolder || serverItem.StubType.HasValue)
|
|
|
|
|
{
|
|
|
|
|
var childrenResult = (await GetUserItems(item, serverItem.StubType, user, sortCriteria, start, requestedCount).ConfigureAwait(false));
|
|
|
|
|
var childrenResult = (GetUserItems(item, serverItem.StubType, user, sortCriteria, start, requestedCount));
|
|
|
|
|
|
|
|
|
|
_didlBuilder.WriteFolderElement(writer, item, serverItem.StubType, null, childrenResult.TotalRecordCount, filter, id);
|
|
|
|
|
}
|
|
|
|
@ -276,7 +276,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var childrenResult = (await GetUserItems(item, serverItem.StubType, user, sortCriteria, start, requestedCount).ConfigureAwait(false));
|
|
|
|
|
var childrenResult = (GetUserItems(item, serverItem.StubType, user, sortCriteria, start, requestedCount));
|
|
|
|
|
totalCount = childrenResult.TotalRecordCount;
|
|
|
|
|
|
|
|
|
|
provided = childrenResult.Items.Length;
|
|
|
|
@ -288,7 +288,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
|
|
|
|
|
if (childItem.IsDisplayedAsFolder || displayStubType.HasValue)
|
|
|
|
|
{
|
|
|
|
|
var childCount = (await GetUserItems(childItem, displayStubType, user, sortCriteria, null, 0).ConfigureAwait(false))
|
|
|
|
|
var childCount = (GetUserItems(childItem, displayStubType, user, sortCriteria, null, 0))
|
|
|
|
|
.TotalRecordCount;
|
|
|
|
|
|
|
|
|
|
_didlBuilder.WriteFolderElement(writer, childItem, displayStubType, item, childCount, filter);
|
|
|
|
@ -314,13 +314,13 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Task<IEnumerable<KeyValuePair<string, string>>> HandleX_BrowseByLetter(IDictionary<string, string> sparams, User user, string deviceId)
|
|
|
|
|
private IEnumerable<KeyValuePair<string, string>> HandleX_BrowseByLetter(IDictionary<string, string> sparams, User user, string deviceId)
|
|
|
|
|
{
|
|
|
|
|
// TODO: Implement this method
|
|
|
|
|
return HandleSearch(sparams, user, deviceId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async Task<IEnumerable<KeyValuePair<string, string>>> HandleSearch(IDictionary<string, string> sparams, User user, string deviceId)
|
|
|
|
|
private IEnumerable<KeyValuePair<string, string>> HandleSearch(IDictionary<string, string> sparams, User user, string deviceId)
|
|
|
|
|
{
|
|
|
|
|
var searchCriteria = new SearchCriteria(GetValueOrDefault(sparams, "SearchCriteria", ""));
|
|
|
|
|
var sortCriteria = new SortCriteria(GetValueOrDefault(sparams, "SortCriteria", ""));
|
|
|
|
@ -374,7 +374,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
|
|
|
|
|
var item = serverItem.Item;
|
|
|
|
|
|
|
|
|
|
var childrenResult = (await GetChildrenSorted(item, user, searchCriteria, sortCriteria, start, requestedCount).ConfigureAwait(false));
|
|
|
|
|
var childrenResult = (GetChildrenSorted(item, user, searchCriteria, sortCriteria, start, requestedCount));
|
|
|
|
|
|
|
|
|
|
totalCount = childrenResult.TotalRecordCount;
|
|
|
|
|
|
|
|
|
@ -384,7 +384,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
{
|
|
|
|
|
if (i.IsDisplayedAsFolder)
|
|
|
|
|
{
|
|
|
|
|
var childCount = (await GetChildrenSorted(i, user, searchCriteria, sortCriteria, null, 0).ConfigureAwait(false))
|
|
|
|
|
var childCount = (GetChildrenSorted(i, user, searchCriteria, sortCriteria, null, 0))
|
|
|
|
|
.TotalRecordCount;
|
|
|
|
|
|
|
|
|
|
_didlBuilder.WriteFolderElement(writer, i, null, item, childCount, filter);
|
|
|
|
@ -410,7 +410,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Task<QueryResult<BaseItem>> GetChildrenSorted(BaseItem item, User user, SearchCriteria search, SortCriteria sort, int? startIndex, int? limit)
|
|
|
|
|
private QueryResult<BaseItem> GetChildrenSorted(BaseItem item, User user, SearchCriteria search, SortCriteria sort, int? startIndex, int? limit)
|
|
|
|
|
{
|
|
|
|
|
var folder = (Folder)item;
|
|
|
|
|
|
|
|
|
@ -470,7 +470,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
return new DtoOptions(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async Task<QueryResult<ServerItem>> GetUserItems(BaseItem item, StubType? stubType, User user, SortCriteria sort, int? startIndex, int? limit)
|
|
|
|
|
private QueryResult<ServerItem> GetUserItems(BaseItem item, StubType? stubType, User user, SortCriteria sort, int? startIndex, int? limit)
|
|
|
|
|
{
|
|
|
|
|
if (item is MusicGenre)
|
|
|
|
|
{
|
|
|
|
@ -518,15 +518,15 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
StartIndex = startIndex,
|
|
|
|
|
User = user,
|
|
|
|
|
IsMissing = false,
|
|
|
|
|
PresetViews = new[] {CollectionType.Movies, CollectionType.TvShows, CollectionType.Music},
|
|
|
|
|
ExcludeItemTypes = new[] {typeof (Game).Name, typeof (Book).Name},
|
|
|
|
|
PresetViews = new[] { CollectionType.Movies, CollectionType.TvShows, CollectionType.Music },
|
|
|
|
|
ExcludeItemTypes = new[] { typeof(Game).Name, typeof(Book).Name },
|
|
|
|
|
IsPlaceHolder = false,
|
|
|
|
|
DtoOptions = GetDtoOptions()
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
SetSorting(query, sort, folder.IsPreSorted);
|
|
|
|
|
|
|
|
|
|
var queryResult = await folder.GetItems(query).ConfigureAwait(false);
|
|
|
|
|
var queryResult = folder.GetItems(query);
|
|
|
|
|
|
|
|
|
|
return ToResult(queryResult);
|
|
|
|
|
}
|
|
|
|
@ -557,8 +557,8 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
{
|
|
|
|
|
Recursive = true,
|
|
|
|
|
ParentId = parentId,
|
|
|
|
|
GenreIds = new[] {item.Id.ToString("N")},
|
|
|
|
|
IncludeItemTypes = new[] {typeof (MusicAlbum).Name},
|
|
|
|
|
GenreIds = new[] { item.Id.ToString("N") },
|
|
|
|
|
IncludeItemTypes = new[] { typeof(MusicAlbum).Name },
|
|
|
|
|
Limit = limit,
|
|
|
|
|
StartIndex = startIndex,
|
|
|
|
|
DtoOptions = GetDtoOptions()
|
|
|
|
|