using Microsoft.AspNetCore.Mvc; using NzbDrone.Core.Blocklisting; using NzbDrone.Core.CustomFormats; using NzbDrone.Core.Datastore; using Sonarr.Http; using Sonarr.Http.Extensions; using Sonarr.Http.REST.Attributes; namespace Sonarr.Api.V3.Blocklist { [V3ApiController] public class BlocklistController : Controller { private readonly IBlocklistService _blocklistService; private readonly ICustomFormatCalculationService _formatCalculator; public BlocklistController(IBlocklistService blocklistService, ICustomFormatCalculationService formatCalculator) { _blocklistService = blocklistService; _formatCalculator = formatCalculator; } [HttpGet] [Produces("application/json")] public PagingResource GetBlocklist() { var pagingResource = Request.ReadPagingResourceFromRequest(); var pagingSpec = pagingResource.MapToPagingSpec("date", SortDirection.Descending); return pagingSpec.ApplyToPage(_blocklistService.Paged, model => BlocklistResourceMapper.MapToResource(model, _formatCalculator)); } [RestDeleteById] public void DeleteBlocklist(int id) { _blocklistService.Delete(id); } [HttpDelete("bulk")] [Produces("application/json")] public object Remove([FromBody] BlocklistBulkResource resource) { _blocklistService.Delete(resource.Ids); return new { }; } } }