diff options
| author | Cody Robibero <cody@robibe.ro> | 2024-03-03 13:51:31 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-03 13:51:31 -0700 |
| commit | 6e5ec99ea10557c141ed8d755e672cef628d35f0 (patch) | |
| tree | dc3aff5d566811d7f52030c10b25fdb1a02b9b5e /Jellyfin.Api/Controllers/SuggestionsController.cs | |
| parent | 8d40d431e8e5b067a535e564362b902480a13259 (diff) | |
Move userId in API from route to optional query parameter (#11074)
* Move userId in API from route to optional query parameter
* Standardize UserViewsController
* Move userId to query in ImageController
* Move userId to query in ItemsController
* Move userId to query in PlaystateController
* Move userId to query in SuggestionsController
* Move userId from route to query in UserLibraryController
* Clean up routes
* Move userId to query in UserController
* fix bad merge
---------
Co-authored-by: Niels van Velzen <git@ndat.nl>
Diffstat (limited to 'Jellyfin.Api/Controllers/SuggestionsController.cs')
| -rw-r--r-- | Jellyfin.Api/Controllers/SuggestionsController.cs | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/Jellyfin.Api/Controllers/SuggestionsController.cs b/Jellyfin.Api/Controllers/SuggestionsController.cs index 2aa6d25a7..ad625cc6e 100644 --- a/Jellyfin.Api/Controllers/SuggestionsController.cs +++ b/Jellyfin.Api/Controllers/SuggestionsController.cs @@ -1,7 +1,9 @@ using System; using System.ComponentModel.DataAnnotations; using Jellyfin.Api.Extensions; +using Jellyfin.Api.Helpers; using Jellyfin.Api.ModelBinders; +using Jellyfin.Data.Entities; using Jellyfin.Data.Enums; using Jellyfin.Extensions; using MediaBrowser.Controller.Dto; @@ -53,19 +55,26 @@ public class SuggestionsController : BaseJellyfinApiController /// <param name="enableTotalRecordCount">Whether to enable the total record count.</param> /// <response code="200">Suggestions returned.</response> /// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the suggestions.</returns> - [HttpGet("Users/{userId}/Suggestions")] + [HttpGet("Items/Suggestions")] [ProducesResponseType(StatusCodes.Status200OK)] public ActionResult<QueryResult<BaseItemDto>> GetSuggestions( - [FromRoute, Required] Guid userId, + [FromQuery] Guid? userId, [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] MediaType[] mediaType, [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] BaseItemKind[] type, [FromQuery] int? startIndex, [FromQuery] int? limit, [FromQuery] bool enableTotalRecordCount = false) { - var user = userId.IsEmpty() - ? null - : _userManager.GetUserById(userId); + User? user; + if (userId.IsNullOrEmpty()) + { + user = null; + } + else + { + var requestUserId = RequestHelpers.GetUserId(User, userId); + user = _userManager.GetUserById(requestUserId); + } var dtoOptions = new DtoOptions().AddClientFields(User); var result = _libraryManager.GetItemsResult(new InternalItemsQuery(user) @@ -88,4 +97,28 @@ public class SuggestionsController : BaseJellyfinApiController result.TotalRecordCount, dtoList); } + + /// <summary> + /// Gets suggestions. + /// </summary> + /// <param name="userId">The user id.</param> + /// <param name="mediaType">The media types.</param> + /// <param name="type">The type.</param> + /// <param name="startIndex">Optional. The start index.</param> + /// <param name="limit">Optional. The limit.</param> + /// <param name="enableTotalRecordCount">Whether to enable the total record count.</param> + /// <response code="200">Suggestions returned.</response> + /// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the suggestions.</returns> + [HttpGet("Users/{userId}/Suggestions")] + [ProducesResponseType(StatusCodes.Status200OK)] + [Obsolete("Kept for backwards compatibility")] + [ApiExplorerSettings(IgnoreApi = true)] + public ActionResult<QueryResult<BaseItemDto>> GetSuggestionsLegacy( + [FromRoute, Required] Guid userId, + [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] MediaType[] mediaType, + [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] BaseItemKind[] type, + [FromQuery] int? startIndex, + [FromQuery] int? limit, + [FromQuery] bool enableTotalRecordCount = false) + => GetSuggestions(userId, mediaType, type, startIndex, limit, enableTotalRecordCount); } |
