diff options
| author | ArabCoders <admin@arabcoders.org> | 2023-11-13 15:51:06 +0300 |
|---|---|---|
| committer | ArabCoders <admin@arabcoders.org> | 2023-11-13 15:51:06 +0300 |
| commit | 2a25c5a2e3e37e734993d17b7462598babcb0b97 (patch) | |
| tree | 20e3ddf6e39bd7496046dfeb811915bb695f08e5 /Jellyfin.Api/Controllers | |
| parent | 250e795c3be21586f50414efff2a9846588ac864 (diff) | |
Refactored api call logic handling.
Diffstat (limited to 'Jellyfin.Api/Controllers')
| -rw-r--r-- | Jellyfin.Api/Controllers/ItemsController.cs | 60 |
1 files changed, 8 insertions, 52 deletions
diff --git a/Jellyfin.Api/Controllers/ItemsController.cs b/Jellyfin.Api/Controllers/ItemsController.cs index 8c816f802..2a346be68 100644 --- a/Jellyfin.Api/Controllers/ItemsController.cs +++ b/Jellyfin.Api/Controllers/ItemsController.cs @@ -913,13 +913,7 @@ public class ItemsController : BaseJellyfinApiController /// </summary> /// <param name="userId">The user id.</param> /// <param name="itemId">The item id.</param> - /// <param name="played">Optional. Whether to mark the item as played.</param> - /// <param name="favorite">Optional. Whether to mark the item as favorite.</param> - /// <param name="likes">Optional. Whether to mark the item as liked.</param> - /// <param name="rating">Optional. User item rating.</param> - /// <param name="playbackPositionTicks">Optional. Item playback position ticks. 1 tick = 10000 ms.</param> - /// <param name="playCount">Optional. How many times the user played the item.</param> - /// <param name="lastPlayedDate">Optional. The date the item was played.</param> + /// <param name="userDataDto">New user data object.</param> /// <response code="200">return updated user item data.</response> /// <response code="404">Item is not found.</response> /// <returns>Return <see cref="UserItemDataDto"/>.</returns> @@ -929,14 +923,13 @@ public class ItemsController : BaseJellyfinApiController public ActionResult<UserItemDataDto> UpdateItemUserData( [FromRoute, Required] Guid userId, [FromRoute, Required] Guid itemId, - [FromQuery] bool? played, - [FromQuery] bool? favorite, - [FromQuery] bool? likes, - [FromQuery] double? rating, - [FromQuery] long? playbackPositionTicks, - [FromQuery] int? playCount, - [FromQuery, ModelBinder(typeof(LegacyDateTimeModelBinder))] DateTime? lastPlayedDate) + [FromBody, Required] UserDataDto userDataDto) { + if (!RequestHelpers.AssertCanUpdateUser(_userManager, User, userId, true)) + { + return StatusCode(StatusCodes.Status403Forbidden, "User is not allowed to update this item user data."); + } + var user = _userManager.GetUserById(userId) ?? throw new ResourceNotFoundException(); var item = _libraryManager.GetItemById(itemId); if (item == null) @@ -944,44 +937,7 @@ public class ItemsController : BaseJellyfinApiController return NotFound(); } - var userData = _userDataRepository.GetUserData(user, item); - - if (played.HasValue) - { - userData.Played = played.Value; - } - - if (favorite.HasValue) - { - userData.IsFavorite = favorite.Value; - } - - if (likes.HasValue) - { - userData.Likes = likes.Value; - } - - if (rating.HasValue) - { - userData.Rating = rating.Value; - } - - if (playbackPositionTicks.HasValue) - { - userData.PlaybackPositionTicks = playbackPositionTicks.Value; - } - - if (playCount.HasValue) - { - userData.PlayCount = playCount.Value; - } - - if (lastPlayedDate.HasValue) - { - userData.LastPlayedDate = lastPlayedDate.Value; - } - - _userDataRepository.SaveUserData(user.Id, item, userData, UserDataSaveReason.UpdateUserData, CancellationToken.None); + _userDataRepository.SaveUserData(user, item, userDataDto, UserDataSaveReason.UpdateUserData); return _userDataRepository.GetUserDataDto(item, user); } |
