mirror of
https://github.com/Readarr/Readarr
synced 2026-05-08 21:13:58 +02:00
Improve message for grab errors due to no matching tags
Co-authored-by: zakary <zak@ary.dev> (cherry picked from commit df672487cf1d5f067849367a2bfb0068defc315d) Closes #3814
This commit is contained in:
parent
cb532caca4
commit
e0d904fa69
2 changed files with 11 additions and 14 deletions
|
|
@ -200,17 +200,9 @@ public void should_fail_to_choose_when_clients_have_tags_but_no_match()
|
||||||
var seriesTags = new HashSet<int> { 2 };
|
var seriesTags = new HashSet<int> { 2 };
|
||||||
var clientTags = new HashSet<int> { 1 };
|
var clientTags = new HashSet<int> { 1 };
|
||||||
|
|
||||||
WithTorrentClient(0, clientTags);
|
|
||||||
WithTorrentClient(0, clientTags);
|
|
||||||
WithTorrentClient(0, clientTags);
|
|
||||||
WithTorrentClient(0, clientTags);
|
WithTorrentClient(0, clientTags);
|
||||||
|
|
||||||
var client1 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
|
Assert.Throws<DownloadClientUnavailableException>(() => Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags));
|
||||||
var client2 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
|
|
||||||
var client3 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
|
|
||||||
var client4 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
|
|
||||||
|
|
||||||
Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags).Should().BeNull();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|
|
||||||
|
|
@ -41,18 +41,23 @@ public IDownloadClient GetDownloadClient(DownloadProtocol downloadProtocol, int
|
||||||
var blockedProviders = new HashSet<int>(_downloadClientStatusService.GetBlockedProviders().Select(v => v.ProviderId));
|
var blockedProviders = new HashSet<int>(_downloadClientStatusService.GetBlockedProviders().Select(v => v.ProviderId));
|
||||||
var availableProviders = _downloadClientFactory.GetAvailableProviders().Where(v => v.Protocol == downloadProtocol).ToList();
|
var availableProviders = _downloadClientFactory.GetAvailableProviders().Where(v => v.Protocol == downloadProtocol).ToList();
|
||||||
|
|
||||||
if (tags != null)
|
if (!availableProviders.Any())
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tags is { Count: > 0 })
|
||||||
{
|
{
|
||||||
var matchingTagsClients = availableProviders.Where(i => i.Definition.Tags.Intersect(tags).Any()).ToList();
|
var matchingTagsClients = availableProviders.Where(i => i.Definition.Tags.Intersect(tags).Any()).ToList();
|
||||||
|
|
||||||
availableProviders = matchingTagsClients.Count > 0 ?
|
availableProviders = matchingTagsClients.Count > 0 ?
|
||||||
matchingTagsClients :
|
matchingTagsClients :
|
||||||
availableProviders.Where(i => i.Definition.Tags.Empty()).ToList();
|
availableProviders.Where(i => i.Definition.Tags.Empty()).ToList();
|
||||||
}
|
|
||||||
|
|
||||||
if (!availableProviders.Any())
|
if (!availableProviders.Any())
|
||||||
{
|
{
|
||||||
return null;
|
throw new DownloadClientUnavailableException("No download client was found without tags or a matching author tag. Please check your settings.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (indexerId > 0)
|
if (indexerId > 0)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue