Skip to content

Commit

Permalink
Fixed: Ensure validation for Custom Format specifications
Browse files Browse the repository at this point in the history
Co-authored-by: Qstick <qstick@gmail.com>

Closes #3924
  • Loading branch information
mynameisbogdan committed Jul 29, 2023
1 parent dfd9440 commit e573458
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/Lidarr.Api.V1/CustomFormats/CustomFormatController.cs
@@ -1,12 +1,14 @@
using System.Collections.Generic;
using System.Linq;
using FluentValidation;
using FluentValidation.Results;
using Lidarr.Http;
using Lidarr.Http.REST;
using Lidarr.Http.REST.Attributes;
using Microsoft.AspNetCore.Mvc;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.CustomFormats;
using NzbDrone.Core.Validation;

namespace Lidarr.Api.V1.CustomFormats
{
Expand Down Expand Up @@ -50,6 +52,9 @@ public override CustomFormatResource GetResourceById(int id)
public ActionResult<CustomFormatResource> Create(CustomFormatResource customFormatResource)
{
var model = customFormatResource.ToModel(_specifications);

Validate(model);

return Created(_formatService.Insert(model).Id);
}

Expand All @@ -58,6 +63,9 @@ public ActionResult<CustomFormatResource> Create(CustomFormatResource customForm
public ActionResult<CustomFormatResource> Update(CustomFormatResource resource)
{
var model = resource.ToModel(_specifications);

Validate(model);

_formatService.Update(model);

return Accepted(model.Id);
Expand Down Expand Up @@ -91,6 +99,24 @@ public object GetTemplates()
return schema;
}

private void Validate(CustomFormat 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);
}
}

private IEnumerable<ICustomFormatSpecification> GetPresets()
{
yield return new ReleaseTitleSpecification
Expand Down

0 comments on commit e573458

Please sign in to comment.