From 97e96537f5a656f368ac07b8b28c84683d105d9f Mon Sep 17 00:00:00 2001 From: Bogdan Date: Wed, 26 Jul 2023 09:25:24 +0300 Subject: [PATCH] Fixed: Ensure validation for Auto Tagging specifications Co-authored-by: Qstick --- .../AutoTagging/AutoTaggingController.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/Sonarr.Api.V3/AutoTagging/AutoTaggingController.cs b/src/Sonarr.Api.V3/AutoTagging/AutoTaggingController.cs index be1c6e1b2..a74c20c34 100644 --- a/src/Sonarr.Api.V3/AutoTagging/AutoTaggingController.cs +++ b/src/Sonarr.Api.V3/AutoTagging/AutoTaggingController.cs @@ -1,10 +1,12 @@ using System.Collections.Generic; using System.Linq; using FluentValidation; +using FluentValidation.Results; using Microsoft.AspNetCore.Mvc; using NzbDrone.Common.Extensions; using NzbDrone.Core.AutoTagging; using NzbDrone.Core.AutoTagging.Specifications; +using NzbDrone.Core.Validation; using Sonarr.Http; using Sonarr.Http.REST; using Sonarr.Http.REST.Attributes; @@ -52,6 +54,9 @@ namespace Sonarr.Api.V3.AutoTagging public ActionResult Create(AutoTaggingResource autoTagResource) { var model = autoTagResource.ToModel(_specifications); + + Validate(model); + return Created(_autoTaggingService.Insert(model).Id); } @@ -60,6 +65,9 @@ namespace Sonarr.Api.V3.AutoTagging public ActionResult Update(AutoTaggingResource resource) { var model = resource.ToModel(_specifications); + + Validate(model); + _autoTaggingService.Update(model); return Accepted(model.Id); @@ -85,5 +93,23 @@ namespace Sonarr.Api.V3.AutoTagging return schema; } + + private void Validate(AutoTag definition) + { + foreach (var validationResult in definition.Specifications.Select(spec => spec.Validate())) + { + VerifyValidationResult(validationResult); + } + } + + private void VerifyValidationResult(ValidationResult validationResult) + { + var result = new NzbDroneValidationResult(validationResult.Errors); + + if (!result.IsValid) + { + throw new ValidationException(result.Errors); + } + } } }