Continue loading cardigann definition in case of an error

This commit is contained in:
kaso17
2017-09-13 11:33:17 +02:00
parent 34d091942a
commit 4819a3c8ed

View File

@@ -115,12 +115,21 @@ namespace Jackett.Services
{ {
logger.Info("Loading Cardigann definition " + file.FullName); logger.Info("Loading Cardigann definition " + file.FullName);
try {
string DefinitionString = File.ReadAllText(file.FullName); string DefinitionString = File.ReadAllText(file.FullName);
var definition = deserializer.Deserialize<IndexerDefinition>(DefinitionString); var definition = deserializer.Deserialize<IndexerDefinition>(DefinitionString);
return definition; return definition;
}); }
var cardigannIndexers = definitions.Select(definition => catch (Exception ex)
{
logger.Error(ex, "Error while parsing Cardigann definition " + file.FullName + ": " + ex.Message);
return null;
}
}).Where(definition => definition != null);
List<IIndexer> cardigannIndexers = definitions.Select(definition =>
{
try
{ {
// create own webClient instance for each indexer (seperate cookies stores, etc.) // create own webClient instance for each indexer (seperate cookies stores, etc.)
var indexerWebClientInstance = (IWebClient)Activator.CreateInstance(webClient.GetType(), processService, logger, globalConfigService); var indexerWebClientInstance = (IWebClient)Activator.CreateInstance(webClient.GetType(), processService, logger, globalConfigService);
@@ -128,7 +137,13 @@ namespace Jackett.Services
IIndexer indexer = new CardigannIndexer(configService, indexerWebClientInstance, logger, protectionService, definition); IIndexer indexer = new CardigannIndexer(configService, indexerWebClientInstance, logger, protectionService, definition);
configService.Load(indexer); configService.Load(indexer);
return indexer; return indexer;
}).ToList(); // Explicit conversion to list to avoid repeated resource loading }
catch (Exception ex)
{
logger.Error(ex, "Error while creating Cardigann instance from Definition: " + ex.Message);
return null;
}
}).Where(cardigannIndexer => cardigannIndexer != null).ToList(); // Explicit conversion to list to avoid repeated resource loading
foreach (var indexer in cardigannIndexers) foreach (var indexer in cardigannIndexers)
{ {