using System; using System.Collections.Generic; using FluentValidation.Results; using NzbDrone.Api.Mapping; using NzbDrone.Common.Extensions; using NzbDrone.Core.Restrictions; namespace NzbDrone.Api.Restrictions { public class RestrictionModule : NzbDroneRestModule { private readonly IRestrictionService _restrictionService; public RestrictionModule(IRestrictionService restrictionService) { _restrictionService = restrictionService; GetResourceById = Get; GetResourceAll = GetAll; CreateResource = Create; UpdateResource = Update; DeleteResource = Delete; SharedValidator.Custom(restriction => { if (restriction.Ignored.IsNullOrWhiteSpace() && restriction.Required.IsNullOrWhiteSpace()) { return new ValidationFailure("", "Either 'Must contaion' or 'Must not contain' is required"); } return null; }); } private RestrictionResource Get(Int32 id) { return _restrictionService.Get(id).InjectTo(); } private List GetAll() { return ToListResource(_restrictionService.All); } private Int32 Create(RestrictionResource resource) { return _restrictionService.Add(resource.InjectTo()).Id; } private void Update(RestrictionResource resource) { _restrictionService.Update(resource.InjectTo()); } private void Delete(Int32 id) { _restrictionService.Delete(id); } } }