New: (Cardigann) Add MissingAttributeEqualsNoResults support

This commit is contained in:
Bogdan 2023-02-28 21:43:56 +02:00
parent bb1ebda753
commit 4e8bb37a5c
3 changed files with 20 additions and 3 deletions

View file

@ -825,9 +825,19 @@ protected string ResolveSiteLink()
protected JArray JsonParseRowsSelector(JToken parsedJson, string rowSelector)
{
var selector = rowSelector.Split(':')[0];
var rowsObj = parsedJson.SelectToken(selector).Value<JArray>();
return new JArray(rowsObj.Where(t =>
JsonParseFieldSelector(t.Value<JObject>(), rowSelector.Remove(0, selector.Length)) != null));
try
{
var rowsObj = parsedJson.SelectToken(selector).Value<JArray>();
return new JArray(rowsObj.Where(t => JsonParseFieldSelector(t.Value<JObject>(), rowSelector.Remove(0, selector.Length)) != null));
}
catch (Exception ex)
{
_logger.Trace(ex, "Failed to parse JSON rows for selector \"{0}\"", rowSelector);
return null;
}
}
private string JsonParseFieldSelector(JToken parsedJson, string rowSelector)

View file

@ -159,6 +159,7 @@ public class RowsBlock : SelectorBlock
public SelectorBlock Dateheaders { get; set; }
public SelectorBlock Count { get; set; }
public bool Multiple { get; set; }
public bool MissingAttributeEqualsNoResults { get; set; }
}
public class SearchPathBlock : RequestBlock

View file

@ -90,8 +90,14 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
}
var rowsArray = JsonParseRowsSelector(parsedJson, search.Rows.Selector);
if (rowsArray == null)
{
if (search.Rows.MissingAttributeEqualsNoResults)
{
return releases;
}
throw new IndexerException(indexerResponse, "Error Parsing Rows Selector");
}