using System.Net.Mime; using MediaBrowser.Controller.Library; using MediaBrowser.Model.IO; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using MediaBrowser.Controller; using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.Providers; using System.ComponentModel.DataAnnotations; using MediaBrowser.Common.Api; namespace Jellyfin.Plugin.SmartPlaylist.Api { [ApiController] [Authorize(Policy = Policies.RequiresElevation)] [Route("SmartPlaylist")] [Produces(MediaTypeNames.Application.Json)] public class SmartPlaylistController : ControllerBase { private readonly ILogger _logger; private readonly ILibraryManager _libraryManager; private readonly IUserManager _userManager; private readonly IProviderManager _providerManager; private readonly IFileSystem _fileSystem; private readonly IPlaylistManager _playlistManager; private readonly IStore _store; public SmartPlaylistController( ILogger logger, ILibraryManager libraryManager, IUserManager userManager, IProviderManager providerManager, IFileSystem fileSystem, IPlaylistManager playlistManager, IServerApplicationPaths serverApplicationPaths ) { _logger = logger; _libraryManager = libraryManager; _userManager = userManager; _providerManager = providerManager; _fileSystem = fileSystem; _playlistManager = playlistManager; _store = new Store(new SmartFileSystem(serverApplicationPaths)); } [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public async Task>> GetPlaylists() { return Ok(await _store.GetAllSmartPlaylistsAsync()); } [HttpPost] [ProducesResponseType(StatusCodes.Status201Created)] public async Task SetPlaylist([FromBody, Required] SmartPlaylistDto smartPlaylist) { await _store.SaveSmartPlaylistAsync(smartPlaylist); return Created(); } } }