You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.4 KiB
69 lines
2.4 KiB
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using NzbDrone.Core.Blocklisting;
|
|
using NzbDrone.Core.CustomFormats;
|
|
using NzbDrone.Core.Datastore;
|
|
using NzbDrone.Core.Indexers;
|
|
using Radarr.Http;
|
|
using Radarr.Http.Extensions;
|
|
using Radarr.Http.REST.Attributes;
|
|
|
|
namespace Radarr.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<BlocklistResource> GetBlocklist([FromQuery] PagingRequestResource paging, [FromQuery] int[] movieIds = null, [FromQuery] DownloadProtocol[] protocols = null)
|
|
{
|
|
var pagingResource = new PagingResource<BlocklistResource>(paging);
|
|
var pagingSpec = pagingResource.MapToPagingSpec<BlocklistResource, NzbDrone.Core.Blocklisting.Blocklist>("date", SortDirection.Descending);
|
|
|
|
if (movieIds?.Any() == true)
|
|
{
|
|
pagingSpec.FilterExpressions.Add(b => movieIds.Contains(b.MovieId));
|
|
}
|
|
|
|
if (protocols?.Any() == true)
|
|
{
|
|
pagingSpec.FilterExpressions.Add(b => protocols.Contains(b.Protocol));
|
|
}
|
|
|
|
return pagingSpec.ApplyToPage(b => _blocklistService.Paged(pagingSpec), b => BlocklistResourceMapper.MapToResource(b, _formatCalculator));
|
|
}
|
|
|
|
[HttpGet("movie")]
|
|
public List<BlocklistResource> GetMovieBlocklist(int movieId)
|
|
{
|
|
return _blocklistService.GetByMovieId(movieId).Select(h => BlocklistResourceMapper.MapToResource(h, _formatCalculator)).ToList();
|
|
}
|
|
|
|
[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 { };
|
|
}
|
|
}
|
|
}
|