mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-04-24 14:08:44 -04:00
Use Guid as API parameter type where possible
This commit is contained in:
parent
f660969e6c
commit
c083b29e29
23 changed files with 99 additions and 85 deletions
|
@ -538,20 +538,20 @@ namespace Emby.Server.Implementations.Channels
|
||||||
return _libraryManager.GetItemIds(
|
return _libraryManager.GetItemIds(
|
||||||
new InternalItemsQuery
|
new InternalItemsQuery
|
||||||
{
|
{
|
||||||
IncludeItemTypes = new[] { nameof(Channel) },
|
IncludeItemTypes = new[] {nameof(Channel)},
|
||||||
OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) }
|
OrderBy = new[] {(ItemSortBy.SortName, SortOrder.Ascending)}
|
||||||
}).Select(i => GetChannelFeatures(i.ToString("N", CultureInfo.InvariantCulture))).ToArray();
|
}).Select(i => GetChannelFeatures(i)).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public ChannelFeatures GetChannelFeatures(string id)
|
public ChannelFeatures GetChannelFeatures(Guid? id)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(id))
|
if (!id.HasValue)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException(nameof(id));
|
throw new ArgumentNullException(nameof(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
var channel = GetChannel(id);
|
var channel = GetChannel(id.Value);
|
||||||
var channelProvider = GetChannelProvider(channel);
|
var channelProvider = GetChannelProvider(channel);
|
||||||
|
|
||||||
return GetChannelFeaturesDto(channel, channelProvider, channelProvider.GetChannelFeatures());
|
return GetChannelFeaturesDto(channel, channelProvider, channelProvider.GetChannelFeatures());
|
||||||
|
|
|
@ -2474,6 +2474,21 @@ namespace Emby.Server.Implementations.Library
|
||||||
|
|
||||||
return RootFolder;
|
return RootFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BaseItem GetParentItem(Guid? parentId, Guid? userId)
|
||||||
|
{
|
||||||
|
if (parentId.HasValue)
|
||||||
|
{
|
||||||
|
return GetItemById(parentId.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (userId.HasValue && userId != Guid.Empty)
|
||||||
|
{
|
||||||
|
return GetUserRootFolder();
|
||||||
|
}
|
||||||
|
|
||||||
|
return RootFolder;
|
||||||
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public bool IsVideoFile(string path)
|
public bool IsVideoFile(string path)
|
||||||
|
|
|
@ -156,8 +156,8 @@ namespace Emby.Server.Implementations.Library
|
||||||
ExcludeItemTypes = excludeItemTypes.ToArray(),
|
ExcludeItemTypes = excludeItemTypes.ToArray(),
|
||||||
IncludeItemTypes = includeItemTypes.ToArray(),
|
IncludeItemTypes = includeItemTypes.ToArray(),
|
||||||
Limit = query.Limit,
|
Limit = query.Limit,
|
||||||
IncludeItemsByName = string.IsNullOrEmpty(query.ParentId),
|
IncludeItemsByName = query.ParentId.HasValue,
|
||||||
ParentId = string.IsNullOrEmpty(query.ParentId) ? Guid.Empty : new Guid(query.ParentId),
|
ParentId = query.ParentId ?? Guid.Empty,
|
||||||
OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) },
|
OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) },
|
||||||
Recursive = true,
|
Recursive = true,
|
||||||
|
|
||||||
|
|
|
@ -56,13 +56,11 @@ namespace Emby.Server.Implementations.TV
|
||||||
return GetResult(GetNextUpEpisodes(request, user, new[] { presentationUniqueKey }, dtoOptions), request);
|
return GetResult(GetNextUpEpisodes(request, user, new[] { presentationUniqueKey }, dtoOptions), request);
|
||||||
}
|
}
|
||||||
|
|
||||||
var parentIdGuid = string.IsNullOrEmpty(request.ParentId) ? (Guid?)null : new Guid(request.ParentId);
|
|
||||||
|
|
||||||
BaseItem[] parents;
|
BaseItem[] parents;
|
||||||
|
|
||||||
if (parentIdGuid.HasValue)
|
if (request.ParentId.HasValue)
|
||||||
{
|
{
|
||||||
var parent = _libraryManager.GetItemById(parentIdGuid.Value);
|
var parent = _libraryManager.GetItemById(request.ParentId.Value);
|
||||||
|
|
||||||
if (parent != null)
|
if (parent != null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,6 @@ using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Jellyfin.Api.Constants;
|
using Jellyfin.Api.Constants;
|
||||||
using Jellyfin.Api.Extensions;
|
using Jellyfin.Api.Extensions;
|
||||||
using Jellyfin.Api.Helpers;
|
|
||||||
using Jellyfin.Api.ModelBinders;
|
using Jellyfin.Api.ModelBinders;
|
||||||
using Jellyfin.Data.Entities;
|
using Jellyfin.Data.Entities;
|
||||||
using MediaBrowser.Controller.Dto;
|
using MediaBrowser.Controller.Dto;
|
||||||
|
@ -87,7 +86,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] int? startIndex,
|
[FromQuery] int? startIndex,
|
||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery] string? searchTerm,
|
[FromQuery] string? searchTerm,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
|
@ -124,11 +123,11 @@ namespace Jellyfin.Api.Controllers
|
||||||
if (userId.HasValue && !userId.Equals(Guid.Empty))
|
if (userId.HasValue && !userId.Equals(Guid.Empty))
|
||||||
{
|
{
|
||||||
user = _userManager.GetUserById(userId.Value);
|
user = _userManager.GetUserById(userId.Value);
|
||||||
parentItem = string.IsNullOrEmpty(parentId) ? _libraryManager.GetUserRootFolder() : _libraryManager.GetItemById(parentId);
|
parentItem = parentId.HasValue ? _libraryManager.GetItemById(parentId.Value) : _libraryManager.GetUserRootFolder();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parentItem = string.IsNullOrEmpty(parentId) ? _libraryManager.RootFolder : _libraryManager.GetItemById(parentId);
|
parentItem = parentId.HasValue ? _libraryManager.GetItemById(parentId.Value) : _libraryManager.RootFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
var query = new InternalItemsQuery(user)
|
var query = new InternalItemsQuery(user)
|
||||||
|
@ -157,15 +156,15 @@ namespace Jellyfin.Api.Controllers
|
||||||
EnableTotalRecordCount = enableTotalRecordCount
|
EnableTotalRecordCount = enableTotalRecordCount
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(parentId))
|
if (parentId.HasValue)
|
||||||
{
|
{
|
||||||
if (parentItem is Folder)
|
if (parentItem is Folder)
|
||||||
{
|
{
|
||||||
query.AncestorIds = new[] { new Guid(parentId) };
|
query.AncestorIds = new[] { parentId.Value };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
query.ItemIds = new[] { new Guid(parentId) };
|
query.ItemIds = new[] { parentId.Value };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -291,7 +290,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] int? startIndex,
|
[FromQuery] int? startIndex,
|
||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery] string? searchTerm,
|
[FromQuery] string? searchTerm,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
|
@ -328,11 +327,11 @@ namespace Jellyfin.Api.Controllers
|
||||||
if (userId.HasValue && !userId.Equals(Guid.Empty))
|
if (userId.HasValue && !userId.Equals(Guid.Empty))
|
||||||
{
|
{
|
||||||
user = _userManager.GetUserById(userId.Value);
|
user = _userManager.GetUserById(userId.Value);
|
||||||
parentItem = string.IsNullOrEmpty(parentId) ? _libraryManager.GetUserRootFolder() : _libraryManager.GetItemById(parentId);
|
parentItem = parentId.HasValue ? _libraryManager.GetItemById(parentId.Value) : _libraryManager.GetUserRootFolder();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parentItem = string.IsNullOrEmpty(parentId) ? _libraryManager.RootFolder : _libraryManager.GetItemById(parentId);
|
parentItem = parentId.HasValue ? _libraryManager.GetItemById(parentId.Value) : _libraryManager.RootFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
var query = new InternalItemsQuery(user)
|
var query = new InternalItemsQuery(user)
|
||||||
|
@ -361,15 +360,15 @@ namespace Jellyfin.Api.Controllers
|
||||||
EnableTotalRecordCount = enableTotalRecordCount
|
EnableTotalRecordCount = enableTotalRecordCount
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(parentId))
|
if (parentId.HasValue)
|
||||||
{
|
{
|
||||||
if (parentItem is Folder)
|
if (parentItem is Folder)
|
||||||
{
|
{
|
||||||
query.AncestorIds = new[] { new Guid(parentId) };
|
query.AncestorIds = new[] { parentId.Value };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
query.ItemIds = new[] { new Guid(parentId) };
|
query.ItemIds = new[] { parentId.Value };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
/// <response code="200">Channel features returned.</response>
|
/// <response code="200">Channel features returned.</response>
|
||||||
/// <returns>An <see cref="OkResult"/> containing the channel features.</returns>
|
/// <returns>An <see cref="OkResult"/> containing the channel features.</returns>
|
||||||
[HttpGet("{channelId}/Features")]
|
[HttpGet("{channelId}/Features")]
|
||||||
public ActionResult<ChannelFeatures> GetChannelFeatures([FromRoute, Required] string channelId)
|
public ActionResult<ChannelFeatures> GetChannelFeatures([FromRoute, Required] Guid channelId)
|
||||||
{
|
{
|
||||||
return _channelManager.GetChannelFeatures(channelId);
|
return _channelManager.GetChannelFeatures(channelId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,13 +50,13 @@ namespace Jellyfin.Api.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
public ActionResult<QueryFiltersLegacy> GetQueryFiltersLegacy(
|
public ActionResult<QueryFiltersLegacy> GetQueryFiltersLegacy(
|
||||||
[FromQuery] Guid? userId,
|
[FromQuery] Guid? userId,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] mediaTypes)
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] mediaTypes)
|
||||||
{
|
{
|
||||||
var parentItem = string.IsNullOrEmpty(parentId)
|
var parentItem = parentId.HasValue
|
||||||
? null
|
? _libraryManager.GetItemById(parentId.Value)
|
||||||
: _libraryManager.GetItemById(parentId);
|
: null;
|
||||||
|
|
||||||
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
||||||
? _userManager.GetUserById(userId.Value)
|
? _userManager.GetUserById(userId.Value)
|
||||||
|
@ -71,11 +71,11 @@ namespace Jellyfin.Api.Controllers
|
||||||
parentItem = null;
|
parentItem = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var item = string.IsNullOrEmpty(parentId)
|
var item = parentId.HasValue
|
||||||
? user == null
|
? parentItem
|
||||||
|
: user == null
|
||||||
? _libraryManager.RootFolder
|
? _libraryManager.RootFolder
|
||||||
: _libraryManager.GetUserRootFolder()
|
: _libraryManager.GetUserRootFolder();
|
||||||
: parentItem;
|
|
||||||
|
|
||||||
var query = new InternalItemsQuery
|
var query = new InternalItemsQuery
|
||||||
{
|
{
|
||||||
|
@ -140,7 +140,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
public ActionResult<QueryFilters> GetQueryFilters(
|
public ActionResult<QueryFilters> GetQueryFilters(
|
||||||
[FromQuery] Guid? userId,
|
[FromQuery] Guid? userId,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
[FromQuery] bool? isAiring,
|
[FromQuery] bool? isAiring,
|
||||||
[FromQuery] bool? isMovie,
|
[FromQuery] bool? isMovie,
|
||||||
|
@ -150,9 +150,9 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] bool? isSeries,
|
[FromQuery] bool? isSeries,
|
||||||
[FromQuery] bool? recursive)
|
[FromQuery] bool? recursive)
|
||||||
{
|
{
|
||||||
var parentItem = string.IsNullOrEmpty(parentId)
|
var parentItem = parentId.HasValue
|
||||||
? null
|
? _libraryManager.GetItemById(parentId.Value)
|
||||||
: _libraryManager.GetItemById(parentId);
|
: null;
|
||||||
|
|
||||||
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
||||||
? _userManager.GetUserById(userId.Value)
|
? _userManager.GetUserById(userId.Value)
|
||||||
|
|
|
@ -72,7 +72,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] int? startIndex,
|
[FromQuery] int? startIndex,
|
||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery] string? searchTerm,
|
[FromQuery] string? searchTerm,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
|
@ -109,15 +109,15 @@ namespace Jellyfin.Api.Controllers
|
||||||
EnableTotalRecordCount = enableTotalRecordCount
|
EnableTotalRecordCount = enableTotalRecordCount
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(parentId))
|
if (parentId.HasValue)
|
||||||
{
|
{
|
||||||
if (parentItem is Folder)
|
if (parentItem is Folder)
|
||||||
{
|
{
|
||||||
query.AncestorIds = new[] { new Guid(parentId) };
|
query.AncestorIds = new[] { parentId.Value };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
query.ItemIds = new[] { new Guid(parentId) };
|
query.ItemIds = new[] { parentId.Value };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -176,7 +176,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] bool? recursive,
|
[FromQuery] bool? recursive,
|
||||||
[FromQuery] string? searchTerm,
|
[FromQuery] string? searchTerm,
|
||||||
[FromQuery] string? sortOrder,
|
[FromQuery] string? sortOrder,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
|
@ -241,9 +241,9 @@ namespace Jellyfin.Api.Controllers
|
||||||
|
|
||||||
BaseItem? item = null;
|
BaseItem? item = null;
|
||||||
QueryResult<BaseItem> result;
|
QueryResult<BaseItem> result;
|
||||||
if (!string.IsNullOrEmpty(parentId))
|
if (parentId.HasValue)
|
||||||
{
|
{
|
||||||
item = _libraryManager.GetItemById(parentId);
|
item = _libraryManager.GetItemById(parentId.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
item ??= _libraryManager.GetUserRootFolder();
|
item ??= _libraryManager.GetUserRootFolder();
|
||||||
|
@ -343,7 +343,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
ItemIds = ids,
|
ItemIds = ids,
|
||||||
MinCommunityRating = minCommunityRating,
|
MinCommunityRating = minCommunityRating,
|
||||||
MinCriticRating = minCriticRating,
|
MinCriticRating = minCriticRating,
|
||||||
ParentId = string.IsNullOrWhiteSpace(parentId) ? Guid.Empty : new Guid(parentId),
|
ParentId = parentId ?? Guid.Empty,
|
||||||
ParentIndexNumber = parentIndexNumber,
|
ParentIndexNumber = parentIndexNumber,
|
||||||
EnableTotalRecordCount = enableTotalRecordCount,
|
EnableTotalRecordCount = enableTotalRecordCount,
|
||||||
ExcludeItemIds = excludeItemIds,
|
ExcludeItemIds = excludeItemIds,
|
||||||
|
@ -615,7 +615,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] bool? recursive,
|
[FromQuery] bool? recursive,
|
||||||
[FromQuery] string? searchTerm,
|
[FromQuery] string? searchTerm,
|
||||||
[FromQuery] string? sortOrder,
|
[FromQuery] string? sortOrder,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
|
@ -773,7 +773,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] int? startIndex,
|
[FromQuery] int? startIndex,
|
||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery] string? searchTerm,
|
[FromQuery] string? searchTerm,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] mediaTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] mediaTypes,
|
||||||
[FromQuery] bool? enableUserData,
|
[FromQuery] bool? enableUserData,
|
||||||
|
@ -785,7 +785,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] bool? enableImages = true)
|
[FromQuery] bool? enableImages = true)
|
||||||
{
|
{
|
||||||
var user = _userManager.GetUserById(userId);
|
var user = _userManager.GetUserById(userId);
|
||||||
var parentIdGuid = string.IsNullOrWhiteSpace(parentId) ? Guid.Empty : new Guid(parentId);
|
var parentIdGuid = parentId ?? Guid.Empty;
|
||||||
var dtoOptions = new DtoOptions { Fields = fields }
|
var dtoOptions = new DtoOptions { Fields = fields }
|
||||||
.AddClientFields(Request)
|
.AddClientFields(Request)
|
||||||
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes);
|
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes);
|
||||||
|
|
|
@ -362,7 +362,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
public ActionResult DeleteItems([FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] ids)
|
public ActionResult DeleteItems([FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] ids)
|
||||||
{
|
{
|
||||||
if (ids.Length == 0)
|
if (ids.Length == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,7 +65,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[HttpGet("Recommendations")]
|
[HttpGet("Recommendations")]
|
||||||
public ActionResult<IEnumerable<RecommendationDto>> GetMovieRecommendations(
|
public ActionResult<IEnumerable<RecommendationDto>> GetMovieRecommendations(
|
||||||
[FromQuery] Guid? userId,
|
[FromQuery] Guid? userId,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery] int categoryLimit = 5,
|
[FromQuery] int categoryLimit = 5,
|
||||||
[FromQuery] int itemLimit = 8)
|
[FromQuery] int itemLimit = 8)
|
||||||
|
@ -78,7 +78,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
|
|
||||||
var categories = new List<RecommendationDto>();
|
var categories = new List<RecommendationDto>();
|
||||||
|
|
||||||
var parentIdGuid = string.IsNullOrWhiteSpace(parentId) ? Guid.Empty : new Guid(parentId);
|
var parentIdGuid = parentId ?? Guid.Empty;
|
||||||
|
|
||||||
var query = new InternalItemsQuery(user)
|
var query = new InternalItemsQuery(user)
|
||||||
{
|
{
|
||||||
|
|
|
@ -72,7 +72,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] int? startIndex,
|
[FromQuery] int? startIndex,
|
||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery] string? searchTerm,
|
[FromQuery] string? searchTerm,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
|
@ -109,15 +109,15 @@ namespace Jellyfin.Api.Controllers
|
||||||
EnableTotalRecordCount = enableTotalRecordCount
|
EnableTotalRecordCount = enableTotalRecordCount
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(parentId))
|
if (parentId.HasValue)
|
||||||
{
|
{
|
||||||
if (parentItem is Folder)
|
if (parentItem is Folder)
|
||||||
{
|
{
|
||||||
query.AncestorIds = new[] { new Guid(parentId) };
|
query.AncestorIds = new[] { parentId.Value };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
query.ItemIds = new[] { new Guid(parentId) };
|
query.ItemIds = new[] { parentId.Value };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,13 +45,13 @@ namespace Jellyfin.Api.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
public async Task<ActionResult<PackageInfo>> GetPackageInfo(
|
public async Task<ActionResult<PackageInfo>> GetPackageInfo(
|
||||||
[FromRoute, Required] string name,
|
[FromRoute, Required] string name,
|
||||||
[FromQuery] string? assemblyGuid)
|
[FromQuery] Guid? assemblyGuid)
|
||||||
{
|
{
|
||||||
var packages = await _installationManager.GetAvailablePackages().ConfigureAwait(false);
|
var packages = await _installationManager.GetAvailablePackages().ConfigureAwait(false);
|
||||||
var result = _installationManager.FilterPackages(
|
var result = _installationManager.FilterPackages(
|
||||||
packages,
|
packages,
|
||||||
name,
|
name,
|
||||||
string.IsNullOrEmpty(assemblyGuid) ? default : Guid.Parse(assemblyGuid))
|
assemblyGuid ?? default)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
|
||||||
if (result == null)
|
if (result == null)
|
||||||
|
@ -92,7 +92,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[Authorize(Policy = Policies.RequiresElevation)]
|
[Authorize(Policy = Policies.RequiresElevation)]
|
||||||
public async Task<ActionResult> InstallPackage(
|
public async Task<ActionResult> InstallPackage(
|
||||||
[FromRoute, Required] string name,
|
[FromRoute, Required] string name,
|
||||||
[FromQuery] string? assemblyGuid,
|
[FromQuery] Guid? assemblyGuid,
|
||||||
[FromQuery] string? version,
|
[FromQuery] string? version,
|
||||||
[FromQuery] string? repositoryUrl)
|
[FromQuery] string? repositoryUrl)
|
||||||
{
|
{
|
||||||
|
@ -106,7 +106,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
var package = _installationManager.GetCompatibleVersions(
|
var package = _installationManager.GetCompatibleVersions(
|
||||||
packages,
|
packages,
|
||||||
name,
|
name,
|
||||||
string.IsNullOrEmpty(assemblyGuid) ? Guid.Empty : Guid.Parse(assemblyGuid),
|
assemblyGuid ?? Guid.Empty,
|
||||||
specificVersion: string.IsNullOrEmpty(version) ? null : Version.Parse(version))
|
specificVersion: string.IsNullOrEmpty(version) ? null : Version.Parse(version))
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludePersonTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludePersonTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] personTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] personTypes,
|
||||||
[FromQuery] string? appearsInItemId,
|
[FromQuery] Guid? appearsInItemId,
|
||||||
[FromQuery] Guid? userId,
|
[FromQuery] Guid? userId,
|
||||||
[FromQuery] bool? enableImages = true)
|
[FromQuery] bool? enableImages = true)
|
||||||
{
|
{
|
||||||
|
@ -102,7 +102,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
NameContains = searchTerm,
|
NameContains = searchTerm,
|
||||||
User = user,
|
User = user,
|
||||||
IsFavorite = !isFavorite.HasValue && isFavoriteInFilters ? true : isFavorite,
|
IsFavorite = !isFavorite.HasValue && isFavoriteInFilters ? true : isFavorite,
|
||||||
AppearsInItemId = string.IsNullOrEmpty(appearsInItemId) ? Guid.Empty : Guid.Parse(appearsInItemId),
|
AppearsInItemId = appearsInItemId ?? Guid.Empty,
|
||||||
Limit = limit ?? 0
|
Limit = limit ?? 0
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] mediaTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] mediaTypes,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery] bool? isMovie,
|
[FromQuery] bool? isMovie,
|
||||||
[FromQuery] bool? isSeries,
|
[FromQuery] bool? isSeries,
|
||||||
[FromQuery] bool? isNews,
|
[FromQuery] bool? isNews,
|
||||||
|
|
|
@ -71,7 +71,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] int? startIndex,
|
[FromQuery] int? startIndex,
|
||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery] string? searchTerm,
|
[FromQuery] string? searchTerm,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
|
@ -109,15 +109,15 @@ namespace Jellyfin.Api.Controllers
|
||||||
EnableTotalRecordCount = enableTotalRecordCount
|
EnableTotalRecordCount = enableTotalRecordCount
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(parentId))
|
if (parentId.HasValue)
|
||||||
{
|
{
|
||||||
if (parentItem is Folder)
|
if (parentItem is Folder)
|
||||||
{
|
{
|
||||||
query.AncestorIds = new[] { new Guid(parentId) };
|
query.AncestorIds = new[] { parentId.Value };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
query.ItemIds = new[] { new Guid(parentId) };
|
query.ItemIds = new[] { parentId.Value };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] bool? recursive,
|
[FromQuery] bool? recursive,
|
||||||
[FromQuery] string? searchTerm,
|
[FromQuery] string? searchTerm,
|
||||||
[FromQuery] string? sortOrder,
|
[FromQuery] string? sortOrder,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFilter[] filters,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFilter[] filters,
|
||||||
|
|
|
@ -76,7 +76,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery] string? seriesId,
|
[FromQuery] string? seriesId,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery] bool? enableImges,
|
[FromQuery] bool? enableImges,
|
||||||
[FromQuery] int? imageTypeLimit,
|
[FromQuery] int? imageTypeLimit,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes,
|
||||||
|
@ -132,7 +132,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] int? startIndex,
|
[FromQuery] int? startIndex,
|
||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery] bool? enableImges,
|
[FromQuery] bool? enableImges,
|
||||||
[FromQuery] int? imageTypeLimit,
|
[FromQuery] int? imageTypeLimit,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes,
|
||||||
|
@ -144,7 +144,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
|
|
||||||
var minPremiereDate = DateTime.Now.Date.ToUniversalTime().AddDays(-1);
|
var minPremiereDate = DateTime.Now.Date.ToUniversalTime().AddDays(-1);
|
||||||
|
|
||||||
var parentIdGuid = string.IsNullOrWhiteSpace(parentId) ? Guid.Empty : new Guid(parentId);
|
var parentIdGuid = parentId ?? Guid.Empty;
|
||||||
|
|
||||||
var options = new DtoOptions { Fields = fields }
|
var options = new DtoOptions { Fields = fields }
|
||||||
.AddClientFields(Request)
|
.AddClientFields(Request)
|
||||||
|
@ -194,14 +194,14 @@ namespace Jellyfin.Api.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
public ActionResult<QueryResult<BaseItemDto>> GetEpisodes(
|
public ActionResult<QueryResult<BaseItemDto>> GetEpisodes(
|
||||||
[FromRoute, Required] string seriesId,
|
[FromRoute, Required] Guid seriesId,
|
||||||
[FromQuery] Guid? userId,
|
[FromQuery] Guid? userId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery] int? season,
|
[FromQuery] int? season,
|
||||||
[FromQuery] string? seasonId,
|
[FromQuery] Guid? seasonId,
|
||||||
[FromQuery] bool? isMissing,
|
[FromQuery] bool? isMissing,
|
||||||
[FromQuery] string? adjacentTo,
|
[FromQuery] string? adjacentTo,
|
||||||
[FromQuery] string? startItemId,
|
[FromQuery] Guid? startItemId,
|
||||||
[FromQuery] int? startIndex,
|
[FromQuery] int? startIndex,
|
||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery] bool? enableImages,
|
[FromQuery] bool? enableImages,
|
||||||
|
@ -220,9 +220,9 @@ namespace Jellyfin.Api.Controllers
|
||||||
.AddClientFields(Request)
|
.AddClientFields(Request)
|
||||||
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes!);
|
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes!);
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(seasonId)) // Season id was supplied. Get episodes by season id.
|
if (seasonId.HasValue) // Season id was supplied. Get episodes by season id.
|
||||||
{
|
{
|
||||||
var item = _libraryManager.GetItemById(new Guid(seasonId));
|
var item = _libraryManager.GetItemById(seasonId.Value);
|
||||||
if (!(item is Season seasonItem))
|
if (!(item is Season seasonItem))
|
||||||
{
|
{
|
||||||
return NotFound("No season exists with Id " + seasonId);
|
return NotFound("No season exists with Id " + seasonId);
|
||||||
|
@ -264,10 +264,10 @@ namespace Jellyfin.Api.Controllers
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(startItemId))
|
if (startItemId.HasValue)
|
||||||
{
|
{
|
||||||
episodes = episodes
|
episodes = episodes
|
||||||
.SkipWhile(i => !string.Equals(i.Id.ToString("N", CultureInfo.InvariantCulture), startItemId, StringComparison.OrdinalIgnoreCase))
|
.SkipWhile(i => startItemId.Value.Equals(i.Id))
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
public ActionResult<QueryResult<BaseItemDto>> GetSeasons(
|
public ActionResult<QueryResult<BaseItemDto>> GetSeasons(
|
||||||
[FromRoute, Required] string seriesId,
|
[FromRoute, Required] Guid seriesId,
|
||||||
[FromQuery] Guid? userId,
|
[FromQuery] Guid? userId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery] bool? isSpecialSeason,
|
[FromQuery] bool? isSpecialSeason,
|
||||||
|
|
|
@ -71,7 +71,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] int? startIndex,
|
[FromQuery] int? startIndex,
|
||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery] string? sortOrder,
|
[FromQuery] string? sortOrder,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] Guid? parentId,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] excludeItemTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
|
@ -94,11 +94,11 @@ namespace Jellyfin.Api.Controllers
|
||||||
if (userId.HasValue && !userId.Equals(Guid.Empty))
|
if (userId.HasValue && !userId.Equals(Guid.Empty))
|
||||||
{
|
{
|
||||||
user = _userManager.GetUserById(userId.Value);
|
user = _userManager.GetUserById(userId.Value);
|
||||||
parentItem = string.IsNullOrEmpty(parentId) ? _libraryManager.GetUserRootFolder() : _libraryManager.GetItemById(parentId);
|
parentItem = parentId.HasValue ? _libraryManager.GetItemById(parentId.Value) : _libraryManager.GetUserRootFolder();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parentItem = string.IsNullOrEmpty(parentId) ? _libraryManager.RootFolder : _libraryManager.GetItemById(parentId);
|
parentItem = parentId.HasValue ? _libraryManager.GetItemById(parentId.Value) : _libraryManager.RootFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
IList<BaseItem> items;
|
IList<BaseItem> items;
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace MediaBrowser.Controller.Channels
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">The identifier.</param>
|
/// <param name="id">The identifier.</param>
|
||||||
/// <returns>ChannelFeatures.</returns>
|
/// <returns>ChannelFeatures.</returns>
|
||||||
ChannelFeatures GetChannelFeatures(string id);
|
ChannelFeatures GetChannelFeatures(Guid? id);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets all channel features.
|
/// Gets all channel features.
|
||||||
|
|
|
@ -574,5 +574,7 @@ namespace MediaBrowser.Controller.Library
|
||||||
void RunMetadataSavers(IReadOnlyList<BaseItem> items, ItemUpdateType updateReason);
|
void RunMetadataSavers(IReadOnlyList<BaseItem> items, ItemUpdateType updateReason);
|
||||||
|
|
||||||
BaseItem GetParentItem(string parentId, Guid? userId);
|
BaseItem GetParentItem(string parentId, Guid? userId);
|
||||||
|
|
||||||
|
BaseItem GetParentItem(Guid? parentId, Guid? userId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace MediaBrowser.Model.Querying
|
||||||
/// Gets or sets the parent identifier.
|
/// Gets or sets the parent identifier.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The parent identifier.</value>
|
/// <value>The parent identifier.</value>
|
||||||
public string ParentId { get; set; }
|
public Guid? ParentId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the series id.
|
/// Gets or sets the series id.
|
||||||
|
|
|
@ -47,7 +47,7 @@ namespace MediaBrowser.Model.Search
|
||||||
|
|
||||||
public string[] ExcludeItemTypes { get; set; }
|
public string[] ExcludeItemTypes { get; set; }
|
||||||
|
|
||||||
public string ParentId { get; set; }
|
public Guid? ParentId { get; set; }
|
||||||
|
|
||||||
public bool? IsMovie { get; set; }
|
public bool? IsMovie { get; set; }
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue