using System.Collections.Generic; using FluentValidation; using Microsoft.AspNetCore.Mvc; using NzbDrone.Core.ImportLists.Exclusions; using NzbDrone.Core.Validation; using Sonarr.Http; using Sonarr.Http.REST; using Sonarr.Http.REST.Attributes; namespace Sonarr.Api.V3.ImportLists { [V3ApiController] public class ImportListExclusionController : RestController { private readonly IImportListExclusionService _importListExclusionService; public ImportListExclusionController(IImportListExclusionService importListExclusionService, ImportListExclusionExistsValidator importListExclusionExistsValidator) { _importListExclusionService = importListExclusionService; SharedValidator.RuleFor(c => c.TvdbId).NotEmpty().SetValidator(importListExclusionExistsValidator); SharedValidator.RuleFor(c => c.Title).NotEmpty(); } protected override ImportListExclusionResource GetResourceById(int id) { return _importListExclusionService.Get(id).ToResource(); } [HttpGet] [Produces("application/json")] public List GetImportListExclusions() { return _importListExclusionService.All().ToResource(); } [RestPostById] [Consumes("application/json")] public ActionResult AddImportListExclusion(ImportListExclusionResource resource) { var importListExclusion = _importListExclusionService.Add(resource.ToModel()); return Created(importListExclusion.Id); } [RestPutById] [Consumes("application/json")] public ActionResult UpdateImportListExclusion(ImportListExclusionResource resource) { _importListExclusionService.Update(resource.ToModel()); return Accepted(resource.Id); } [RestDeleteById] public void DeleteImportListExclusionResource(int id) { _importListExclusionService.Delete(id); } } }