More Cardigann

This commit is contained in:
Qstick
2020-11-16 10:19:38 -05:00
parent b2b354a7a3
commit fef81171ba
16 changed files with 292 additions and 84 deletions
@@ -4,6 +4,7 @@ using FluentValidation.Results;
using NLog;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.IndexerVersions;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
@@ -11,7 +12,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
{
public class Cardigann : HttpIndexerBase<CardigannSettings>
{
private readonly ICardigannDefinitionService _definitionService;
private readonly IIndexerDefinitionUpdateService _definitionService;
public override string Name => "Cardigann";
@@ -33,14 +34,6 @@ namespace NzbDrone.Core.Indexers.Cardigann
_logger);
}
public override IndexerCapabilities GetCapabilities()
{
// TODO: This uses indexer capabilities when called so we don't have to keep up with all of them
// however, this is not pulled on a all pull from UI, doing so will kill the UI load if an indexer is down
// should we just purge and manage
return new IndexerCapabilities();
}
public override IEnumerable<ProviderDefinition> DefaultDefinitions
{
get
@@ -52,7 +45,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
}
}
public Cardigann(ICardigannDefinitionService definitionService,
public Cardigann(IIndexerDefinitionUpdateService definitionService,
IHttpClient httpClient,
IIndexerStatusService indexerStatusService,
IConfigService configService,
@@ -76,7 +69,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
Privacy = definition.Type == "private" ? IndexerPrivacy.Private : IndexerPrivacy.Public,
SupportsRss = SupportsRss,
SupportsSearch = SupportsSearch,
Capabilities = Capabilities,
Capabilities = new IndexerCapabilities(),
ExtraFields = definition.Settings
};
}
@@ -1,44 +0,0 @@
using System.Collections.Generic;
using NzbDrone.Common.Http;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
namespace NzbDrone.Core.Indexers.Cardigann
{
public interface ICardigannDefinitionService
{
List<CardigannMetaDefinition> All();
CardigannDefinition GetDefinition(string id);
}
public class CardigannDefinitionService : ICardigannDefinitionService
{
private const int DEFINITION_VERSION = 1;
private readonly IHttpClient _httpClient;
private readonly IDeserializer _deserializer = new DeserializerBuilder()
.IgnoreUnmatchedProperties()
.WithNamingConvention(CamelCaseNamingConvention.Instance)
.Build();
public CardigannDefinitionService(IHttpClient httpClient)
{
_httpClient = httpClient;
}
public List<CardigannMetaDefinition> All()
{
var request = new HttpRequest($"https://indexers.prowlarr.com/master/{DEFINITION_VERSION}");
var response = _httpClient.Get<List<CardigannMetaDefinition>>(request);
return response.Resource;
}
public CardigannDefinition GetDefinition(string id)
{
var req = new HttpRequest($"https://indexers.prowlarr.com/master/{DEFINITION_VERSION}/{id}");
var response = _httpClient.Get(req);
return _deserializer.Deserialize<CardigannDefinition>(response.Content);
}
}
}
@@ -14,5 +14,6 @@ namespace NzbDrone.Core.Indexers.Cardigann
public List<string> Links { get; set; }
public List<string> Legacylinks { get; set; }
public List<SettingsField> Settings { get; set; }
public string Sha { get; set; }
}
}
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NzbDrone.Core.Messaging.Commands;
namespace NzbDrone.Core.Indexers.Definitions.Cardigann
{
public class IndexerDefinitionUpdateCommand : Command
{
public override bool SendUpdatesToClient => true;
}
}
@@ -20,6 +20,8 @@ namespace NzbDrone.Core.Indexers.Newznab
public override DownloadProtocol Protocol => DownloadProtocol.Usenet;
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
public override IndexerCapabilities Capabilities { get => new IndexerCapabilities(); protected set => base.Capabilities = value; }
public override int PageSize => _capabilitiesProvider.GetCapabilities(Settings).LimitsDefault.Value;
public override IIndexerRequestGenerator GetRequestGenerator()
@@ -36,14 +38,6 @@ namespace NzbDrone.Core.Indexers.Newznab
return new NewznabRssParser(Settings);
}
public override IndexerCapabilities GetCapabilities()
{
// TODO: This uses indexer capabilities when called so we don't have to keep up with all of them
// however, this is not pulled on a all pull from UI, doing so will kill the UI load if an indexer is down
// should we just purge and manage
return _capabilitiesProvider.GetCapabilities(Settings);
}
public override IEnumerable<ProviderDefinition> DefaultDefinitions
{
get