using Newtonsoft.Json; namespace NzbDrone.Core.Indexers { public interface IProviderIndexerSetting { TSetting Get(IIndexer indexer) where TSetting : IIndexerSetting, new(); } public class IndexerSettingProvider : IProviderIndexerSetting { private readonly IIndexerRepository _indexerRepository; public IndexerSettingProvider(IIndexerRepository indexerRepository) { _indexerRepository = indexerRepository; } public TSetting Get(IIndexer indexer) where TSetting : IIndexerSetting, new() { var indexerDef = _indexerRepository.Find(indexer.Name); if (indexerDef == null || string.IsNullOrWhiteSpace(indexerDef.Settings)) { return new TSetting(); } return JsonConvert.DeserializeObject(indexerDef.Settings); } } }