jellyfin-smart-playlist/Jellyfin.Plugin.SmartPlaylist/Api/SmartPlaylistController.cs

62 lines
2.2 KiB
C#
Raw Normal View History

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<SmartPlaylistController> 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<ActionResult<IReadOnlyList<SmartPlaylistDto>>> GetPlaylists() {
return Ok(await _store.GetAllSmartPlaylistsAsync());
}
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
public async Task<ActionResult> SetPlaylist([FromBody, Required] SmartPlaylistDto smartPlaylist) {
await _store.SaveSmartPlaylistAsync(smartPlaylist);
return Created();
}
}
}