@ -1,11 +1,9 @@
using System ;
using System ;
using System.Collections.Generic ;
using System.Collections.Generic ;
using System.Linq ;
using System.Linq ;
using FluentValidation.Internal ;
using NzbDrone.Api.ClientSchema ;
using NzbDrone.Api.ClientSchema ;
using NzbDrone.Api.Mapping ;
using NzbDrone.Api.Mapping ;
using NzbDrone.Api.REST ;
using NzbDrone.Api.REST ;
using NzbDrone.Api.Validation ;
using NzbDrone.Core.Indexers ;
using NzbDrone.Core.Indexers ;
using Omu.ValueInjecter ;
using Omu.ValueInjecter ;
using FluentValidation ;
using FluentValidation ;
@ -28,8 +26,6 @@ namespace NzbDrone.Api.Indexers
SharedValidator . RuleFor ( c = > c . Name ) . NotEmpty ( ) ;
SharedValidator . RuleFor ( c = > c . Name ) . NotEmpty ( ) ;
SharedValidator . RuleFor ( c = > c . Implementation ) . NotEmpty ( ) ;
SharedValidator . RuleFor ( c = > c . Implementation ) . NotEmpty ( ) ;
SharedValidator . RuleForField < string > ( c = > c . Fields , "Url" ) . NotEmpty ( ) ;
PostValidator . RuleFor ( c = > c . Fields ) . NotEmpty ( ) ;
PostValidator . RuleFor ( c = > c . Fields ) . NotEmpty ( ) ;
}
}
@ -67,6 +63,9 @@ namespace NzbDrone.Api.Indexers
var indexer = _indexerService . Get ( indexerResource . Id ) ;
var indexer = _indexerService . Get ( indexerResource . Id ) ;
indexer . InjectFrom ( indexerResource ) ;
indexer . InjectFrom ( indexerResource ) ;
indexer . Settings = SchemaDeserializer . DeserializeSchema ( indexer . Settings , indexerResource . Fields ) ;
indexer . Settings = SchemaDeserializer . DeserializeSchema ( indexer . Settings , indexerResource . Fields ) ;
ValidateSetting ( indexer . Settings ) ;
indexer = _indexerService . Update ( indexer ) ;
indexer = _indexerService . Update ( indexer ) ;
var response = indexer . InjectTo < IndexerResource > ( ) ;
var response = indexer . InjectTo < IndexerResource > ( ) ;
@ -75,6 +74,17 @@ namespace NzbDrone.Api.Indexers
return response ;
return response ;
}
}
private static void ValidateSetting ( IIndexerSetting setting )
{
var validationResult = setting . Validate ( ) ;
if ( ! validationResult . IsValid )
{
throw new ValidationException ( validationResult . Errors ) ;
}
}
private Indexer GetIndexer ( IndexerResource indexerResource )
private Indexer GetIndexer ( IndexerResource indexerResource )
{
{
var indexer = _indexerService . Schema ( )
var indexer = _indexerService . Schema ( )
@ -90,6 +100,8 @@ namespace NzbDrone.Api.Indexers
indexer . InjectFrom ( indexerResource ) ;
indexer . InjectFrom ( indexerResource ) ;
indexer . Settings = SchemaDeserializer . DeserializeSchema ( indexer . Settings , indexerResource . Fields ) ;
indexer . Settings = SchemaDeserializer . DeserializeSchema ( indexer . Settings , indexerResource . Fields ) ;
ValidateSetting ( indexer . Settings ) ;
return indexer ;
return indexer ;
}
}