Fixed: (FileList) Switch to Basic Auth

pull/1426/head
Bogdan 1 year ago
parent a31b107a90
commit 4fb5d3432b

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Linq;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
using NzbDrone.Core.IndexerSearch.Definitions; using NzbDrone.Core.IndexerSearch.Definitions;
@ -18,54 +19,58 @@ public class FileListRequestGenerator : IIndexerRequestGenerator
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria)
{ {
var pageableRequests = new IndexerPageableRequestChain(); var pageableRequests = new IndexerPageableRequestChain();
var parameters = GetDefaultParameters(); var parameters = new NameValueCollection();
if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace() || searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace() || searchCriteria.SearchTerm.IsNotNullOrWhiteSpace())
{ {
parameters.Add("action", "search-torrents"); parameters.Set("action", "search-torrents");
if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace()) if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace())
{ {
parameters.Add("type", "imdb"); parameters.Set("type", "imdb");
parameters.Add("query", searchCriteria.FullImdbId); parameters.Set("query", searchCriteria.FullImdbId);
} }
else if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) else if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace())
{ {
parameters.Add("type", "name"); parameters.Set("type", "name");
parameters.Add("query", searchCriteria.SanitizedSearchTerm.Trim()); parameters.Set("query", searchCriteria.SanitizedSearchTerm.Trim());
} }
if (searchCriteria.Season.HasValue) if (searchCriteria.Season.HasValue)
{ {
parameters.Add("season", searchCriteria.Season.ToString()); parameters.Set("season", searchCriteria.Season.ToString());
parameters.Add("episode", searchCriteria.Episode); }
if (searchCriteria.Episode.IsNotNullOrWhiteSpace())
{
parameters.Set("episode", searchCriteria.Episode);
} }
} }
pageableRequests.Add(GetRequest(searchCriteria, parameters)); pageableRequests.Add(GetPagedRequests(searchCriteria, parameters));
return pageableRequests; return pageableRequests;
} }
public virtual IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria) public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
{ {
var pageableRequests = new IndexerPageableRequestChain(); var pageableRequests = new IndexerPageableRequestChain();
var parameters = GetDefaultParameters(); var parameters = new NameValueCollection();
if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace()) if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace())
{ {
parameters.Add("action", "search-torrents"); parameters.Set("action", "search-torrents");
parameters.Add("type", "imdb"); parameters.Set("type", "imdb");
parameters.Add("query", searchCriteria.FullImdbId); parameters.Set("query", searchCriteria.FullImdbId);
} }
else if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) else if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace())
{ {
parameters.Add("action", "search-torrents"); parameters.Set("action", "search-torrents");
parameters.Add("type", "name"); parameters.Set("type", "name");
parameters.Add("query", searchCriteria.SanitizedSearchTerm.Trim()); parameters.Set("query", searchCriteria.SanitizedSearchTerm.Trim());
} }
pageableRequests.Add(GetRequest(searchCriteria, parameters)); pageableRequests.Add(GetPagedRequests(searchCriteria, parameters));
return pageableRequests; return pageableRequests;
} }
@ -73,16 +78,16 @@ public class FileListRequestGenerator : IIndexerRequestGenerator
public IndexerPageableRequestChain GetSearchRequests(MusicSearchCriteria searchCriteria) public IndexerPageableRequestChain GetSearchRequests(MusicSearchCriteria searchCriteria)
{ {
var pageableRequests = new IndexerPageableRequestChain(); var pageableRequests = new IndexerPageableRequestChain();
var parameters = GetDefaultParameters(); var parameters = new NameValueCollection();
if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace())
{ {
parameters.Add("action", "search-torrents"); parameters.Set("action", "search-torrents");
parameters.Add("type", "name"); parameters.Set("type", "name");
parameters.Add("query", searchCriteria.SanitizedSearchTerm.Trim()); parameters.Set("query", searchCriteria.SanitizedSearchTerm.Trim());
} }
pageableRequests.Add(GetRequest(searchCriteria, parameters)); pageableRequests.Add(GetPagedRequests(searchCriteria, parameters));
return pageableRequests; return pageableRequests;
} }
@ -90,16 +95,16 @@ public class FileListRequestGenerator : IIndexerRequestGenerator
public IndexerPageableRequestChain GetSearchRequests(BookSearchCriteria searchCriteria) public IndexerPageableRequestChain GetSearchRequests(BookSearchCriteria searchCriteria)
{ {
var pageableRequests = new IndexerPageableRequestChain(); var pageableRequests = new IndexerPageableRequestChain();
var parameters = GetDefaultParameters(); var parameters = new NameValueCollection();
if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace())
{ {
parameters.Add("action", "search-torrents"); parameters.Set("action", "search-torrents");
parameters.Add("type", "name"); parameters.Set("type", "name");
parameters.Add("query", searchCriteria.SanitizedSearchTerm.Trim()); parameters.Set("query", searchCriteria.SanitizedSearchTerm.Trim());
} }
pageableRequests.Add(GetRequest(searchCriteria, parameters)); pageableRequests.Add(GetPagedRequests(searchCriteria, parameters));
return pageableRequests; return pageableRequests;
} }
@ -107,47 +112,47 @@ public class FileListRequestGenerator : IIndexerRequestGenerator
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria)
{ {
var pageableRequests = new IndexerPageableRequestChain(); var pageableRequests = new IndexerPageableRequestChain();
var parameters = GetDefaultParameters(); var parameters = new NameValueCollection();
if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace())
{ {
parameters.Add("action", "search-torrents"); parameters.Set("action", "search-torrents");
parameters.Add("type", "name"); parameters.Set("type", "name");
parameters.Add("query", searchCriteria.SanitizedSearchTerm.Trim()); parameters.Set("query", searchCriteria.SanitizedSearchTerm.Trim());
} }
pageableRequests.Add(GetRequest(searchCriteria, parameters)); pageableRequests.Add(GetPagedRequests(searchCriteria, parameters));
return pageableRequests; return pageableRequests;
} }
private IEnumerable<IndexerRequest> GetRequest(SearchCriteriaBase searchCriteria, NameValueCollection parameters) private IEnumerable<IndexerRequest> GetPagedRequests(SearchCriteriaBase searchCriteria, NameValueCollection parameters)
{ {
if (parameters.Get("action") is null) if (parameters.Get("action") is null)
{ {
parameters.Add("action", "latest-torrents"); parameters.Set("action", "latest-torrents");
} }
parameters.Add("category", string.Join(",", Capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories))); if (searchCriteria.Categories != null && searchCriteria.Categories.Any())
var searchUrl = $"{Settings.BaseUrl.TrimEnd('/')}/api.php?{parameters.GetQueryString()}";
yield return new IndexerRequest(searchUrl, HttpAccept.Json);
}
private NameValueCollection GetDefaultParameters()
{
var parameters = new NameValueCollection
{ {
{ "username", Settings.Username.Trim() }, parameters.Set("category", string.Join(",", Capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories)));
{ "passkey", Settings.Passkey.Trim() } }
};
if (Settings.FreeleechOnly) if (Settings.FreeleechOnly)
{ {
parameters.Add("freeleech", "1"); parameters.Set("freeleech", "1");
} }
return parameters; var searchUrl = $"{Settings.BaseUrl.TrimEnd('/')}/api.php?{parameters.GetQueryString()}";
var request = new IndexerRequest(searchUrl, HttpAccept.Json)
{
HttpRequest =
{
Credentials = new BasicNetworkCredential(Settings.Username.Trim(), Settings.Passkey.Trim())
}
};
yield return request;
} }
} }

Loading…
Cancel
Save