using System.ComponentModel.DataAnnotations; using System.Diagnostics.CodeAnalysis; using System.Threading; using Jellyfin.Api.Constants; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Entities; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ModelBinding; namespace Jellyfin.Api.Controllers { /// /// Display Preferences Controller. /// [Authorize(Policy = Policies.DefaultAuthorization)] public class DisplayPreferencesController : BaseJellyfinApiController { private readonly IDisplayPreferencesRepository _displayPreferencesRepository; /// /// Initializes a new instance of the class. /// /// Instance of interface. public DisplayPreferencesController(IDisplayPreferencesRepository displayPreferencesRepository) { _displayPreferencesRepository = displayPreferencesRepository; } /// /// Get Display Preferences. /// /// Display preferences id. /// User id. /// Client. /// Display preferences retrieved. /// An containing the display preferences on success, or a if the display preferences could not be found. [HttpGet("{displayPreferencesId}")] [ProducesResponseType(StatusCodes.Status200OK)] public ActionResult GetDisplayPreferences( [FromRoute] string displayPreferencesId, [FromQuery] [Required] string userId, [FromQuery] [Required] string client) { return _displayPreferencesRepository.GetDisplayPreferences(displayPreferencesId, userId, client); } /// /// Update Display Preferences. /// /// Display preferences id. /// User Id. /// Client. /// New Display Preferences object. /// Display preferences updated. /// An on success. [HttpPost("{displayPreferencesId}")] [ProducesResponseType(StatusCodes.Status204NoContent)] [SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "displayPreferencesId", Justification = "Imported from ServiceStack")] public ActionResult UpdateDisplayPreferences( [FromRoute] string displayPreferencesId, [FromQuery, BindRequired] string userId, [FromQuery, BindRequired] string client, [FromBody, BindRequired] DisplayPreferences displayPreferences) { _displayPreferencesRepository.SaveDisplayPreferences( displayPreferences, userId, client, CancellationToken.None); return NoContent(); } } }