mirror of
https://github.com/Jackett/Jackett.git
synced 2025-12-22 22:25:44 +01:00
Merge web results classes into single class and update usages
This commit is contained in:
@@ -548,7 +548,7 @@ namespace Jackett.Common.Indexers
|
|||||||
/// <returns>Results from query</returns>
|
/// <returns>Results from query</returns>
|
||||||
private async Task<string> queryTracker(string request)
|
private async Task<string> queryTracker(string request)
|
||||||
{
|
{
|
||||||
BaseWebResult results = null;
|
WebResult results = null;
|
||||||
|
|
||||||
// Cache mode not enabled or cached file didn't exist for our query
|
// Cache mode not enabled or cached file didn't exist for our query
|
||||||
output("\nQuerying tracker for results....");
|
output("\nQuerying tracker for results....");
|
||||||
|
|||||||
@@ -509,7 +509,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return domDate.NodeValue.Trim();
|
return domDate.NodeValue.Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsAuthorized(BaseWebResult result) =>
|
private bool IsAuthorized(WebResult result) =>
|
||||||
result.ContentString.Contains("index.php?action=logout");
|
result.ContentString.Contains("index.php?action=logout");
|
||||||
|
|
||||||
private IEnumerable<int> ParseCategories(Uri showUri)
|
private IEnumerable<int> ParseCategories(Uri showUri)
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsSessionIsClosed(BaseWebResult result)
|
private bool IsSessionIsClosed(WebResult result)
|
||||||
{
|
{
|
||||||
return result.IsRedirect && result.RedirectingTo.Contains("login.php");
|
return result.IsRedirect && result.RedirectingTo.Contains("login.php");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -412,7 +412,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return response.ContentBytes;
|
return response.ContentBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task<BaseWebResult> RequestBytesWithCookiesAndRetry(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable<KeyValuePair<string, string>> data = null)
|
protected async Task<WebResult> RequestBytesWithCookiesAndRetry(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable<KeyValuePair<string, string>> data = null)
|
||||||
{
|
{
|
||||||
Exception lastException = null;
|
Exception lastException = null;
|
||||||
for (var i = 0; i < 3; i++)
|
for (var i = 0; i < 3; i++)
|
||||||
@@ -432,7 +432,7 @@ namespace Jackett.Common.Indexers
|
|||||||
throw lastException;
|
throw lastException;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task<BaseWebResult> RequestStringWithCookies(string url, string cookieOverride = null, string referer = null, Dictionary<string, string> headers = null)
|
protected async Task<WebResult> RequestStringWithCookies(string url, string cookieOverride = null, string referer = null, Dictionary<string, string> headers = null)
|
||||||
{
|
{
|
||||||
var request = new Utils.Clients.WebRequest()
|
var request = new Utils.Clients.WebRequest()
|
||||||
{
|
{
|
||||||
@@ -452,7 +452,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task<BaseWebResult> RequestStringWithCookiesAndRetry(string url, string cookieOverride = null, string referer = null, Dictionary<string, string> headers = null)
|
protected async Task<WebResult> RequestStringWithCookiesAndRetry(string url, string cookieOverride = null, string referer = null, Dictionary<string, string> headers = null)
|
||||||
{
|
{
|
||||||
Exception lastException = null;
|
Exception lastException = null;
|
||||||
for (var i = 0; i < 3; i++)
|
for (var i = 0; i < 3; i++)
|
||||||
@@ -472,7 +472,7 @@ namespace Jackett.Common.Indexers
|
|||||||
throw lastException;
|
throw lastException;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual async Task<BaseWebResult> RequestBytesWithCookies(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable<KeyValuePair<string, string>> data = null, Dictionary<string, string> headers = null)
|
protected virtual async Task<WebResult> RequestBytesWithCookies(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable<KeyValuePair<string, string>> data = null, Dictionary<string, string> headers = null)
|
||||||
{
|
{
|
||||||
var request = new Utils.Clients.WebRequest()
|
var request = new Utils.Clients.WebRequest()
|
||||||
{
|
{
|
||||||
@@ -492,7 +492,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task<BaseWebResult> PostDataWithCookies(string url, IEnumerable<KeyValuePair<string, string>> data, string cookieOverride = null, string referer = null, Dictionary<string, string> headers = null, string rawbody = null, bool? emulateBrowser = null)
|
protected async Task<WebResult> PostDataWithCookies(string url, IEnumerable<KeyValuePair<string, string>> data, string cookieOverride = null, string referer = null, Dictionary<string, string> headers = null, string rawbody = null, bool? emulateBrowser = null)
|
||||||
{
|
{
|
||||||
var request = new Utils.Clients.WebRequest()
|
var request = new Utils.Clients.WebRequest()
|
||||||
{
|
{
|
||||||
@@ -514,7 +514,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task<BaseWebResult> PostDataWithCookiesAndRetry(string url, IEnumerable<KeyValuePair<string, string>> data, string cookieOverride = null, string referer = null, Dictionary<string, string> headers = null, string rawbody = null, bool? emulateBrowser = null)
|
protected async Task<WebResult> PostDataWithCookiesAndRetry(string url, IEnumerable<KeyValuePair<string, string>> data, string cookieOverride = null, string referer = null, Dictionary<string, string> headers = null, string rawbody = null, bool? emulateBrowser = null)
|
||||||
{
|
{
|
||||||
Exception lastException = null;
|
Exception lastException = null;
|
||||||
for (var i = 0; i < 3; i++)
|
for (var i = 0; i < 3; i++)
|
||||||
@@ -534,7 +534,7 @@ namespace Jackett.Common.Indexers
|
|||||||
throw lastException;
|
throw lastException;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task<BaseWebResult> RequestLoginAndFollowRedirect(string url, IEnumerable<KeyValuePair<string, string>> data, string cookies, bool returnCookiesFromFirstCall, string redirectUrlOverride = null, string referer = null, bool accumulateCookies = false)
|
protected async Task<WebResult> RequestLoginAndFollowRedirect(string url, IEnumerable<KeyValuePair<string, string>> data, string cookies, bool returnCookiesFromFirstCall, string redirectUrlOverride = null, string referer = null, bool accumulateCookies = false)
|
||||||
{
|
{
|
||||||
var request = new Utils.Clients.WebRequest()
|
var request = new Utils.Clients.WebRequest()
|
||||||
{
|
{
|
||||||
@@ -566,7 +566,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void CheckTrackerDown(BaseWebResult response)
|
protected void CheckTrackerDown(WebResult response)
|
||||||
{
|
{
|
||||||
if (response.Status == System.Net.HttpStatusCode.BadGateway
|
if (response.Status == System.Net.HttpStatusCode.BadGateway
|
||||||
|| response.Status == System.Net.HttpStatusCode.GatewayTimeout
|
|| response.Status == System.Net.HttpStatusCode.GatewayTimeout
|
||||||
@@ -584,7 +584,7 @@ namespace Jackett.Common.Indexers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task FollowIfRedirect(BaseWebResult response, string referrer = null, string overrideRedirectUrl = null, string overrideCookies = null, bool accumulateCookies = false)
|
protected async Task FollowIfRedirect(WebResult response, string referrer = null, string overrideRedirectUrl = null, string overrideCookies = null, bool accumulateCookies = false)
|
||||||
{
|
{
|
||||||
// Follow up to 5 redirects
|
// Follow up to 5 redirects
|
||||||
for (var i = 0; i < 5; i++)
|
for (var i = 0; i < 5; i++)
|
||||||
@@ -629,7 +629,7 @@ namespace Jackett.Common.Indexers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task DoFollowIfRedirect(BaseWebResult incomingResponse, string referrer = null, string overrideRedirectUrl = null, string overrideCookies = null, bool accumulateCookies = false)
|
private async Task DoFollowIfRedirect(WebResult incomingResponse, string referrer = null, string overrideRedirectUrl = null, string overrideCookies = null, bool accumulateCookies = false)
|
||||||
{
|
{
|
||||||
if (incomingResponse.IsRedirect)
|
if (incomingResponse.IsRedirect)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ namespace Jackett.Common.Indexers
|
|||||||
{
|
{
|
||||||
{"cat", MapTorznabCapsToTrackers(query, true).FirstIfSingleOrDefault("0")}
|
{"cat", MapTorznabCapsToTrackers(query, true).FirstIfSingleOrDefault("0")}
|
||||||
};
|
};
|
||||||
var results = new List<BaseWebResult>();
|
var results = new List<WebResult>();
|
||||||
var search = new UriBuilder(SearchUrl);
|
var search = new UriBuilder(SearchUrl);
|
||||||
if (query.IsImdbQuery)
|
if (query.IsImdbQuery)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace Jackett.Common.Indexers
|
|||||||
public class CardigannIndexer : BaseWebIndexer
|
public class CardigannIndexer : BaseWebIndexer
|
||||||
{
|
{
|
||||||
protected IndexerDefinition Definition;
|
protected IndexerDefinition Definition;
|
||||||
protected BaseWebResult landingResult;
|
protected WebResult landingResult;
|
||||||
protected IHtmlDocument landingResultDocument;
|
protected IHtmlDocument landingResultDocument;
|
||||||
|
|
||||||
protected List<string> DefaultCategories = new List<string>();
|
protected List<string> DefaultCategories = new List<string>();
|
||||||
@@ -455,7 +455,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return template;
|
return template;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected bool checkForError(BaseWebResult loginResult, IList<errorBlock> errorBlocks)
|
protected bool checkForError(WebResult loginResult, IList<errorBlock> errorBlocks)
|
||||||
{
|
{
|
||||||
if (loginResult.Status == HttpStatusCode.Unauthorized) // e.g. used by YGGtorrent
|
if (loginResult.Status == HttpStatusCode.Unauthorized) // e.g. used by YGGtorrent
|
||||||
throw new ExceptionWithConfigData("401 Unauthorized, check your credentials", configData);
|
throw new ExceptionWithConfigData("401 Unauthorized, check your credentials", configData);
|
||||||
@@ -702,7 +702,7 @@ namespace Jackett.Common.Indexers
|
|||||||
landingResult = null;
|
landingResult = null;
|
||||||
landingResultDocument = null;
|
landingResultDocument = null;
|
||||||
|
|
||||||
BaseWebResult loginResult = null;
|
WebResult loginResult = null;
|
||||||
var enctype = form.GetAttribute("enctype");
|
var enctype = form.GetAttribute("enctype");
|
||||||
if (enctype == "multipart/form-data")
|
if (enctype == "multipart/form-data")
|
||||||
{
|
{
|
||||||
@@ -782,7 +782,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected string getRedirectDomainHint(BaseWebResult result) => getRedirectDomainHint(result.Request.Url, result.RedirectingTo);
|
protected string getRedirectDomainHint(WebResult result) => getRedirectDomainHint(result.Request.Url, result.RedirectingTo);
|
||||||
|
|
||||||
protected async Task<bool> TestLogin()
|
protected async Task<bool> TestLogin()
|
||||||
{
|
{
|
||||||
@@ -826,7 +826,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected bool CheckIfLoginIsNeeded(BaseWebResult Result, IHtmlDocument document)
|
protected bool CheckIfLoginIsNeeded(WebResult Result, IHtmlDocument document)
|
||||||
{
|
{
|
||||||
if (Result.IsRedirect)
|
if (Result.IsRedirect)
|
||||||
{
|
{
|
||||||
@@ -1334,7 +1334,7 @@ namespace Jackett.Common.Indexers
|
|||||||
logger.Info($"Fetching: {searchUrl}");
|
logger.Info($"Fetching: {searchUrl}");
|
||||||
|
|
||||||
// send HTTP request
|
// send HTTP request
|
||||||
BaseWebResult response = null;
|
WebResult response = null;
|
||||||
Dictionary<string, string> headers = null;
|
Dictionary<string, string> headers = null;
|
||||||
if (Search.Headers != null)
|
if (Search.Headers != null)
|
||||||
{
|
{
|
||||||
@@ -1721,7 +1721,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return releases;
|
return releases;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task<BaseWebResult> handleRequest(requestBlock request, Dictionary<string, object> variables = null, string referer = null)
|
protected async Task<WebResult> handleRequest(requestBlock request, Dictionary<string, object> variables = null, string referer = null)
|
||||||
{
|
{
|
||||||
var requestLinkStr = resolvePath(applyGoTemplateText(request.Path, variables)).ToString();
|
var requestLinkStr = resolvePath(applyGoTemplateText(request.Path, variables)).ToString();
|
||||||
logger.Debug($"CardigannIndexer ({Id}): handleRequest() requestLinkStr= {requestLinkStr}");
|
logger.Debug($"CardigannIndexer ({Id}): handleRequest() requestLinkStr= {requestLinkStr}");
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ReleaseInfo> ParseReleases(BaseWebResult response, TorznabQuery query)
|
private List<ReleaseInfo> ParseReleases(WebResult response, TorznabQuery query)
|
||||||
{
|
{
|
||||||
var releases = new List<ReleaseInfo>();
|
var releases = new List<ReleaseInfo>();
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return IndexerConfigurationStatus.Completed;
|
return IndexerConfigurationStatus.Completed;
|
||||||
}
|
}
|
||||||
|
|
||||||
private dynamic CheckResponse(BaseWebResult result)
|
private dynamic CheckResponse(WebResult result)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return searchString;
|
return searchString;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task<BaseWebResult> RequestBytesWithCookies(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable<KeyValuePair<string, string>> data = null, Dictionary<string, string> headers = null)
|
protected override async Task<WebResult> RequestBytesWithCookies(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable<KeyValuePair<string, string>> data = null, Dictionary<string, string> headers = null)
|
||||||
{
|
{
|
||||||
CookieHeader = null; // Download fill fail with cookies set
|
CookieHeader = null; // Download fill fail with cookies set
|
||||||
return await base.RequestBytesWithCookies(url, cookieOverride, method, referer, data, headers);
|
return await base.RequestBytesWithCookies(url, cookieOverride, method, referer, data, headers);
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return releases;
|
return releases;
|
||||||
}
|
}
|
||||||
|
|
||||||
private JArray ParseResponse(BaseWebResult result)
|
private JArray ParseResponse(WebResult result)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ namespace Jackett.Common.Indexers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<BaseWebResult> RequestStringAndRelogin(string url)
|
private async Task<WebResult> RequestStringAndRelogin(string url)
|
||||||
{
|
{
|
||||||
var results = await RequestStringWithCookies(url);
|
var results = await RequestStringWithCookies(url);
|
||||||
if (results.ContentString.Contains("503 Service"))
|
if (results.ContentString.Contains("503 Service"))
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return releases;
|
return releases;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ReleaseInfo> ParseTorrents(BaseWebResult results, string episodeString, TorznabQuery query,
|
private List<ReleaseInfo> ParseTorrents(WebResult results, string episodeString, TorznabQuery query,
|
||||||
int alreadyFound, int limit, int previouslyParsedOnPage)
|
int alreadyFound, int limit, int previouslyParsedOnPage)
|
||||||
{
|
{
|
||||||
var releases = new List<ReleaseInfo>();
|
var releases = new List<ReleaseInfo>();
|
||||||
|
|||||||
@@ -459,9 +459,9 @@ namespace Jackett.Common.Indexers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request">URL created by Query Builder</param>
|
/// <param name="request">URL created by Query Builder</param>
|
||||||
/// <returns>Results from query</returns>
|
/// <returns>Results from query</returns>
|
||||||
private async Task<BaseWebResult> QueryExec(string request)
|
private async Task<WebResult> QueryExec(string request)
|
||||||
{
|
{
|
||||||
BaseWebResult results;
|
WebResult results;
|
||||||
|
|
||||||
// Switch in we are in DEV mode with Hard Drive Cache or not
|
// Switch in we are in DEV mode with Hard Drive Cache or not
|
||||||
if (DevMode && CacheMode)
|
if (DevMode && CacheMode)
|
||||||
@@ -482,9 +482,9 @@ namespace Jackett.Common.Indexers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request">URL created by Query Builder</param>
|
/// <param name="request">URL created by Query Builder</param>
|
||||||
/// <returns>Results from query</returns>
|
/// <returns>Results from query</returns>
|
||||||
private async Task<BaseWebResult> QueryCache(string request)
|
private async Task<WebResult> QueryCache(string request)
|
||||||
{
|
{
|
||||||
BaseWebResult results;
|
WebResult results;
|
||||||
|
|
||||||
// Create Directory if not exist
|
// Create Directory if not exist
|
||||||
System.IO.Directory.CreateDirectory(Directory);
|
System.IO.Directory.CreateDirectory(Directory);
|
||||||
@@ -500,7 +500,7 @@ namespace Jackett.Common.Indexers
|
|||||||
{
|
{
|
||||||
// File exist... loading it right now !
|
// File exist... loading it right now !
|
||||||
Output("Loading results from hard drive cache ..." + request.GetHashCode() + ".json");
|
Output("Loading results from hard drive cache ..." + request.GetHashCode() + ".json");
|
||||||
results = JsonConvert.DeserializeObject<WebClientStringResult>(System.IO.File.ReadAllText(file));
|
results = JsonConvert.DeserializeObject<WebResult>(System.IO.File.ReadAllText(file));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -519,7 +519,7 @@ namespace Jackett.Common.Indexers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request">URL created by Query Builder</param>
|
/// <param name="request">URL created by Query Builder</param>
|
||||||
/// <returns>Results from query</returns>
|
/// <returns>Results from query</returns>
|
||||||
private async Task<BaseWebResult> QueryTracker(string request)
|
private async Task<WebResult> QueryTracker(string request)
|
||||||
{
|
{
|
||||||
// Cache mode not enabled or cached file didn't exist for our query
|
// Cache mode not enabled or cached file didn't exist for our query
|
||||||
Output("\nQuerying tracker for results....");
|
Output("\nQuerying tracker for results....");
|
||||||
|
|||||||
@@ -530,9 +530,9 @@ namespace Jackett.Common.Indexers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request">URL created by Query Builder</param>
|
/// <param name="request">URL created by Query Builder</param>
|
||||||
/// <returns>Results from query</returns>
|
/// <returns>Results from query</returns>
|
||||||
private async Task<BaseWebResult> QueryExec(string request)
|
private async Task<WebResult> QueryExec(string request)
|
||||||
{
|
{
|
||||||
BaseWebResult results;
|
WebResult results;
|
||||||
|
|
||||||
// Switch in we are in DEV mode with Hard Drive Cache or not
|
// Switch in we are in DEV mode with Hard Drive Cache or not
|
||||||
if (DevMode && CacheMode)
|
if (DevMode && CacheMode)
|
||||||
@@ -553,9 +553,9 @@ namespace Jackett.Common.Indexers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request">URL created by Query Builder</param>
|
/// <param name="request">URL created by Query Builder</param>
|
||||||
/// <returns>Results from query</returns>
|
/// <returns>Results from query</returns>
|
||||||
private async Task<BaseWebResult> QueryCache(string request)
|
private async Task<WebResult> QueryCache(string request)
|
||||||
{
|
{
|
||||||
BaseWebResult results;
|
WebResult results;
|
||||||
|
|
||||||
// Create Directory if not exist
|
// Create Directory if not exist
|
||||||
System.IO.Directory.CreateDirectory(Directory);
|
System.IO.Directory.CreateDirectory(Directory);
|
||||||
@@ -571,7 +571,7 @@ namespace Jackett.Common.Indexers
|
|||||||
{
|
{
|
||||||
// File exist... loading it right now !
|
// File exist... loading it right now !
|
||||||
Output("Loading results from hard drive cache ..." + request.GetHashCode() + ".json");
|
Output("Loading results from hard drive cache ..." + request.GetHashCode() + ".json");
|
||||||
results = JsonConvert.DeserializeObject<WebClientStringResult>(System.IO.File.ReadAllText(file));
|
results = JsonConvert.DeserializeObject<WebResult>(System.IO.File.ReadAllText(file));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -590,7 +590,7 @@ namespace Jackett.Common.Indexers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request">URL created by Query Builder</param>
|
/// <param name="request">URL created by Query Builder</param>
|
||||||
/// <returns>Results from query</returns>
|
/// <returns>Results from query</returns>
|
||||||
private async Task<BaseWebResult> QueryTracker(string request)
|
private async Task<WebResult> QueryTracker(string request)
|
||||||
{
|
{
|
||||||
// Cache mode not enabled or cached file didn't exist for our query
|
// Cache mode not enabled or cached file didn't exist for our query
|
||||||
Output("\nQuerying tracker for results....");
|
Output("\nQuerying tracker for results....");
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ namespace Jackett.Common.Indexers
|
|||||||
var releases = new List<ReleaseInfo>(); //List of releases initialization
|
var releases = new List<ReleaseInfo>(); //List of releases initialization
|
||||||
var searchString = query.GetQueryString(); //get search string from query
|
var searchString = query.GetQueryString(); //get search string from query
|
||||||
|
|
||||||
BaseWebResult results = null;
|
WebResult results = null;
|
||||||
var queryCollection = new NameValueCollection();
|
var queryCollection = new NameValueCollection();
|
||||||
var catList = MapTorznabCapsToTrackers(query); // map categories from query to indexer specific
|
var catList = MapTorznabCapsToTrackers(query); // map categories from query to indexer specific
|
||||||
var categ = string.Join(",", catList);
|
var categ = string.Join(",", catList);
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ namespace Jackett.Common.Indexers
|
|||||||
|
|
||||||
public override async Task<ConfigurationData> GetConfigurationForSetup()
|
public override async Task<ConfigurationData> GetConfigurationForSetup()
|
||||||
{
|
{
|
||||||
BaseWebResult loginPage;
|
WebResult loginPage;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
loginPage = await RequestStringWithCookies(StartPageUrl, string.Empty);
|
loginPage = await RequestStringWithCookies(StartPageUrl, string.Empty);
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ namespace Jackett.Common.Indexers
|
|||||||
{
|
{
|
||||||
var releases = new List<ReleaseInfo>();
|
var releases = new List<ReleaseInfo>();
|
||||||
var queryString = query.GetQueryString();
|
var queryString = query.GetQueryString();
|
||||||
BaseWebResult results = null;
|
WebResult results = null;
|
||||||
var searchUrls = new List<string>();
|
var searchUrls = new List<string>();
|
||||||
if (!string.IsNullOrWhiteSpace(query.SanitizedSearchTerm))
|
if (!string.IsNullOrWhiteSpace(query.SanitizedSearchTerm))
|
||||||
{
|
{
|
||||||
@@ -170,7 +170,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return releases;
|
return releases;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<BaseWebResult> ReloginIfNecessary(BaseWebResult response)
|
private async Task<WebResult> ReloginIfNecessary(WebResult response)
|
||||||
{
|
{
|
||||||
if (response.ContentString.Contains("onclick=\"document.location='logout'\""))
|
if (response.ContentString.Contains("onclick=\"document.location='logout'\""))
|
||||||
return response;
|
return response;
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ namespace Jackett.Common.Indexers
|
|||||||
return IndexerConfigurationStatus.Completed;
|
return IndexerConfigurationStatus.Completed;
|
||||||
}
|
}
|
||||||
|
|
||||||
private JArray CheckResponse(BaseWebResult result)
|
private JArray CheckResponse(WebResult result)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ namespace Jackett.Common.Indexers
|
|||||||
/// <param name="alreadyFound">Number of the already found torrents.(used for limit)</param>
|
/// <param name="alreadyFound">Number of the already found torrents.(used for limit)</param>
|
||||||
/// <param name="limit">The limit to the number of torrents to download </param>
|
/// <param name="limit">The limit to the number of torrents to download </param>
|
||||||
/// <param name="previouslyParsedOnPage">Current position in parsed results</param>
|
/// <param name="previouslyParsedOnPage">Current position in parsed results</param>
|
||||||
private async Task<List<ReleaseInfo>> ParseTorrentsAsync(BaseWebResult results, int alreadyFound, int limit,
|
private async Task<List<ReleaseInfo>> ParseTorrentsAsync(WebResult results, int alreadyFound, int limit,
|
||||||
int previouslyParsedOnPage)
|
int previouslyParsedOnPage)
|
||||||
{
|
{
|
||||||
var releases = new List<ReleaseInfo>();
|
var releases = new List<ReleaseInfo>();
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ namespace Jackett.Common.Indexers
|
|||||||
var releases = new List<ReleaseInfo>();
|
var releases = new List<ReleaseInfo>();
|
||||||
var searchString = query.GetQueryString();
|
var searchString = query.GetQueryString();
|
||||||
|
|
||||||
BaseWebResult results = null;
|
WebResult results = null;
|
||||||
var queryCollection = new NameValueCollection
|
var queryCollection = new NameValueCollection
|
||||||
{
|
{
|
||||||
{ "act", "search" },
|
{ "act", "search" },
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace Jackett.Common.Utils.Clients
|
|||||||
base.Init();
|
base.Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task<WebClientByteResult> Run(WebRequest webRequest)
|
protected override async Task<WebResult> Run(WebRequest webRequest)
|
||||||
{
|
{
|
||||||
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
|
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ namespace Jackett.Common.Utils.Clients
|
|||||||
|
|
||||||
using (response = await client.SendAsync(request))
|
using (response = await client.SendAsync(request))
|
||||||
{
|
{
|
||||||
var result = new WebClientByteResult
|
var result = new WebResult
|
||||||
{
|
{
|
||||||
ContentBytes = await response.Content.ReadAsByteArrayAsync()
|
ContentBytes = await response.Content.ReadAsByteArrayAsync()
|
||||||
};
|
};
|
||||||
@@ -147,7 +147,7 @@ namespace Jackett.Common.Utils.Clients
|
|||||||
redirval = value.Substring(start + 1);
|
redirval = value.Substring(start + 1);
|
||||||
result.RedirectingTo = redirval;
|
result.RedirectingTo = redirval;
|
||||||
// normally we don't want a serviceunavailable (503) to be a redirect, but that's the nature
|
// normally we don't want a serviceunavailable (503) to be a redirect, but that's the nature
|
||||||
// of this cloudflare approach..don't want to alter BaseWebResult.IsRedirect because normally
|
// of this cloudflare approach..don't want to alter WebResult.IsRedirect because normally
|
||||||
// it shoudln't include service unavailable..only if we have this redirect header.
|
// it shoudln't include service unavailable..only if we have this redirect header.
|
||||||
response.StatusCode = System.Net.HttpStatusCode.Redirect;
|
response.StatusCode = System.Net.HttpStatusCode.Redirect;
|
||||||
redirtime = int.Parse(value.Substring(0, end));
|
redirtime = int.Parse(value.Substring(0, end));
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ namespace Jackett.Common.Utils.Clients
|
|||||||
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
|
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task<WebClientByteResult> Run(WebRequest webRequest)
|
protected override async Task<WebResult> Run(WebRequest webRequest)
|
||||||
{
|
{
|
||||||
HttpResponseMessage response = null;
|
HttpResponseMessage response = null;
|
||||||
var request = new HttpRequestMessage();
|
var request = new HttpRequestMessage();
|
||||||
@@ -143,7 +143,7 @@ namespace Jackett.Common.Utils.Clients
|
|||||||
|
|
||||||
response = await client.SendAsync(request);
|
response = await client.SendAsync(request);
|
||||||
|
|
||||||
var result = new WebClientByteResult
|
var result = new WebResult
|
||||||
{
|
{
|
||||||
ContentBytes = await response.Content.ReadAsByteArrayAsync()
|
ContentBytes = await response.Content.ReadAsByteArrayAsync()
|
||||||
};
|
};
|
||||||
@@ -173,7 +173,7 @@ namespace Jackett.Common.Utils.Clients
|
|||||||
redirval = value.Substring(start + 1);
|
redirval = value.Substring(start + 1);
|
||||||
result.RedirectingTo = redirval;
|
result.RedirectingTo = redirval;
|
||||||
// normally we don't want a serviceunavailable (503) to be a redirect, but that's the nature
|
// normally we don't want a serviceunavailable (503) to be a redirect, but that's the nature
|
||||||
// of this cloudflare approach..don't want to alter BaseWebResult.IsRedirect because normally
|
// of this cloudflare approach..don't want to alter WebResult.IsRedirect because normally
|
||||||
// it shoudln't include service unavailable..only if we have this redirect header.
|
// it shoudln't include service unavailable..only if we have this redirect header.
|
||||||
response.StatusCode = System.Net.HttpStatusCode.Redirect;
|
response.StatusCode = System.Net.HttpStatusCode.Redirect;
|
||||||
redirtime = int.Parse(value.Substring(0, end));
|
redirtime = int.Parse(value.Substring(0, end));
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
namespace Jackett.Common.Utils.Clients
|
|
||||||
{
|
|
||||||
public class WebClientByteResult : BaseWebResult
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -186,7 +186,7 @@ namespace Jackett.Common.Utils.Clients
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual async Task<BaseWebResult> GetBytes(WebRequest request)
|
public virtual async Task<WebResult> GetBytes(WebRequest request)
|
||||||
{
|
{
|
||||||
logger.Debug(string.Format("WebClient({0}).GetBytes(Url:{1})", ClientType, request.Url));
|
logger.Debug(string.Format("WebClient({0}).GetBytes(Url:{1})", ClientType, request.Url));
|
||||||
PrepareRequest(request);
|
PrepareRequest(request);
|
||||||
@@ -198,7 +198,7 @@ namespace Jackett.Common.Utils.Clients
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual async Task<BaseWebResult> GetString(WebRequest request)
|
public virtual async Task<WebResult> GetString(WebRequest request)
|
||||||
{
|
{
|
||||||
logger.Debug(string.Format("WebClient({0}).GetString(Url:{1})", ClientType, request.Url));
|
logger.Debug(string.Format("WebClient({0}).GetString(Url:{1})", ClientType, request.Url));
|
||||||
PrepareRequest(request);
|
PrepareRequest(request);
|
||||||
@@ -206,7 +206,7 @@ namespace Jackett.Common.Utils.Clients
|
|||||||
var result = await Run(request);
|
var result = await Run(request);
|
||||||
lastRequest = DateTime.Now;
|
lastRequest = DateTime.Now;
|
||||||
result.Request = request;
|
result.Request = request;
|
||||||
BaseWebResult stringResult = result;
|
WebResult stringResult = result;
|
||||||
|
|
||||||
logger.Debug(string.Format("WebClient({0}): Returning {1} => {2}", ClientType, result.Status, (result.IsRedirect ? result.RedirectingTo + " " : "") + (stringResult.ContentString ?? "<NULL>")));
|
logger.Debug(string.Format("WebClient({0}): Returning {1} => {2}", ClientType, result.Status, (result.IsRedirect ? result.RedirectingTo + " " : "") + (stringResult.ContentString ?? "<NULL>")));
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ namespace Jackett.Common.Utils.Clients
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
|
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
|
||||||
protected virtual async Task<WebClientByteResult> Run(WebRequest webRequest) => throw new NotImplementedException();
|
protected virtual async Task<WebResult> Run(WebRequest webRequest) => throw new NotImplementedException();
|
||||||
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
|
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
|
||||||
|
|
||||||
public virtual void Init()
|
public virtual void Init()
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
namespace Jackett.Common.Utils.Clients
|
|
||||||
{
|
|
||||||
public class WebClientStringResult : BaseWebResult
|
|
||||||
{
|
|
||||||
public static implicit operator WebClientStringResult(WebClientByteResult br) => new WebClientStringResult()
|
|
||||||
{
|
|
||||||
ContentBytes = br.ContentBytes,
|
|
||||||
Cookies = br.Cookies,
|
|
||||||
Encoding = br.Encoding,
|
|
||||||
Headers = br.Headers,
|
|
||||||
RedirectingTo = br.RedirectingTo,
|
|
||||||
Request = br.Request,
|
|
||||||
Status = br.Status
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,7 +6,7 @@ using System.Text.RegularExpressions;
|
|||||||
|
|
||||||
namespace Jackett.Common.Utils.Clients
|
namespace Jackett.Common.Utils.Clients
|
||||||
{
|
{
|
||||||
public abstract class BaseWebResult
|
public class WebResult
|
||||||
{
|
{
|
||||||
private string _contentString;
|
private string _contentString;
|
||||||
private Encoding _encoding;
|
private Encoding _encoding;
|
||||||
@@ -95,7 +95,7 @@ namespace Jackett.Common.Utils
|
|||||||
return isAdmin;
|
return isAdmin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ResureRedirectIsFullyQualified(WebRequest req, BaseWebResult result)
|
public static void ResureRedirectIsFullyQualified(WebRequest req, WebResult result)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(result.RedirectingTo))
|
if (!string.IsNullOrEmpty(result.RedirectingTo))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -33,13 +33,13 @@ namespace Jackett.Test
|
|||||||
|
|
||||||
public static IContainer Container => testContainer;
|
public static IContainer Container => testContainer;
|
||||||
|
|
||||||
public static void RegisterByteCall(WebRequest r, Func<WebRequest, WebClientByteResult> f)
|
public static void RegisterByteCall(WebRequest r, Func<WebRequest, WebResult> f)
|
||||||
{
|
{
|
||||||
var client = testContainer.Resolve<WebClient>() as TestWebClient;
|
var client = testContainer.Resolve<WebClient>() as TestWebClient;
|
||||||
client.RegisterByteCall(r, f);
|
client.RegisterByteCall(r, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RegisterStringCall(WebRequest r, Func<WebRequest, WebClientStringResult> f)
|
public static void RegisterStringCall(WebRequest r, Func<WebRequest, WebResult> f)
|
||||||
{
|
{
|
||||||
var client = testContainer.Resolve<WebClient>() as TestWebClient;
|
var client = testContainer.Resolve<WebClient>() as TestWebClient;
|
||||||
client.RegisterStringCall(r, f);
|
client.RegisterStringCall(r, f);
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ namespace Jackett.Test
|
|||||||
{
|
{
|
||||||
public class TestWebClient : WebClient
|
public class TestWebClient : WebClient
|
||||||
{
|
{
|
||||||
private readonly Dictionary<WebRequest, Func<WebRequest, BaseWebResult>> byteCallbacks = new Dictionary<WebRequest, Func<WebRequest, BaseWebResult>>();
|
private readonly Dictionary<WebRequest, Func<WebRequest, WebResult>> byteCallbacks = new Dictionary<WebRequest, Func<WebRequest, WebResult>>();
|
||||||
private readonly Dictionary<WebRequest, Func<WebRequest, BaseWebResult>> stringCallbacks = new Dictionary<WebRequest, Func<WebRequest, BaseWebResult>>();
|
private readonly Dictionary<WebRequest, Func<WebRequest, WebResult>> stringCallbacks = new Dictionary<WebRequest, Func<WebRequest, WebResult>>();
|
||||||
|
|
||||||
public TestWebClient(IProcessService p, Logger l, IConfigurationService c, ServerConfig sc)
|
public TestWebClient(IProcessService p, Logger l, IConfigurationService c, ServerConfig sc)
|
||||||
: base(p: p,
|
: base(p: p,
|
||||||
@@ -22,13 +22,13 @@ namespace Jackett.Test
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegisterByteCall(WebRequest req, Func<WebRequest, WebClientByteResult> f) => byteCallbacks.Add(req, f);
|
public void RegisterByteCall(WebRequest req, Func<WebRequest, WebResult> f) => byteCallbacks.Add(req, f);
|
||||||
|
|
||||||
public void RegisterStringCall(WebRequest req, Func<WebRequest, WebClientStringResult> f) => stringCallbacks.Add(req, f);
|
public void RegisterStringCall(WebRequest req, Func<WebRequest, WebResult> f) => stringCallbacks.Add(req, f);
|
||||||
|
|
||||||
public override Task<BaseWebResult> GetBytes(WebRequest request) => Task.FromResult(byteCallbacks.Where(r => r.Key.Equals(request)).First().Value.Invoke(request));
|
public override Task<WebResult> GetBytes(WebRequest request) => Task.FromResult(byteCallbacks.Where(r => r.Key.Equals(request)).First().Value.Invoke(request));
|
||||||
|
|
||||||
public override Task<BaseWebResult> GetString(WebRequest request) => Task.FromResult(stringCallbacks.Where(r => r.Key.Equals(request)).First().Value.Invoke(request));
|
public override Task<WebResult> GetString(WebRequest request) => Task.FromResult(stringCallbacks.Where(r => r.Key.Equals(request)).First().Value.Invoke(request));
|
||||||
|
|
||||||
public override void Init()
|
public override void Init()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace Jackett.Test.Util
|
|||||||
[Test]
|
[Test]
|
||||||
public void ResureRedirectIsFullyQualified_makes_redicts_fully_qualified()
|
public void ResureRedirectIsFullyQualified_makes_redicts_fully_qualified()
|
||||||
{
|
{
|
||||||
var res = new WebClientByteResult()
|
var res = new WebResult
|
||||||
{
|
{
|
||||||
RedirectingTo = "list?p=1"
|
RedirectingTo = "list?p=1"
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user