From 2c52795822277d3dbfa261649fd7c25fc48a9836 Mon Sep 17 00:00:00 2001 From: Leonardo Galli Date: Sat, 21 Jan 2017 21:09:02 +0100 Subject: [PATCH] Add base for netimport api. Still nothing on the UI side. --- src/NzbDrone.Api/NetImport/NetImportModule.cs | 32 +++++++++ .../NetImport/NetImportResource.cs | 10 +++ .../NetImport/NetImportFactory.cs | 70 +++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 src/NzbDrone.Api/NetImport/NetImportModule.cs create mode 100644 src/NzbDrone.Api/NetImport/NetImportResource.cs create mode 100644 src/NzbDrone.Core/NetImport/NetImportFactory.cs diff --git a/src/NzbDrone.Api/NetImport/NetImportModule.cs b/src/NzbDrone.Api/NetImport/NetImportModule.cs new file mode 100644 index 000000000..b128b061d --- /dev/null +++ b/src/NzbDrone.Api/NetImport/NetImportModule.cs @@ -0,0 +1,32 @@ +using NzbDrone.Core.NetImport; + +namespace NzbDrone.Api.NetImport +{ + public class NetImportModule : ProviderModuleBase + { + public NetImportModule(NetImportFactory indexerFactory) + : base(indexerFactory, "indexer") + { + } + + protected override void MapToResource(NetImportResource resource, NetImportDefinition definition) + { + base.MapToResource(resource, definition); + + resource.Enabled = definition.Enabled; + } + + protected override void MapToModel(NetImportDefinition definition, NetImportResource resource) + { + base.MapToModel(definition, resource); + + resource.Enabled = definition.Enabled; + } + + protected override void Validate(NetImportDefinition definition, bool includeWarnings) + { + if (!definition.Enable) return; + base.Validate(definition, includeWarnings); + } + } +} \ No newline at end of file diff --git a/src/NzbDrone.Api/NetImport/NetImportResource.cs b/src/NzbDrone.Api/NetImport/NetImportResource.cs new file mode 100644 index 000000000..880b95ef0 --- /dev/null +++ b/src/NzbDrone.Api/NetImport/NetImportResource.cs @@ -0,0 +1,10 @@ +using NzbDrone.Core.NetImport; + +namespace NzbDrone.Api.NetImport +{ + public class NetImportResource : ProviderResource + { + public bool Enabled { get; set; } + public bool EnableSearch { get; set; } + } +} \ No newline at end of file diff --git a/src/NzbDrone.Core/NetImport/NetImportFactory.cs b/src/NzbDrone.Core/NetImport/NetImportFactory.cs new file mode 100644 index 000000000..489d8682e --- /dev/null +++ b/src/NzbDrone.Core/NetImport/NetImportFactory.cs @@ -0,0 +1,70 @@ +using System.Collections.Generic; +using System.Linq; +using NLog; +using NzbDrone.Common.Composition; +using NzbDrone.Core.Messaging.Events; +using NzbDrone.Core.ThingiProvider; + +namespace NzbDrone.Core.NetImport +{ + public interface INetImportFactory : IProviderFactory + { + List Enabled(); + } + + public class NetImportFactory : ProviderFactory, INetImportFactory + { + //private readonly IIndexerStatusService _indexerStatusService; + private readonly INetImportRepository _providerRepository; + private readonly Logger _logger; + + public NetImportFactory(//IIndexerStatusService indexerStatusService, + INetImportRepository providerRepository, + IEnumerable providers, + IContainer container, + IEventAggregator eventAggregator, + Logger logger) + : base(providerRepository, providers, container, eventAggregator, logger) + { + //_indexerStatusService = indexerStatusService; + _providerRepository = providerRepository; + _logger = logger; + } + + protected override List Active() + { + return base.Active().Where(c => c.Enabled).ToList(); + } + + public override void SetProviderCharacteristics(INetImport provider, NetImportDefinition definition) + { + base.SetProviderCharacteristics(provider, definition); + } + + public List Enabled() + { + var enabledIndexers = GetAvailableProviders().Where(n => ((NetImportDefinition)n.Definition).Enabled); + + var indexers = FilterBlockedIndexers(enabledIndexers); + + return indexers.ToList(); + } + + private IEnumerable FilterBlockedIndexers(IEnumerable indexers) + { + //var blockedIndexers = _indexerStatusService.GetBlockedIndexers().ToDictionary(v => v.IndexerId, v => v); + + foreach (var indexer in indexers) + { + /*IndexerStatus blockedIndexerStatus; + if (blockedIndexers.TryGetValue(indexer.Definition.Id, out blockedIndexerStatus)) + { + _logger.Debug("Temporarily ignoring indexer {0} till {1} due to recent failures.", indexer.Definition.Name, blockedIndexerStatus.DisabledTill.Value.ToLocalTime()); + continue; + }*/ + + yield return indexer; + } + } + } +} \ No newline at end of file