Revert "core: refactor http webclient part 1 #8529 (#7652)"

This reverts commit 0bdcfd1e7b.
This commit is contained in:
ngosang 2020-09-21 08:04:26 +02:00
parent 9c492c5dcb
commit 1271ecaa4c
90 changed files with 380 additions and 380 deletions

View File

@ -173,7 +173,7 @@ namespace Jackett.Common.Indexers
{ {
// Parse error page // Parse error page
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var message = dom.QuerySelector(".warning").TextContent.Split('.').Reverse().Skip(1).First(); var message = dom.QuerySelector(".warning").TextContent.Split('.').Reverse().Skip(1).First();
// Try left // Try left
@ -558,7 +558,7 @@ namespace Jackett.Common.Indexers
results = await RequestStringWithCookiesAndRetry(request, null, null, emulatedBrowserHeaders); results = await RequestStringWithCookiesAndRetry(request, null, null, emulatedBrowserHeaders);
// Return results from tracker // Return results from tracker
return results.ContentString; return results.Content;
} }
/// <summary> /// <summary>

View File

@ -149,7 +149,7 @@ without this configuration the torrent download does not work.<br/>You can find
{ "pid", configData.Pid.Value.Trim() } { "pid", configData.Pid.Value.Trim() }
}; };
var result = await PostDataWithCookies(AuthUrl, body, headers: AuthHeaders); var result = await PostDataWithCookies(AuthUrl, body, headers: AuthHeaders);
var json = JObject.Parse(result.ContentString); var json = JObject.Parse(result.Content);
_token = json.Value<string>("token"); _token = json.Value<string>("token");
if (_token == null) if (_token == null)
throw new Exception(json.Value<string>("message")); throw new Exception(json.Value<string>("message"));
@ -168,11 +168,11 @@ without this configuration the torrent download does not work.<br/>You can find
response = await RequestStringWithCookiesAndRetry(episodeSearchUrl, headers: GetSearchHeaders()); response = await RequestStringWithCookiesAndRetry(episodeSearchUrl, headers: GetSearchHeaders());
} }
else if (response.Status != HttpStatusCode.OK) else if (response.Status != HttpStatusCode.OK)
throw new Exception($"Unknown error: {response.ContentString}"); throw new Exception($"Unknown error: {response.Content}");
try try
{ {
var jsonContent = JToken.Parse(response.ContentString); var jsonContent = JToken.Parse(response.Content);
foreach (var row in jsonContent.Value<JArray>("data")) foreach (var row in jsonContent.Value<JArray>("data"))
{ {
var comments = new Uri(row.Value<string>("url")); var comments = new Uri(row.Value<string>("url"));
@ -237,7 +237,7 @@ without this configuration the torrent download does not work.<br/>You can find
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
} }

View File

@ -80,11 +80,11 @@ namespace Jackett.Common.Indexers.Abstract
JObject json = null; JObject json = null;
try try
{ {
json = JObject.Parse(response.ContentString); json = JObject.Parse(response.Content);
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new Exception("Error while parsing json: " + response.ContentString, ex); throw new Exception("Error while parsing json: " + response.Content, ex);
} }
var error = (string)json["error"]; var error = (string)json["error"];
if (error != null) if (error != null)
@ -122,7 +122,7 @@ namespace Jackett.Common.Indexers.Abstract
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -129,13 +129,13 @@ namespace Jackett.Common.Indexers.Abstract
} }
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, string.Empty, true, SiteLink); var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, string.Empty, true, SiteLink);
await ConfigureIfOK(response.Cookies, response.ContentString != null && response.ContentString.Contains("logout.php"), () => await ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php"), () =>
{ {
var loginResultParser = new HtmlParser(); var loginResultParser = new HtmlParser();
var loginResultDocument = loginResultParser.ParseDocument(response.ContentString); var loginResultDocument = loginResultParser.ParseDocument(response.Content);
var loginform = loginResultDocument.QuerySelector("#loginform"); var loginform = loginResultDocument.QuerySelector("#loginform");
if (loginform == null) if (loginform == null)
throw new ExceptionWithConfigData(response.ContentString, configData); throw new ExceptionWithConfigData(response.Content, configData);
loginform.QuerySelector("table").Remove(); loginform.QuerySelector("table").Remove();
var errorMessage = loginform.TextContent.Replace("\n\t", " ").Trim(); var errorMessage = loginform.TextContent.Replace("\n\t", " ").Trim();
@ -206,7 +206,7 @@ namespace Jackett.Common.Indexers.Abstract
try try
{ {
var json = JObject.Parse(response.ContentString); var json = JObject.Parse(response.Content);
foreach (JObject r in json["response"]["results"]) foreach (JObject r in json["response"]["results"])
{ {
var groupTime = DateTimeUtil.UnixTimestampToDateTime(long.Parse((string)r["groupTime"])); var groupTime = DateTimeUtil.UnixTimestampToDateTime(long.Parse((string)r["groupTime"]));
@ -266,7 +266,7 @@ namespace Jackett.Common.Indexers.Abstract
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -75,7 +75,7 @@ namespace Jackett.Common.Indexers.Abstract
}; };
var jsonData = JsonConvert.SerializeObject(body); var jsonData = JsonConvert.SerializeObject(body);
var result = await PostDataWithCookies(LoginUrl, null, headers: ApiHeaders, rawbody: jsonData); var result = await PostDataWithCookies(LoginUrl, null, headers: ApiHeaders, rawbody: jsonData);
var json = JObject.Parse(result.ContentString); var json = JObject.Parse(result.Content);
_token = json.Value<string>("token"); _token = json.Value<string>("token");
if (_token == null) if (_token == null)
throw new Exception(json.Value<string>("message")); throw new Exception(json.Value<string>("message"));
@ -112,11 +112,11 @@ namespace Jackett.Common.Indexers.Abstract
response = await RequestStringWithCookies(searchUrl, headers: GetSearchHeaders()); response = await RequestStringWithCookies(searchUrl, headers: GetSearchHeaders());
} }
else if (response.Status != HttpStatusCode.OK) else if (response.Status != HttpStatusCode.OK)
throw new Exception($"Unknown error in search: {response.ContentString}"); throw new Exception($"Unknown error in search: {response.Content}");
try try
{ {
var rows = JArray.Parse(response.ContentString); var rows = JArray.Parse(response.Content);
foreach (var row in rows) foreach (var row in rows)
{ {
var id = row.Value<string>("id"); var id = row.Value<string>("id");
@ -160,7 +160,7 @@ namespace Jackett.Common.Indexers.Abstract
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
} }

View File

@ -119,7 +119,7 @@ namespace Jackett.Common.Indexers
); );
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = await parser.ParseDocumentAsync(result.ContentString); var document = await parser.ParseDocumentAsync(result.Content);
await ConfigureIfOK(result.Cookies, IsAuthorized(result), () => await ConfigureIfOK(result.Cookies, IsAuthorized(result), () =>
{ {
@ -163,7 +163,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = await parser.ParseDocumentAsync(result.ContentString); var document = await parser.ParseDocumentAsync(result.Content);
foreach (var linkNode in document.QuerySelectorAll(ReleaseLinksSelector)) foreach (var linkNode in document.QuerySelectorAll(ReleaseLinksSelector))
{ {
@ -173,7 +173,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(result.ContentString, ex); OnParseError(result.Content, ex);
} }
return releases; return releases;
@ -200,7 +200,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = await parser.ParseDocumentAsync(result.ContentString); var document = await parser.ParseDocumentAsync(result.Content);
var content = document.GetElementById(ContentId); var content = document.GetElementById(ContentId);
var date = GetDateFromShowPage(url, content); var date = GetDateFromShowPage(url, content);
@ -247,7 +247,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(result.ContentString, ex); OnParseError(result.Content, ex);
} }
return releases; return releases;
@ -510,7 +510,7 @@ namespace Jackett.Common.Indexers
} }
private bool IsAuthorized(WebClientStringResult result) => private bool IsAuthorized(WebClientStringResult result) =>
result.ContentString.Contains("index.php?action=logout"); result.Content.Contains("index.php?action=logout");
private IEnumerable<int> ParseCategories(Uri showUri) private IEnumerable<int> ParseCategories(Uri showUri)
{ {
@ -535,7 +535,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = await parser.ParseDocumentAsync(response.ContentString); var document = await parser.ParseDocumentAsync(response.Content);
foreach (var linkNode in document.QuerySelectorAll(searchLinkSelector)) foreach (var linkNode in document.QuerySelectorAll(searchLinkSelector))
{ {
@ -545,7 +545,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -163,7 +163,7 @@ namespace Jackett.Common.Indexers
throw new WebException($"Anidex search returned unexpected result. Expected 200 OK but got {response.Status}.", WebExceptionStatus.ProtocolError); throw new WebException($"Anidex search returned unexpected result. Expected 200 OK but got {response.Status}.", WebExceptionStatus.ProtocolError);
// Search seems to have been a success so parse it // Search seems to have been a success so parse it
return ParseResult(response.ContentString); return ParseResult(response.Content);
} }
private IEnumerable<ReleaseInfo> ParseResult(string response) private IEnumerable<ReleaseInfo> ParseResult(string response)

View File

@ -180,9 +180,9 @@ namespace Jackett.Common.Indexers
// Get the content from the tracker // Get the content from the tracker
var response = await RequestStringWithCookiesAndRetry(queryUrl); var response = await RequestStringWithCookiesAndRetry(queryUrl);
if (!response.ContentString.StartsWith("{")) // not JSON => error if (!response.Content.StartsWith("{")) // not JSON => error
throw new ExceptionWithConfigData("unexcepted response (not JSON)", configData); throw new ExceptionWithConfigData("unexcepted response (not JSON)", configData);
dynamic json = JsonConvert.DeserializeObject<dynamic>(response.ContentString); dynamic json = JsonConvert.DeserializeObject<dynamic>(response.Content);
// Parse // Parse
try try
@ -418,7 +418,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
// Add to the cache // Add to the cache

View File

@ -82,10 +82,10 @@ namespace Jackett.Common.Indexers
var loginPage = await RequestStringWithCookiesAndRetry(LoginUrl, "", LoginUrl); var loginPage = await RequestStringWithCookiesAndRetry(LoginUrl, "", LoginUrl);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("logout.php"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector(".ui-state-error").Text().Trim(); var errorMessage = dom.QuerySelector(".ui-state-error").Text().Trim();
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -119,7 +119,7 @@ namespace Jackett.Common.Indexers
var response = await RequestStringWithCookiesAndRetry(searchUrl, null, SearchUrlReferer, extraHeaders); var response = await RequestStringWithCookiesAndRetry(searchUrl, null, SearchUrlReferer, extraHeaders);
var results = response.ContentString; var results = response.Content;
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();

View File

@ -65,10 +65,10 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString?.Contains("logout.php") == true, () => await ConfigureIfOK(result.Cookies, result.Content?.Contains("logout.php") == true, () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector("form#loginform").TextContent.Trim(); var errorMessage = dom.QuerySelector("form#loginform").TextContent.Trim();
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -98,7 +98,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var doc = parser.ParseDocument(results.ContentString); var doc = parser.ParseDocument(results.Content);
var rows = doc.QuerySelectorAll("table.torrent_table > tbody > tr.torrent"); var rows = doc.QuerySelectorAll("table.torrent_table > tbody > tr.torrent");
foreach (var row in rows) foreach (var row in rows)
{ {
@ -164,7 +164,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -101,12 +101,12 @@ namespace Jackett.Common.Indexers
var searchUrl = SearchUrl + "?" + qc.GetQueryString(); var searchUrl = SearchUrl + "?" + qc.GetQueryString();
var results = await RequestStringWithCookies(searchUrl); var results = await RequestStringWithCookies(searchUrl);
if (string.IsNullOrWhiteSpace(results.ContentString)) if (string.IsNullOrWhiteSpace(results.Content))
throw new Exception("Empty response. Please, check the Passkey."); throw new Exception("Empty response. Please, check the Passkey.");
try try
{ {
var doc = XDocument.Parse(results.ContentString); var doc = XDocument.Parse(results.Content);
var errorMsg = doc.Descendants("error").FirstOrDefault()?.Value; var errorMsg = doc.Descendants("error").FirstOrDefault()?.Value;
if (errorMsg?.Contains("No Results") == true) if (errorMsg?.Contains("No Results") == true)
@ -208,7 +208,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -75,10 +75,10 @@ namespace Jackett.Common.Indexers
}; };
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, SiteLink); var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, SiteLink);
await ConfigureIfOK(response.Cookies, response.ContentString != null && response.ContentString.Contains("logout.php"), () => await ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php"), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var messageEl = dom.QuerySelectorAll("#loginform"); var messageEl = dom.QuerySelectorAll("#loginform");
var messages = new List<string>(); var messages = new List<string>();
for (var i = 0; i < 13; i++) for (var i = 0; i < 13; i++)
@ -139,7 +139,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var rows = dom.QuerySelectorAll("#torrent_table > tbody > tr.torrent"); var rows = dom.QuerySelectorAll("#torrent_table > tbody > tr.torrent");
foreach (var row in rows) foreach (var row in rows)
{ {
@ -195,7 +195,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
} }
return releases; return releases;

View File

@ -114,9 +114,9 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true);
await ConfigureIfOK( await ConfigureIfOK(
result.Cookies, result.ContentString?.Contains("logout.php") == true, () => result.Cookies, result.Content?.Contains("logout.php") == true, () =>
{ {
var errorMessage = result.ContentString; var errorMessage = result.Content;
throw new ExceptionWithConfigData(errorMessage, ConfigData); throw new ExceptionWithConfigData(errorMessage, ConfigData);
}); });
return IndexerConfigurationStatus.RequiresTesting; return IndexerConfigurationStatus.RequiresTesting;
@ -269,7 +269,7 @@ namespace Jackett.Common.Indexers
{ {
const string rowsSelector = "table.torrent_table > tbody > tr:not(tr.colhead)"; const string rowsSelector = "table.torrent_table > tbody > tr:not(tr.colhead)";
var searchResultParser = new HtmlParser(); var searchResultParser = new HtmlParser();
var searchResultDocument = searchResultParser.ParseDocument(results.ContentString); var searchResultDocument = searchResultParser.ParseDocument(results.Content);
var rows = searchResultDocument.QuerySelectorAll(rowsSelector); var rows = searchResultDocument.QuerySelectorAll(rowsSelector);
ICollection<int> groupCategory = null; ICollection<int> groupCategory = null;
string groupTitle = null; string groupTitle = null;
@ -380,7 +380,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;
@ -401,7 +401,7 @@ namespace Jackett.Common.Indexers
{ {
const string rowsSelector = "table.torrent_table > tbody > tr:not(tr.colhead)"; const string rowsSelector = "table.torrent_table > tbody > tr:not(tr.colhead)";
var searchResultParser = new HtmlParser(); var searchResultParser = new HtmlParser();
var searchResultDocument = searchResultParser.ParseDocument(results.ContentString); var searchResultDocument = searchResultParser.ParseDocument(results.Content);
var rows = searchResultDocument.QuerySelectorAll(rowsSelector); var rows = searchResultDocument.QuerySelectorAll(rowsSelector);
foreach (var row in rows) foreach (var row in rows)
try try
@ -509,7 +509,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -81,7 +81,7 @@ namespace Jackett.Common.Indexers
}; };
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginForm.Cookies, true, null, SiteLink); var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginForm.Cookies, true, null, SiteLink);
var responseContent = response.ContentString; var responseContent = response.Content;
await ConfigureIfOK(response.Cookies, responseContent.Contains(LogoutStr), () => await ConfigureIfOK(response.Cookies, responseContent.Contains(LogoutStr), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
@ -107,7 +107,7 @@ namespace Jackett.Common.Indexers
var searchString = queryCopy.SanitizedSearchTerm; var searchString = queryCopy.SanitizedSearchTerm;
var episodeSearchUrl = SearchUrl + WebUtility.UrlEncode(searchString); var episodeSearchUrl = SearchUrl + WebUtility.UrlEncode(searchString);
var response = await RequestStringWithCookiesAndRetry(episodeSearchUrl); var response = await RequestStringWithCookiesAndRetry(episodeSearchUrl);
if (!response.ContentString.Contains(LogoutStr)) if (!response.Content.Contains(LogoutStr))
{ {
//Cookie appears to expire after a period of time or logging in to the site via browser //Cookie appears to expire after a period of time or logging in to the site via browser
await DoLogin(); await DoLogin();
@ -117,7 +117,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var rows = dom.QuerySelectorAll(".torrents tr.torrent, .torrents tr.torrent_alt"); var rows = dom.QuerySelectorAll(".torrents tr.torrent, .torrents tr.torrent_alt");
ICollection<int> currentCategories = new List<int> {TorznabCatType.TVAnime.ID}; ICollection<int> currentCategories = new List<int> {TorznabCatType.TVAnime.ID};
@ -207,7 +207,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
@ -248,7 +248,7 @@ namespace Jackett.Common.Indexers
{ {
var downloadPage = await RequestStringWithCookies(link.ToString()); var downloadPage = await RequestStringWithCookies(link.ToString());
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(downloadPage.ContentString); var dom = parser.ParseDocument(downloadPage.Content);
var downloadLink = dom.QuerySelectorAll(".download_link").First().GetAttribute("href"); var downloadLink = dom.QuerySelectorAll(".download_link").First().GetAttribute("href");
if (string.IsNullOrWhiteSpace(downloadLink)) if (string.IsNullOrWhiteSpace(downloadLink))

View File

@ -578,7 +578,7 @@ namespace Jackett.Common.Indexers
throw new Exception("Request to " + response.Request.Url + " failed (Error " + response.Status + ") - The tracker seems to be down."); throw new Exception("Request to " + response.Request.Url + " failed (Error " + response.Status + ") - The tracker seems to be down.");
} }
if (response.Status == System.Net.HttpStatusCode.Forbidden && response.ContentString.Contains("<span data-translate=\"complete_sec_check\">Please complete the security check to access</span>")) if (response.Status == System.Net.HttpStatusCode.Forbidden && response.Content.Contains("<span data-translate=\"complete_sec_check\">Please complete the security check to access</span>"))
{ {
throw new Exception("Request to " + response.Request.Url + " failed (Error " + response.Status + ") - The page is protected by an Cloudflare reCaptcha. The page is in aggressive DDoS mitigation mode or your IP might be blacklisted (e.g. in case of shared VPN IPs). There's no easy way of making it usable with Jackett."); throw new Exception("Request to " + response.Request.Url + " failed (Error " + response.Status + ") - The page is protected by an Cloudflare reCaptcha. The page is in aggressive DDoS mitigation mode or your IP might be blacklisted (e.g. in case of shared VPN IPs). There's no easy way of making it usable with Jackett.");
} }

View File

@ -97,10 +97,10 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("logout.php"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector("#login_error").Text().Trim(); var errorMessage = dom.QuerySelector("#login_error").Text().Trim();
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -130,7 +130,7 @@ namespace Jackett.Common.Indexers
searchUrl += "?" + queryCollection.GetQueryString(); searchUrl += "?" + queryCollection.GetQueryString();
var response = await RequestStringWithCookiesAndRetry(searchUrl, null, BrowseUrl); var response = await RequestStringWithCookiesAndRetry(searchUrl, null, BrowseUrl);
var results = response.ContentString; var results = response.Content;
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();

View File

@ -67,7 +67,7 @@ namespace Jackett.Common.Indexers
if (loginPage.IsRedirect) if (loginPage.IsRedirect)
return result; // already logged in return result; // already logged in
var parser = new HtmlParser(); var parser = new HtmlParser();
var cq = parser.ParseDocument(loginPage.ContentString); var cq = parser.ParseDocument(loginPage.Content);
var recaptchaSiteKey = cq.QuerySelector(".g-recaptcha")?.GetAttribute("data-sitekey"); var recaptchaSiteKey = cq.QuerySelector(".g-recaptcha")?.GetAttribute("data-sitekey");
result.CookieHeader.Value = loginPage.Cookies; result.CookieHeader.Value = loginPage.Cookies;
result.Captcha.SiteKey = recaptchaSiteKey; result.Captcha.SiteKey = recaptchaSiteKey;
@ -105,10 +105,10 @@ namespace Jackett.Common.Indexers
} }
var response = await RequestLoginAndFollowRedirect(TakeLoginUrl, pairs, null, true, referer: SiteLink); var response = await RequestLoginAndFollowRedirect(TakeLoginUrl, pairs, null, true, referer: SiteLink);
await ConfigureIfOK(response.Cookies, response.ContentString?.Contains("logout.php") == true, () => await ConfigureIfOK(response.Cookies, response.Content?.Contains("logout.php") == true, () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var errorMessage = dom.QuerySelector("table.detail td.text").FirstChild.TextContent.Trim(); var errorMessage = dom.QuerySelector("table.detail td.text").FirstChild.TextContent.Trim();
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -147,7 +147,7 @@ namespace Jackett.Common.Indexers
foreach (var result in results) foreach (var result in results)
try try
{ {
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
foreach (var child in dom.QuerySelectorAll("#needseed")) foreach (var child in dom.QuerySelectorAll("#needseed"))
child.Remove(); child.Remove();
var table = dom.QuerySelector("table[align=center] + br + table > tbody"); var table = dom.QuerySelector("table[align=center] + br + table > tbody");
@ -206,7 +206,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(result.ContentString, ex); OnParseError(result.Content, ex);
} }
return releases; return releases;

View File

@ -118,7 +118,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var btnResponse = JsonConvert.DeserializeObject<BTNRPCResponse>(response.ContentString); var btnResponse = JsonConvert.DeserializeObject<BTNRPCResponse>(response.Content);
if (btnResponse?.Result?.Torrents != null) if (btnResponse?.Result?.Torrents != null)
{ {
@ -177,7 +177,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
} }

View File

@ -464,7 +464,7 @@ namespace Jackett.Common.Indexers
return true; // no error return true; // no error
var ResultParser = new HtmlParser(); var ResultParser = new HtmlParser();
var ResultDocument = ResultParser.ParseDocument(loginResult.ContentString); var ResultDocument = ResultParser.ParseDocument(loginResult.Content);
foreach (var error in errorBlocks) foreach (var error in errorBlocks)
{ {
var selection = ResultDocument.QuerySelector(error.Selector); var selection = ResultDocument.QuerySelector(error.Selector);
@ -540,11 +540,11 @@ namespace Jackett.Common.Indexers
// request real login page again // request real login page again
landingResult = await RequestStringWithCookies(LoginUrl, null, SiteLink); landingResult = await RequestStringWithCookies(LoginUrl, null, SiteLink);
var htmlParser = new HtmlParser(); var htmlParser = new HtmlParser();
landingResultDocument = htmlParser.ParseDocument(landingResult.ContentString); landingResultDocument = htmlParser.ParseDocument(landingResult.Content);
} }
else else
{ {
throw new ExceptionWithConfigData(string.Format("Login failed: Cloudflare clearance failed using cookies {0}: {1}", CookieHeader, ClearanceResult.ContentString), configData); throw new ExceptionWithConfigData(string.Format("Login failed: Cloudflare clearance failed using cookies {0}: {1}", CookieHeader, ClearanceResult.Content), configData);
} }
} }
else else
@ -655,7 +655,7 @@ namespace Jackett.Common.Indexers
{ {
var captchaUrl = resolvePath("simpleCaptcha.php?numImages=1"); var captchaUrl = resolvePath("simpleCaptcha.php?numImages=1");
var simpleCaptchaResult = await RequestStringWithCookies(captchaUrl.ToString(), null, LoginUrl); var simpleCaptchaResult = await RequestStringWithCookies(captchaUrl.ToString(), null, LoginUrl);
var simpleCaptchaJSON = JObject.Parse(simpleCaptchaResult.ContentString); var simpleCaptchaJSON = JObject.Parse(simpleCaptchaResult.Content);
var captchaSelection = simpleCaptchaJSON["images"][0]["hash"].ToString(); var captchaSelection = simpleCaptchaJSON["images"][0]["hash"].ToString();
pairs["captchaSelection"] = captchaSelection; pairs["captchaSelection"] = captchaSelection;
pairs["submitme"] = "X"; pairs["submitme"] = "X";
@ -818,7 +818,7 @@ namespace Jackett.Common.Indexers
if (Login.Test.Selector != null) if (Login.Test.Selector != null)
{ {
var testResultParser = new HtmlParser(); var testResultParser = new HtmlParser();
var testResultDocument = testResultParser.ParseDocument(testResult.ContentString); var testResultDocument = testResultParser.ParseDocument(testResult.Content);
var selection = testResultDocument.QuerySelectorAll(Login.Test.Selector); var selection = testResultDocument.QuerySelectorAll(Login.Test.Selector);
if (selection.Length == 0) if (selection.Length == 0)
{ {
@ -891,7 +891,7 @@ namespace Jackett.Common.Indexers
landingResult = await RequestStringWithCookies(LoginUrl.AbsoluteUri, null, SiteLink); landingResult = await RequestStringWithCookies(LoginUrl.AbsoluteUri, null, SiteLink);
var htmlParser = new HtmlParser(); var htmlParser = new HtmlParser();
landingResultDocument = htmlParser.ParseDocument(landingResult.ContentString); landingResultDocument = htmlParser.ParseDocument(landingResult.Content);
var hasCaptcha = false; var hasCaptcha = false;
@ -1353,7 +1353,7 @@ namespace Jackett.Common.Indexers
if (response.IsRedirect && SearchPath.Followredirect) if (response.IsRedirect && SearchPath.Followredirect)
await FollowIfRedirect(response); await FollowIfRedirect(response);
var results = response.ContentString; var results = response.Content;
try try
@ -1378,7 +1378,7 @@ namespace Jackett.Common.Indexers
if (response.IsRedirect && SearchPath.Followredirect) if (response.IsRedirect && SearchPath.Followredirect)
await FollowIfRedirect(response); await FollowIfRedirect(response);
results = response.ContentString; results = response.Content;
SearchResultDocument = SearchResultParser.ParseDocument(results); SearchResultDocument = SearchResultParser.ParseDocument(results);
} }
@ -1801,7 +1801,7 @@ namespace Jackett.Common.Indexers
var response = await RequestStringWithCookies(link.ToString()); var response = await RequestStringWithCookies(link.ToString());
if (response.IsRedirect) if (response.IsRedirect)
response = await RequestStringWithCookies(response.RedirectingTo); response = await RequestStringWithCookies(response.RedirectingTo);
var results = response.ContentString; var results = response.Content;
var searchResultParser = new HtmlParser(); var searchResultParser = new HtmlParser();
var searchResultDocument = searchResultParser.ParseDocument(results); var searchResultDocument = searchResultParser.ParseDocument(results);
var downloadElement = searchResultDocument.QuerySelector(selector); var downloadElement = searchResultDocument.QuerySelector(selector);

View File

@ -125,18 +125,18 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var preotectedLink = dom.QuerySelector("a[service=BitTorrent]").GetAttribute("href"); var preotectedLink = dom.QuerySelector("a[service=BitTorrent]").GetAttribute("href");
preotectedLink = SiteLink + preotectedLink.TrimStart('/'); preotectedLink = SiteLink + preotectedLink.TrimStart('/');
results = await RequestStringWithCookies(preotectedLink); results = await RequestStringWithCookies(preotectedLink);
dom = parser.ParseDocument(results.ContentString); dom = parser.ParseDocument(results.Content);
var magnetUrl = dom.QuerySelector("a[href^=magnet]").GetAttribute("href"); var magnetUrl = dom.QuerySelector("a[href^=magnet]").GetAttribute("href");
return await base.Download(new Uri(magnetUrl)); return await base.Download(new Uri(magnetUrl));
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return null; return null;
@ -149,7 +149,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var rows = dom.QuerySelectorAll("div.home_post_cont"); var rows = dom.QuerySelectorAll("div.home_post_cont");
foreach (var row in rows) foreach (var row in rows)
@ -189,7 +189,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -111,7 +111,7 @@ namespace Jackett.Common.Indexers
{ {
try try
{ {
var json = JsonConvert.DeserializeObject<dynamic>(result.ContentString); var json = JsonConvert.DeserializeObject<dynamic>(result.Content);
switch (json) switch (json)
{ {
@ -124,7 +124,7 @@ namespace Jackett.Common.Indexers
catch (Exception e) catch (Exception e)
{ {
logger.Error("checkResponse() Error: ", e.Message); logger.Error("checkResponse() Error: ", e.Message);
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
} }
} }

View File

@ -141,7 +141,7 @@ namespace Jackett.Common.Indexers
try try
{ {
//var json = JArray.Parse(results.Content); //var json = JArray.Parse(results.Content);
dynamic json = JsonConvert.DeserializeObject<dynamic>(results.ContentString); dynamic json = JsonConvert.DeserializeObject<dynamic>(results.Content);
foreach (var row in json ?? System.Linq.Enumerable.Empty<dynamic>()) foreach (var row in json ?? System.Linq.Enumerable.Empty<dynamic>())
{ {
var release = new ReleaseInfo(); var release = new ReleaseInfo();
@ -215,7 +215,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -95,7 +95,7 @@ namespace Jackett.Common.Indexers
{ {
var loginPage = await RequestStringWithCookies(LoginUrl, configData.CookieHeader.Value); var loginPage = await RequestStringWithCookies(LoginUrl, configData.CookieHeader.Value);
var parser = new HtmlParser(); var parser = new HtmlParser();
var cq = parser.ParseDocument(loginPage.ContentString); var cq = parser.ParseDocument(loginPage.Content);
var recaptchaSiteKey = cq.QuerySelector(".g-recaptcha")?.GetAttribute("data-sitekey"); var recaptchaSiteKey = cq.QuerySelector(".g-recaptcha")?.GetAttribute("data-sitekey");
if (recaptchaSiteKey != null) if (recaptchaSiteKey != null)
{ {
@ -151,10 +151,10 @@ namespace Jackett.Common.Indexers
var result = await RequestLoginAndFollowRedirect(AjaxLoginUrl, pairs, configData.CookieHeader.Value, true, SiteLink, LoginUrl); var result = await RequestLoginAndFollowRedirect(AjaxLoginUrl, pairs, configData.CookieHeader.Value, true, SiteLink, LoginUrl);
await ConfigureIfOK(result.Cookies, result.ContentString.Contains("logout.php"), () => await ConfigureIfOK(result.Cookies, result.Content.Contains("logout.php"), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var errorMessage = parser.ParseDocument(result.ContentString); var errorMessage = parser.ParseDocument(result.Content);
throw new ExceptionWithConfigData(errorMessage.Text(), configData); throw new ExceptionWithConfigData(errorMessage.Text(), configData);
}); });
@ -190,11 +190,11 @@ namespace Jackett.Common.Indexers
} }
try try
{ {
releases.AddRange(contentToReleaseInfos(query, results.ContentString)); releases.AddRange(contentToReleaseInfos(query, results.Content));
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -103,12 +103,12 @@ namespace Jackett.Common.Indexers
var result = await RequestStringWithCookies(url); var result = await RequestStringWithCookies(url);
if (result.Status != HttpStatusCode.OK) if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
try try
{ {
var searchResultParser = new HtmlParser(); var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString); var doc = searchResultParser.ParseDocument(result.Content);
var table = doc.QuerySelector("table.table"); var table = doc.QuerySelector("table.table");
if (table == null) if (table == null)
@ -136,7 +136,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(result.ContentString, ex); OnParseError(result.Content, ex);
} }
page++; // update page number page++; // update page number
@ -156,10 +156,10 @@ namespace Jackett.Common.Indexers
var result = await RequestStringWithCookies(downloadUrl); var result = await RequestStringWithCookies(downloadUrl);
if (result.Status != HttpStatusCode.OK) if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
var searchResultParser = new HtmlParser(); var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString); var doc = searchResultParser.ParseDocument(result.Content);
downloadUrl = GetDownloadLink(doc); downloadUrl = GetDownloadLink(doc);
} }
var content = await base.Download(new Uri(downloadUrl)); var content = await base.Download(new Uri(downloadUrl));
@ -208,10 +208,10 @@ namespace Jackett.Common.Indexers
var result = await RequestStringWithCookies(commentsLink); var result = await RequestStringWithCookies(commentsLink);
if (result.Status != HttpStatusCode.OK) if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
var searchResultParser = new HtmlParser(); var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString); var doc = searchResultParser.ParseDocument(result.Content);
var tables = doc.QuerySelectorAll("table.table"); var tables = doc.QuerySelectorAll("table.table");
foreach (var table in tables) foreach (var table in tables)

View File

@ -155,7 +155,7 @@ namespace Jackett.Common.Indexers
await ConfigureIfOK(result.Cookies, result.Cookies != null, () => await ConfigureIfOK(result.Cookies, result.Cookies != null, () =>
{ {
var errorMessage = result.ContentString; var errorMessage = result.Content;
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -187,7 +187,7 @@ namespace Jackett.Common.Indexers
var lastDate = DateTime.Now; var lastDate = DateTime.Now;
var parser = new HtmlParser(); var parser = new HtmlParser();
var doc = parser.ParseDocument(results.ContentString); var doc = parser.ParseDocument(results.Content);
var rows = doc.QuerySelectorAll("table[id='sortabletable'] > tbody > tr"); var rows = doc.QuerySelectorAll("table[id='sortabletable'] > tbody > tr");
foreach (var row in rows.Skip(1)) foreach (var row in rows.Skip(1))
@ -281,7 +281,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -89,7 +89,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var json = JsonConvert.DeserializeObject<dynamic>(result.ContentString); var json = JsonConvert.DeserializeObject<dynamic>(result.Content);
var parser = new HtmlParser(); var parser = new HtmlParser();
var doc = parser.ParseDocument((string)json["contenido"]); var doc = parser.ParseDocument((string)json["contenido"]);
@ -140,7 +140,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(result.ContentString, ex); OnParseError(result.Content, ex);
} }
} }
@ -155,13 +155,13 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var doc = parser.ParseDocument(result.ContentString); var doc = parser.ParseDocument(result.Content);
var magnetLink = doc.QuerySelector("a[id=en_desc]").GetAttribute("href"); var magnetLink = doc.QuerySelector("a[id=en_desc]").GetAttribute("href");
return Encoding.UTF8.GetBytes(magnetLink); return Encoding.UTF8.GetBytes(magnetLink);
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(result.ContentString, ex); OnParseError(result.Content, ex);
} }
return null; return null;
} }

View File

@ -57,7 +57,7 @@ namespace Jackett.Common.Indexers.Feeds
}; };
var result = await webclient.GetString(request); var result = await webclient.GetString(request);
var results = ParseFeedForResults(result.ContentString); var results = ParseFeedForResults(result.Content);
return results; return results;
} }

View File

@ -189,7 +189,7 @@ namespace Jackett.Common.Indexers
{"Authorization", "Basic " + auth} {"Authorization", "Basic " + auth}
}; };
var response = await RequestStringWithCookies(searchUrl, headers: headers); var response = await RequestStringWithCookies(searchUrl, headers: headers);
return response.ContentString; return response.Content;
} }
catch (Exception inner) catch (Exception inner)
{ {

View File

@ -67,10 +67,10 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl);
await ConfigureIfOK(result.Cookies, result.ContentString?.Contains("logout.php") == true, () => await ConfigureIfOK(result.Cookies, result.Content?.Contains("logout.php") == true, () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector("td.mf_content").TextContent; var errorMessage = dom.QuerySelector("td.mf_content").TextContent;
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -108,7 +108,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var rows = dom.QuerySelectorAll("table[cellpadding=2] > tbody > tr:has(td.row3)"); var rows = dom.QuerySelectorAll("table[cellpadding=2] > tbody > tr:has(td.row3)");
foreach (var row in rows) foreach (var row in rows)
{ {
@ -159,7 +159,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -109,7 +109,7 @@ namespace Jackett.Common.Indexers
{ {
var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty); var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty);
var parser = new HtmlParser(); var parser = new HtmlParser();
var cq = parser.ParseDocument(loginPage.ContentString); var cq = parser.ParseDocument(loginPage.Content);
var captcha = cq.QuerySelector(".g-recaptcha"); // invisible recaptcha var captcha = cq.QuerySelector(".g-recaptcha"); // invisible recaptcha
if (captcha != null) if (captcha != null)
{ {
@ -165,7 +165,7 @@ namespace Jackett.Common.Indexers
{"cookieuser", "1"} {"cookieuser", "1"}
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, null, LoginUrl); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, null, LoginUrl);
await ConfigureIfOK(result.Cookies, result.ContentString?.Contains("images/loading.gif") == true, await ConfigureIfOK(result.Cookies, result.Content?.Contains("images/loading.gif") == true,
() => throw new ExceptionWithConfigData("Couldn't login", configData)); () => throw new ExceptionWithConfigData("Couldn't login", configData));
Thread.Sleep(2); Thread.Sleep(2);
return IndexerConfigurationStatus.RequiresTesting; return IndexerConfigurationStatus.RequiresTesting;
@ -208,7 +208,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(data.ContentString); var dom = parser.ParseDocument(data.Content);
var rows = dom.QuerySelectorAll("tr.box_torrent"); var rows = dom.QuerySelectorAll("tr.box_torrent");
foreach (var row in rows) foreach (var row in rows)
{ {
@ -254,7 +254,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(data.ContentString, ex); OnParseError(data.Content, ex);
} }
return releases; return releases;
@ -278,7 +278,7 @@ namespace Jackett.Common.Indexers
}; };
var results = await RequestStringWithCookies(site.ToString()); var results = await RequestStringWithCookies(site.ToString());
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var rows = dom.QuerySelectorAll("#listtable > tbody > tr"); var rows = dom.QuerySelectorAll("#listtable > tbody > tr");
foreach (var row in rows.Skip(1)) foreach (var row in rows.Skip(1))
{ {
@ -288,7 +288,7 @@ namespace Jackett.Common.Indexers
var address = link.GetAttribute("href"); var address = link.GetAttribute("href");
if (string.IsNullOrEmpty(address)) if (string.IsNullOrEmpty(address))
continue; continue;
var realDom = parser.ParseDocument(results.ContentString); var realDom = parser.ParseDocument(results.Content);
return realDom.QuerySelector("#content:nth-child(1) > h1").TextContent; return realDom.QuerySelector("#content:nth-child(1) > h1").TextContent;
} }
} }

View File

@ -236,7 +236,7 @@ namespace Jackett.Common.Indexers
var RowsSelector = ".torrent_table > tbody > tr"; var RowsSelector = ".torrent_table > tbody > tr";
var SearchResultParser = new HtmlParser(); var SearchResultParser = new HtmlParser();
var SearchResultDocument = SearchResultParser.ParseDocument(results.ContentString); var SearchResultDocument = SearchResultParser.ParseDocument(results.Content);
var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector); var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector);
var stickyGroup = false; var stickyGroup = false;
@ -321,7 +321,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -91,10 +91,10 @@ namespace Jackett.Common.Indexers
var loginPage = await RequestStringWithCookies(SiteLink, string.Empty); var loginPage = await RequestStringWithCookies(SiteLink, string.Empty);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, SiteLink, SiteLink); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, SiteLink, SiteLink);
await ConfigureIfOK(result.Cookies, result.ContentString?.Contains("logout.php") == true, () => await ConfigureIfOK(result.Cookies, result.Content?.Contains("logout.php") == true, () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var messageEl = dom.QuerySelector("body > div"); var messageEl = dom.QuerySelector("body > div");
var errorMessage = messageEl.TextContent.Trim(); var errorMessage = messageEl.TextContent.Trim();
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
@ -131,7 +131,7 @@ namespace Jackett.Common.Indexers
response = await RequestStringWithCookiesAndRetry(searchUrl, null, BrowseUrl); response = await RequestStringWithCookiesAndRetry(searchUrl, null, BrowseUrl);
} }
var results = response.ContentString; var results = response.Content;
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();

View File

@ -187,11 +187,11 @@ namespace Jackett.Common.Indexers
try try
{ {
json = JObject.Parse(response.ContentString); json = JObject.Parse(response.Content);
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new Exception("Error while parsing json: " + response.ContentString, ex); throw new Exception("Error while parsing json: " + response.Content, ex);
} }
if ((int)json["status"] != 0) if ((int)json["status"] != 0)

View File

@ -87,11 +87,11 @@ namespace Jackett.Common.Indexers
// Send Post // Send Post
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, referer: LoginUrl); var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, referer: LoginUrl);
await ConfigureIfOK(response.Cookies, response.ContentString?.Contains("logout.php") == true, () => await ConfigureIfOK(response.Cookies, response.Content?.Contains("logout.php") == true, () =>
{ {
var errorStr = "You have {0} remaining login attempts"; var errorStr = "You have {0} remaining login attempts";
var remainingAttemptSpan = new Regex(string.Format(errorStr, "(.*?)")) var remainingAttemptSpan = new Regex(string.Format(errorStr, "(.*?)"))
.Match(loginPage.ContentString).Groups[1].ToString(); .Match(loginPage.Content).Groups[1].ToString();
var attempts = Regex.Replace(remainingAttemptSpan, "<.*?>", string.Empty); var attempts = Regex.Replace(remainingAttemptSpan, "<.*?>", string.Empty);
var errorMessage = string.Format(errorStr, attempts); var errorMessage = string.Format(errorStr, attempts);
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
@ -124,7 +124,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var resultParser = new HtmlParser(); var resultParser = new HtmlParser();
var searchResultDocument = resultParser.ParseDocument(response.ContentString); var searchResultDocument = resultParser.ParseDocument(response.Content);
var rows = searchResultDocument.QuerySelectorAll("table.lista > tbody > tr"); var rows = searchResultDocument.QuerySelectorAll("table.lista > tbody > tr");
foreach (var row in rows) foreach (var row in rows)
@ -177,7 +177,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -114,7 +114,7 @@ namespace Jackett.Common.Indexers
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, null, LoginUrl); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, null, LoginUrl);
await ConfigureIfOK( await ConfigureIfOK(
result.Cookies, result.ContentString?.Contains("If your browser doesn't have javascript enabled") == true, result.Cookies, result.Content?.Contains("If your browser doesn't have javascript enabled") == true,
() => throw new ExceptionWithConfigData("Couldn't login", configData)); () => throw new ExceptionWithConfigData("Couldn't login", configData));
return IndexerConfigurationStatus.RequiresTesting; return IndexerConfigurationStatus.RequiresTesting;
} }
@ -138,7 +138,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var userInfo = dom.QuerySelector("table.navus tr"); var userInfo = dom.QuerySelector("table.navus tr");
var userRank = userInfo.Children[1].TextContent.Replace("Rank:", string.Empty).Trim(); var userRank = userInfo.Children[1].TextContent.Replace("Rank:", string.Empty).Trim();
@ -234,7 +234,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -84,10 +84,10 @@ namespace Jackett.Common.Indexers
CookieHeader = string.Empty; CookieHeader = string.Empty;
var result = await RequestLoginAndFollowRedirect(LoginPostUrl, pairs, CookieHeader, true, null, SiteLink); var result = await RequestLoginAndFollowRedirect(LoginPostUrl, pairs, CookieHeader, true, null, SiteLink);
await ConfigureIfOK( await ConfigureIfOK(
result.Cookies, result.ContentString?.Contains("OK") == true, () => result.Cookies, result.Content?.Contains("OK") == true, () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.TextContent.Trim(); var errorMessage = dom.TextContent.Trim();
errorMessage += " attempts left. Please check your credentials."; errorMessage += " attempts left. Please check your credentials.";
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
@ -109,7 +109,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var rows = dom.QuerySelectorAll(".browse > div > div"); var rows = dom.QuerySelectorAll(".browse > div > div");
foreach (var row in rows) foreach (var row in rows)
{ {
@ -150,7 +150,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -76,11 +76,11 @@ namespace Jackett.Common.Indexers
try try
{ {
if (response.ContentString.Contains("Nothing was found")) if (response.Content.Contains("Nothing was found"))
return releases; return releases;
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var resultLinks = dom.QuerySelectorAll("ul > li > a"); var resultLinks = dom.QuerySelectorAll("ul > li > a");
var uniqueShowLinks = new HashSet<string>(); var uniqueShowLinks = new HashSet<string>();
foreach (var resultLink in resultLinks) foreach (var resultLink in resultLinks)
@ -97,7 +97,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
@ -116,11 +116,11 @@ namespace Jackett.Common.Indexers
try try
{ {
if (response.ContentString.Contains("Nothing was found")) if (response.Content.Contains("Nothing was found"))
return releases; return releases;
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var latestresults = dom.QuerySelectorAll("ul > li > a"); var latestresults = dom.QuerySelectorAll("ul > li > a");
foreach (var resultLink in latestresults) foreach (var resultLink in latestresults)
{ {
@ -135,7 +135,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
@ -151,7 +151,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var match = Regex.Match(response.ContentString, "(var hs_showid = )([0-9]*)(;)", RegexOptions.IgnoreCase); var match = Regex.Match(response.Content, "(var hs_showid = )([0-9]*)(;)", RegexOptions.IgnoreCase);
if (match.Success == false) if (match.Success == false)
return releases; return releases;
@ -169,7 +169,7 @@ namespace Jackett.Common.Indexers
while (true) while (true)
{ {
var showApiResponse = await RequestStringWithCookiesAndRetry(apiUrl + "&nextid=" + nextId); var showApiResponse = await RequestStringWithCookiesAndRetry(apiUrl + "&nextid=" + nextId);
var showApiDom = parser.ParseDocument(showApiResponse.ContentString); var showApiDom = parser.ParseDocument(showApiResponse.Content);
var releaseRowResults = showApiDom.QuerySelectorAll("div.rls-info-container"); var releaseRowResults = showApiDom.QuerySelectorAll("div.rls-info-container");
rows.AddRange(releaseRowResults); rows.AddRange(releaseRowResults);
nextId++; nextId++;
@ -215,7 +215,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
} }

View File

@ -180,7 +180,7 @@ namespace Jackett.Common.Indexers
var searchUrl = SearchUrl + "?" + qc.GetQueryString(); var searchUrl = SearchUrl + "?" + qc.GetQueryString();
var response = await RequestStringWithCookiesAndRetry(searchUrl, null, SearchUrl); var response = await RequestStringWithCookiesAndRetry(searchUrl, null, SearchUrl);
var results = response.ContentString; var results = response.Content;
if (results == null || !results.Contains("/lout.php")) if (results == null || !results.Contains("/lout.php"))
throw new Exception("The user is not logged in. It is possible that the cookie has expired or you made a mistake when copying it. Please check the settings."); throw new Exception("The user is not logged in. It is possible that the cookie has expired or you made a mistake when copying it. Please check the settings.");

View File

@ -104,9 +104,9 @@ namespace Jackett.Common.Indexers
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl); var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl);
await ConfigureIfOK(response.Cookies, response.ContentString.Contains("You have successfully logged in"), () => await ConfigureIfOK(response.Cookies, response.Content.Contains("You have successfully logged in"), () =>
{ {
var errorMessage = response.ContentString; var errorMessage = response.Content;
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -124,7 +124,7 @@ namespace Jackett.Common.Indexers
var results = await RequestStringWithCookiesAndRetry(searchUrl); var results = await RequestStringWithCookiesAndRetry(searchUrl);
// Occasionally the cookies become invalid, login again if that happens // Occasionally the cookies become invalid, login again if that happens
if (results.ContentString.Contains("You do not have permission to access this page.")) if (results.Content.Contains("You do not have permission to access this page."))
{ {
await ApplyConfiguration(null); await ApplyConfiguration(null);
results = await RequestStringWithCookiesAndRetry(searchUrl); results = await RequestStringWithCookiesAndRetry(searchUrl);
@ -133,7 +133,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var rows = dom.QuerySelectorAll("#sortabletable tr:has(a[href*=\"details.php?id=\"])"); var rows = dom.QuerySelectorAll("#sortabletable tr:has(a[href*=\"details.php?id=\"])");
foreach (var row in rows) foreach (var row in rows)
@ -192,7 +192,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -156,7 +156,7 @@ namespace Jackett.Common.Indexers
{ {
if (result.Status != HttpStatusCode.OK) if (result.Status != HttpStatusCode.OK)
throw new Exception("Response code error. HTTP code: " + result.Status); throw new Exception("Response code error. HTTP code: " + result.Status);
var json = JsonConvert.DeserializeObject<dynamic>(result.ContentString); var json = JsonConvert.DeserializeObject<dynamic>(result.Content);
if (!(json is JObject) || !(json["response"] is JObject) || !(json["response"]["docs"] is JArray)) if (!(json is JObject) || !(json["response"] is JObject) || !(json["response"]["docs"] is JArray))
throw new Exception("Response format error"); throw new Exception("Response format error");
return (JArray)json["response"]["docs"]; return (JArray)json["response"]["docs"];
@ -164,7 +164,7 @@ namespace Jackett.Common.Indexers
catch (Exception e) catch (Exception e)
{ {
logger.Error("ParseResponse Error: ", e.Message); logger.Error("ParseResponse Error: ", e.Message);
throw new ExceptionWithConfigData(result.ContentString, ConfigData); throw new ExceptionWithConfigData(result.Content, ConfigData);
} }
} }

View File

@ -99,11 +99,11 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, SearchUrl, LandingUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, SearchUrl, LandingUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString?.Contains("logout.php") == true, await ConfigureIfOK(result.Cookies, result.Content?.Contains("logout.php") == true,
() => () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var warningNode = dom.QuerySelector("#loginform > .warning"); var warningNode = dom.QuerySelector("#loginform > .warning");
var errorMessage = warningNode?.TextContent.Trim().Replace("\n\t", " "); var errorMessage = warningNode?.TextContent.Trim().Replace("\n\t", " ");
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
@ -166,7 +166,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(searchPage.ContentString); var dom = parser.ParseDocument(searchPage.Content);
var albumRows = dom.QuerySelectorAll("table#torrent_table > tbody > tr:has(strong > a[href*=\"torrents.php?id=\"])"); var albumRows = dom.QuerySelectorAll("table#torrent_table > tbody > tr:has(strong > a[href*=\"torrents.php?id=\"])");
foreach (var row in albumRows) foreach (var row in albumRows)
{ {
@ -290,7 +290,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(searchPage.ContentString, ex); OnParseError(searchPage.Content, ex);
} }
return releases; return releases;

View File

@ -115,7 +115,7 @@ namespace Jackett.Common.Indexers
// looks like after some failed login attempts there's a captcha // looks like after some failed login attempts there's a captcha
var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty); var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty);
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = parser.ParseDocument(loginPage.ContentString); var document = parser.ParseDocument(loginPage.Content);
var qCaptchaImg = document.QuerySelector("img#captcha_pictcha"); var qCaptchaImg = document.QuerySelector("img#captcha_pictcha");
if (qCaptchaImg != null) if (qCaptchaImg != null)
{ {
@ -160,9 +160,9 @@ namespace Jackett.Common.Indexers
} }
var result = await RequestLoginAndFollowRedirect(ApiUrl, data, CookieHeader, true, SiteLink, ApiUrl, true); var result = await RequestLoginAndFollowRedirect(ApiUrl, data, CookieHeader, true, SiteLink, ApiUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("\"success\":true"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("\"success\":true"), () =>
{ {
var errorMessage = result.ContentString; var errorMessage = result.Content;
if (errorMessage.Contains("\"error\":2")) if (errorMessage.Contains("\"error\":2"))
errorMessage = "Captcha is incorrect"; errorMessage = "Captcha is incorrect";
if (errorMessage.Contains("\"error\":3")) if (errorMessage.Contains("\"error\":3"))
@ -184,12 +184,12 @@ namespace Jackett.Common.Indexers
}; };
var response = await PostDataWithCookies(url: ApiUrl, data: data); var response = await PostDataWithCookies(url: ApiUrl, data: data);
logger.Debug("Logout result: " + response.ContentString); logger.Debug("Logout result: " + response.Content);
var isOK = response.Status == System.Net.HttpStatusCode.OK; var isOK = response.Status == System.Net.HttpStatusCode.OK;
if (!isOK) if (!isOK)
{ {
logger.Error("Logout failed with response: " + response.ContentString); logger.Error("Logout failed with response: " + response.Content);
} }
return isOK; return isOK;
@ -215,11 +215,11 @@ namespace Jackett.Common.Indexers
private async Task<WebClientStringResult> RequestStringAndRelogin(string url) private async Task<WebClientStringResult> RequestStringAndRelogin(string url)
{ {
var results = await RequestStringWithCookies(url); var results = await RequestStringWithCookies(url);
if (results.ContentString.Contains("503 Service")) if (results.Content.Contains("503 Service"))
{ {
throw new ExceptionWithConfigData(results.ContentString, configData); throw new ExceptionWithConfigData(results.Content, configData);
} }
else if (results.ContentString.Contains("href=\"/login\"")) else if (results.Content.Contains("href=\"/login\""))
{ {
// Re-login // Re-login
await ApplyConfiguration(null); await ApplyConfiguration(null);
@ -288,7 +288,7 @@ namespace Jackett.Common.Indexers
}; };
logger.Debug("> Searching: " + searchString); logger.Debug("> Searching: " + searchString);
var response = await PostDataWithCookies(url: ApiUrl, data: data); var response = await PostDataWithCookies(url: ApiUrl, data: data);
if (response.ContentString == null) if (response.Content == null)
{ {
logger.Debug("> Empty series response for query: " + searchString); logger.Debug("> Empty series response for query: " + searchString);
continue; continue;
@ -296,7 +296,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var json = JToken.Parse(response.ContentString); var json = JToken.Parse(response.Content);
if (json == null || json.Type == JTokenType.Array) if (json == null || json.Type == JTokenType.Array)
{ {
logger.Debug("> Invalid response for query: " + searchString); logger.Debug("> Invalid response for query: " + searchString);
@ -378,7 +378,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
} }
while (--searchKeywords > 0); while (--searchKeywords > 0);
@ -399,7 +399,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = parser.ParseDocument(results.ContentString); var document = parser.ParseDocument(results.Content);
var rows = document.QuerySelectorAll("div.row"); var rows = document.QuerySelectorAll("div.row");
foreach (var row in rows) foreach (var row in rows)
@ -413,7 +413,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;
@ -428,7 +428,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = parser.ParseDocument(results.ContentString); var document = parser.ParseDocument(results.Content);
var playButton = document.QuerySelector("div.external-btn"); var playButton = document.QuerySelector("div.external-btn");
if (playButton != null && !playButton.ClassList.Contains("inactive")) if (playButton != null && !playButton.ClassList.Contains("inactive"))
@ -460,7 +460,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;
@ -476,7 +476,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = parser.ParseDocument(results.ContentString); var document = parser.ParseDocument(results.Content);
var seasons = document.QuerySelectorAll("div.serie-block"); var seasons = document.QuerySelectorAll("div.serie-block");
var rowSelector = "table.movie-parts-list > tbody > tr"; var rowSelector = "table.movie-parts-list > tbody > tr";
@ -604,7 +604,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;
@ -627,19 +627,19 @@ namespace Jackett.Common.Indexers
// Get redirection page with generated link on it. This link can't be constructed manually as it contains Hash field and hashing algo is unknown. // Get redirection page with generated link on it. This link can't be constructed manually as it contains Hash field and hashing algo is unknown.
var results = await RequestStringWithCookies(url); var results = await RequestStringWithCookies(url);
if (results.ContentString == null) if (results.Content == null)
{ {
throw new ExceptionWithConfigData("Empty response from " + url, configData); throw new ExceptionWithConfigData("Empty response from " + url, configData);
} }
if (results.ContentString == "log in first") if (results.Content == "log in first")
{ {
throw new ExceptionWithConfigData(results.ContentString, configData); throw new ExceptionWithConfigData(results.Content, configData);
} }
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = parser.ParseDocument(results.ContentString); var document = parser.ParseDocument(results.Content);
var meta = document.QuerySelector("meta"); var meta = document.QuerySelector("meta");
var metaContent = meta.GetAttribute("content"); var metaContent = meta.GetAttribute("content");
@ -649,7 +649,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
// Failure path // Failure path
@ -665,7 +665,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = parser.ParseDocument(results.ContentString); var document = parser.ParseDocument(results.Content);
var rows = document.QuerySelectorAll("div.inner-box--item"); var rows = document.QuerySelectorAll("div.inner-box--item");
logger.Debug("> Parsing " + rows.Count().ToString() + " releases"); logger.Debug("> Parsing " + rows.Count().ToString() + " releases");
@ -756,7 +756,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -103,15 +103,15 @@ namespace Jackett.Common.Indexers
// Eg https://www.mejortorrentt.net/peli-descargar-torrent-11995-Harry-Potter-y-la-piedra-filosofal.html // Eg https://www.mejortorrentt.net/peli-descargar-torrent-11995-Harry-Potter-y-la-piedra-filosofal.html
var result = await RequestStringWithCookies(downloadUrl); var result = await RequestStringWithCookies(downloadUrl);
if (result.Status != HttpStatusCode.OK) if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
downloadUrl = SiteLink + dom.QuerySelector("a[href*=\"sec=descargas\"]").GetAttribute("href"); downloadUrl = SiteLink + dom.QuerySelector("a[href*=\"sec=descargas\"]").GetAttribute("href");
// Eg https://www.mejortorrentt.net/secciones.php?sec=descargas&ap=contar&tabla=peliculas&id=11995&link_bajar=1 // Eg https://www.mejortorrentt.net/secciones.php?sec=descargas&ap=contar&tabla=peliculas&id=11995&link_bajar=1
result = await RequestStringWithCookies(downloadUrl); result = await RequestStringWithCookies(downloadUrl);
if (result.Status != HttpStatusCode.OK) if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
dom = parser.ParseDocument(result.ContentString); dom = parser.ParseDocument(result.Content);
downloadUrl = SiteLink + dom.QuerySelector("a[href^=\"/tor/\"]").GetAttribute("href"); downloadUrl = SiteLink + dom.QuerySelector("a[href^=\"/tor/\"]").GetAttribute("href");
// Eg https://www.mejortorrentt.net/tor/peliculas/Harry_Potter_1_y_la_Piedra_Filosofal_MicroHD_1080p.torrent // Eg https://www.mejortorrentt.net/tor/peliculas/Harry_Potter_1_y_la_Piedra_Filosofal_MicroHD_1080p.torrent
@ -125,11 +125,11 @@ namespace Jackett.Common.Indexers
var url = SiteLink + NewTorrentsUrl; var url = SiteLink + NewTorrentsUrl;
var result = await RequestStringWithCookies(url); var result = await RequestStringWithCookies(url);
if (result.Status != HttpStatusCode.OK) if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
try try
{ {
var searchResultParser = new HtmlParser(); var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString); var doc = searchResultParser.ParseDocument(result.Content);
var container = doc.QuerySelector("#main_table_center_center1 table div"); var container = doc.QuerySelector("#main_table_center_center1 table div");
var parsedCommentsLink = new List<string>(); var parsedCommentsLink = new List<string>();
@ -167,7 +167,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(result.ContentString, ex); OnParseError(result.Content, ex);
} }
return releases; return releases;
@ -182,12 +182,12 @@ namespace Jackett.Common.Indexers
var url = SiteLink + SearchUrl + "?" + qc.GetQueryString(); var url = SiteLink + SearchUrl + "?" + qc.GetQueryString();
var result = await RequestStringWithCookies(url); var result = await RequestStringWithCookies(url);
if (result.Status != HttpStatusCode.OK) if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
try try
{ {
var searchResultParser = new HtmlParser(); var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString); var doc = searchResultParser.ParseDocument(result.Content);
var table = doc.QuerySelector("#main_table_center_center2 table table"); var table = doc.QuerySelector("#main_table_center_center2 table table");
// check the search term is valid // check the search term is valid
@ -214,7 +214,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(result.ContentString, ex); OnParseError(result.Content, ex);
} }
return releases; return releases;
@ -261,10 +261,10 @@ namespace Jackett.Common.Indexers
{ {
var result = await RequestStringWithCookies(commentsLink); var result = await RequestStringWithCookies(commentsLink);
if (result.Status != HttpStatusCode.OK) if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
var searchResultParser = new HtmlParser(); var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString); var doc = searchResultParser.ParseDocument(result.Content);
var rows = doc.QuerySelectorAll("#main_table_center_center1 table table table tr"); var rows = doc.QuerySelectorAll("#main_table_center_center1 table table table tr");
foreach (var row in rows) foreach (var row in rows)

View File

@ -93,7 +93,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var response = JsonConvert.DeserializeObject<MilkieResponse>(jsonResponse.ContentString); var response = JsonConvert.DeserializeObject<MilkieResponse>(jsonResponse.Content);
var dlQueryParams = new NameValueCollection var dlQueryParams = new NameValueCollection
{ {
@ -129,7 +129,7 @@ namespace Jackett.Common.Indexers
} }
catch(Exception ex) catch(Exception ex)
{ {
OnParseError(jsonResponse.ContentString, ex); OnParseError(jsonResponse.Content, ex);
} }
return releases; return releases;

View File

@ -63,13 +63,13 @@ namespace Jackett.Common.Indexers
var preRequest = await RequestStringWithCookiesAndRetry(LoginUrl, string.Empty); var preRequest = await RequestStringWithCookiesAndRetry(LoginUrl, string.Empty);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, preRequest.Cookies, true, SearchUrl, SiteLink); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, preRequest.Cookies, true, SearchUrl, SiteLink);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("status\":\"success\""), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("status\":\"success\""), () =>
{ {
if (result.ContentString.Contains("Your IP address has been banned.")) if (result.Content.Contains("Your IP address has been banned."))
throw new ExceptionWithConfigData("Your IP address has been banned.", ConfigData); throw new ExceptionWithConfigData("Your IP address has been banned.", ConfigData);
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
foreach (var element in dom.QuerySelectorAll("#loginform > table")) foreach (var element in dom.QuerySelectorAll("#loginform > table"))
element.Remove(); element.Remove();
var errorMessage = dom.QuerySelector("#loginform").TextContent.Trim().Replace("\n\t", " "); var errorMessage = dom.QuerySelector("#loginform").TextContent.Trim().Replace("\n\t", " ");
@ -145,7 +145,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = parser.ParseDocument(response.ContentString); var document = parser.ParseDocument(response.Content);
var groups = document.QuerySelectorAll(".torrent_table > tbody > tr.group"); var groups = document.QuerySelectorAll(".torrent_table > tbody > tr.group");
var torrents = document.QuerySelectorAll(".torrent_table > tbody > tr.torrent"); var torrents = document.QuerySelectorAll(".torrent_table > tbody > tr.torrent");
@ -243,7 +243,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
} }

View File

@ -79,10 +79,10 @@ namespace Jackett.Common.Indexers
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.Cookies.Contains("pass=") && !result.Cookies.Contains("deleted"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Cookies.Contains("pass=") && !result.Cookies.Contains("deleted"), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector("div.myFrame-content").InnerHtml; var errorMessage = dom.QuerySelector("div.myFrame-content").InnerHtml;
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -127,7 +127,7 @@ namespace Jackett.Common.Indexers
response = await RequestStringWithCookies(searchUrl); response = await RequestStringWithCookies(searchUrl);
} }
var results = response.ContentString; var results = response.Content;
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();

View File

@ -200,12 +200,12 @@ namespace Jackett.Common.Indexers
urlSearch += $"?{qParams.GetQueryString()}"; urlSearch += $"?{qParams.GetQueryString()}";
var response = await RequestStringWithCookiesAndRetry(urlSearch); var response = await RequestStringWithCookiesAndRetry(urlSearch);
if (response.ContentString.StartsWith("Error")) if (response.Content.StartsWith("Error"))
throw new Exception(response.ContentString); throw new Exception(response.Content);
try try
{ {
var jsonContent = JObject.Parse(response.ContentString); var jsonContent = JObject.Parse(response.Content);
var sitelink = new Uri(SiteLink); var sitelink = new Uri(SiteLink);
var error = jsonContent.Value<string>("error"); var error = jsonContent.Value<string>("error");
@ -281,7 +281,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -113,10 +113,10 @@ namespace Jackett.Common.Indexers
pairs.Add("2factor", configData.TwoFactor.Value); pairs.Add("2factor", configData.TwoFactor.Value);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, referer: SiteLink); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, referer: SiteLink);
await ConfigureIfOK( await ConfigureIfOK(
result.Cookies, result.ContentString?.Contains("profile.php") == true, () => result.Cookies, result.Content?.Contains("profile.php") == true, () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var msgContainer = dom.QuerySelector("#hibauzenet table tbody tr")?.Children[1]; var msgContainer = dom.QuerySelector("#hibauzenet table tbody tr")?.Children[1];
throw new ExceptionWithConfigData(msgContainer?.TextContent ?? "Error while trying to login.", configData); throw new ExceptionWithConfigData(msgContainer?.TextContent ?? "Error while trying to login.", configData);
}); });
@ -168,7 +168,7 @@ namespace Jackett.Common.Indexers
pairs.Add("kivalasztott_tipus[]", string.Join(",", cats)); pairs.Add("kivalasztott_tipus[]", string.Join(",", cats));
var results = await PostDataWithCookiesAndRetry(SearchUrl, pairs.ToEnumerable(true)); var results = await PostDataWithCookiesAndRetry(SearchUrl, pairs.ToEnumerable(true));
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
// find number of torrents / page // find number of torrents / page
var torrentPerPage = dom.QuerySelectorAll(".box_torrent").Length; var torrentPerPage = dom.QuerySelectorAll(".box_torrent").Length;
@ -214,7 +214,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var rows = dom.QuerySelectorAll(".box_torrent").Skip(previouslyParsedOnPage).Take(limit - alreadyFound); var rows = dom.QuerySelectorAll(".box_torrent").Skip(previouslyParsedOnPage).Take(limit - alreadyFound);
var key = ParseUtil.GetArgumentFromQueryString( var key = ParseUtil.GetArgumentFromQueryString(
@ -333,7 +333,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -60,12 +60,12 @@ namespace Jackett.Common.Indexers
CookieHeader = string.Empty; CookieHeader = string.Empty;
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, CookieHeader, true, null, LoginUrl); var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, CookieHeader, true, null, LoginUrl);
await ConfigureIfOK(response.Cookies, response.ContentString != null && response.ContentString.Contains("logout.php"), () => await ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php"), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = parser.ParseDocument(response.ContentString); var document = parser.ParseDocument(response.Content);
var messageEl = document.QuerySelector("form > span[class='warning']"); var messageEl = document.QuerySelector("form > span[class='warning']");
var errorMessage = response.ContentString; var errorMessage = response.Content;
if (messageEl != null) if (messageEl != null)
errorMessage = messageEl.TextContent.Trim(); errorMessage = messageEl.TextContent.Trim();
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
@ -75,14 +75,14 @@ namespace Jackett.Common.Indexers
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query) protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{ {
var loggedInCheck = await RequestStringWithCookies(SearchUrl); var loggedInCheck = await RequestStringWithCookies(SearchUrl);
if (!loggedInCheck.ContentString.Contains("logout.php")) // re-login if (!loggedInCheck.Content.Contains("logout.php")) // re-login
await DoLogin(); await DoLogin();
// #6413 // #6413
var url = $"{SearchUrl}&searchtext={WebUtility.UrlEncode(query.GetQueryString())}"; var url = $"{SearchUrl}&searchtext={WebUtility.UrlEncode(query.GetQueryString())}";
var response = await RequestStringWithCookiesAndRetry(url); var response = await RequestStringWithCookiesAndRetry(url);
var releases = ParseResponse(response.ContentString); var releases = ParseResponse(response.Content);
return releases; return releases;
} }

View File

@ -165,7 +165,7 @@ namespace Jackett.Common.Indexers
{ {
var results = await RequestStringWithCookiesAndRetry(linkParam.AbsoluteUri); var results = await RequestStringWithCookiesAndRetry(linkParam.AbsoluteUri);
var uriLink = ExtractDownloadUri(results.ContentString, linkParam.AbsoluteUri); var uriLink = ExtractDownloadUri(results.Content, linkParam.AbsoluteUri);
if (uriLink == null) if (uriLink == null)
throw new Exception("Download link not found!"); throw new Exception("Download link not found!");
@ -212,10 +212,10 @@ namespace Jackett.Common.Indexers
{ {
var pageUrl = SiteLink + string.Format(_dailyUrl, pg); var pageUrl = SiteLink + string.Format(_dailyUrl, pg);
var results = await RequestStringWithCookiesAndRetry(pageUrl); var results = await RequestStringWithCookiesAndRetry(pageUrl);
if (results == null || string.IsNullOrEmpty(results.ContentString)) if (results == null || string.IsNullOrEmpty(results.Content))
break; break;
var items = ParseDailyContent(results.ContentString); var items = ParseDailyContent(results.Content);
if (items == null || !items.Any()) if (items == null || !items.Any())
break; break;
@ -305,13 +305,13 @@ namespace Jackett.Common.Indexers
// Episodes list // Episodes list
var results = await RequestStringWithCookiesAndRetry(uri.AbsoluteUri); var results = await RequestStringWithCookiesAndRetry(uri.AbsoluteUri);
var seriesEpisodesUrl = ParseSeriesListContent(results.ContentString, seriesName); var seriesEpisodesUrl = ParseSeriesListContent(results.Content, seriesName);
// TV serie list // TV serie list
if (!string.IsNullOrEmpty(seriesEpisodesUrl)) if (!string.IsNullOrEmpty(seriesEpisodesUrl))
{ {
results = await RequestStringWithCookiesAndRetry(seriesEpisodesUrl); results = await RequestStringWithCookiesAndRetry(seriesEpisodesUrl);
var items = ParseEpisodesListContent(results.ContentString); var items = ParseEpisodesListContent(results.Content);
if (items != null && items.Any()) if (items != null && items.Any())
releases.AddRange(items); releases.AddRange(items);
} }
@ -465,7 +465,7 @@ namespace Jackett.Common.Indexers
}; };
var results = await PostDataWithCookies(searchJsonUrl, queryCollection); var results = await PostDataWithCookies(searchJsonUrl, queryCollection);
var items = ParseSearchJsonContent(results.ContentString, year); var items = ParseSearchJsonContent(results.Content, year);
if (!items.Any()) if (!items.Any())
break; break;

View File

@ -111,10 +111,10 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("logout.php"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector("table.tableinborder").InnerHtml; var errorMessage = dom.QuerySelector("table.tableinborder").InnerHtml;
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -161,7 +161,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var rows = dom.QuerySelectorAll("table.testtable> tbody > tr:has(td.tableb)"); var rows = dom.QuerySelectorAll("table.testtable> tbody > tr:has(td.tableb)");
foreach (var row in rows) foreach (var row in rows)
@ -219,7 +219,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -205,7 +205,7 @@ namespace Jackett.Common.Indexers
// Checking ... // Checking ...
Output("\n-> Checking logged-in state...."); Output("\n-> Checking logged-in state....");
var loggedInCheck = await RequestStringWithCookies(SearchUrl); var loggedInCheck = await RequestStringWithCookies(SearchUrl);
if (!loggedInCheck.ContentString.Contains("logout.php")) if (!loggedInCheck.Content.Contains("logout.php"))
{ {
// Cookie expired, renew session on provider // Cookie expired, renew session on provider
Output("-> Not logged, login now...\n"); Output("-> Not logged, login now...\n");
@ -263,7 +263,7 @@ namespace Jackett.Common.Indexers
// Getting results & Store content // Getting results & Store content
var response = await RequestStringWithCookiesAndRetry(request, ConfigData.CookieHeader.Value); var response = await RequestStringWithCookiesAndRetry(request, ConfigData.CookieHeader.Value);
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
try try
{ {

View File

@ -260,7 +260,7 @@ namespace Jackett.Common.Indexers
// Checking ... // Checking ...
Output("\n-> Checking logged-in state...."); Output("\n-> Checking logged-in state....");
var loggedInCheck = await RequestStringWithCookies(SearchUrl); var loggedInCheck = await RequestStringWithCookies(SearchUrl);
if (!loggedInCheck.ContentString.Contains("logout.php")) if (!loggedInCheck.Content.Contains("logout.php"))
{ {
// Cookie expired, renew session on provider // Cookie expired, renew session on provider
Output("-> Not logged, login now...\n"); Output("-> Not logged, login now...\n");
@ -318,7 +318,7 @@ namespace Jackett.Common.Indexers
// Getting results & Store content // Getting results & Store content
var response = await RequestStringWithCookiesAndRetry(request, ConfigData.CookieHeader.Value); var response = await RequestStringWithCookiesAndRetry(request, ConfigData.CookieHeader.Value);
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
try try
{ {

View File

@ -101,10 +101,10 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, string.Empty, false, null, null, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, string.Empty, false, null, null, true);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("/odjava"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("/odjava"), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector("div.obvet > span.najvecji").TextContent.Trim(); // Prijava ni uspela! obvestilo var errorMessage = dom.QuerySelector("div.obvet > span.najvecji").TextContent.Trim(); // Prijava ni uspela! obvestilo
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -145,7 +145,7 @@ namespace Jackett.Common.Indexers
await FollowIfRedirect(results, null, null, null, true); await FollowIfRedirect(results, null, null, null, true);
// are we logged in? // are we logged in?
if (!results.ContentString.Contains("/odjava")) if (!results.Content.Contains("/odjava"))
{ {
await ApplyConfiguration(null); await ApplyConfiguration(null);
} }
@ -159,7 +159,7 @@ namespace Jackett.Common.Indexers
var RowsSelector = "div.list > div[name=\"torrrow\"]"; var RowsSelector = "div.list > div[name=\"torrrow\"]";
var ResultParser = new HtmlParser(); var ResultParser = new HtmlParser();
var SearchResultDocument = ResultParser.ParseDocument(results.ContentString); var SearchResultDocument = ResultParser.ParseDocument(results.Content);
var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector); var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector);
foreach (var Row in Rows) foreach (var Row in Rows)
{ {
@ -220,7 +220,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -121,7 +121,7 @@ namespace Jackett.Common.Indexers
try try
{ {
//Iterate over the releases for each movie //Iterate over the releases for each movie
var jsResults = JObject.Parse(results.ContentString); var jsResults = JObject.Parse(results.Content);
foreach (var movie in jsResults["Movies"]) foreach (var movie in jsResults["Movies"])
{ {
var movieTitle = (string)movie["Title"]; var movieTitle = (string)movie["Title"];
@ -248,7 +248,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -77,7 +77,7 @@ namespace Jackett.Common.Indexers
CookieHeader = ""; // clear old cookies CookieHeader = ""; // clear old cookies
var result1 = await RequestStringWithCookies(CaptchaUrl); var result1 = await RequestStringWithCookies(CaptchaUrl);
var json1 = JObject.Parse(result1.ContentString); var json1 = JObject.Parse(result1.Content);
var captchaSelection = json1["images"][0]["hash"]; var captchaSelection = json1["images"][0]["hash"];
var pairs = new Dictionary<string, string> { var pairs = new Dictionary<string, string> {
@ -88,7 +88,7 @@ namespace Jackett.Common.Indexers
var result2 = await RequestLoginAndFollowRedirect(LoginUrl, pairs, result1.Cookies, true, null, null, true); var result2 = await RequestLoginAndFollowRedirect(LoginUrl, pairs, result1.Cookies, true, null, null, true);
await ConfigureIfOK(result2.Cookies, result2.ContentString.Contains("logout.php"), () => await ConfigureIfOK(result2.Cookies, result2.Content.Contains("logout.php"), () =>
throw new ExceptionWithConfigData("Login Failed", configData)); throw new ExceptionWithConfigData("Login Failed", configData));
return IndexerConfigurationStatus.RequiresTesting; return IndexerConfigurationStatus.RequiresTesting;
} }
@ -136,7 +136,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var rows = dom.QuerySelectorAll("table.main > tbody > tr"); var rows = dom.QuerySelectorAll("table.main > tbody > tr");
foreach (var row in rows.Skip(1)) foreach (var row in rows.Skip(1))
{ {
@ -197,7 +197,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -59,7 +59,7 @@ namespace Jackett.Common.Indexers
{ {
var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty); var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty);
var LoginParser = new HtmlParser(); var LoginParser = new HtmlParser();
var LoginDocument = LoginParser.ParseDocument(loginPage.ContentString); var LoginDocument = LoginParser.ParseDocument(loginPage.Content);
configData.CaptchaCookie.Value = loginPage.Cookies; configData.CaptchaCookie.Value = loginPage.Cookies;
@ -103,10 +103,10 @@ namespace Jackett.Common.Indexers
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, configData.CaptchaCookie.Value, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, configData.CaptchaCookie.Value, true);
await ConfigureIfOK(result.Cookies, result.ContentString.Contains("logout.php"), () => await ConfigureIfOK(result.Cookies, result.Content.Contains("logout.php"), () =>
{ {
var LoginParser = new HtmlParser(); var LoginParser = new HtmlParser();
var LoginDocument = LoginParser.ParseDocument(result.ContentString); var LoginDocument = LoginParser.ParseDocument(result.Content);
var errorMessage = LoginDocument.QuerySelector("span.warning[id!=\"no-cookies\"]:has(br)").TextContent; var errorMessage = LoginDocument.QuerySelector("span.warning[id!=\"no-cookies\"]:has(br)").TextContent;
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -148,7 +148,7 @@ namespace Jackett.Common.Indexers
var IMDBRegEx = new Regex(@"tt(\d+)", RegexOptions.Compiled); var IMDBRegEx = new Regex(@"tt(\d+)", RegexOptions.Compiled);
var hParser = new HtmlParser(); var hParser = new HtmlParser();
var ResultDocument = hParser.ParseDocument(results.ContentString); var ResultDocument = hParser.ParseDocument(results.Content);
try try
{ {
var Groups = ResultDocument.QuerySelectorAll("div.browsePoster"); var Groups = ResultDocument.QuerySelectorAll("div.browsePoster");
@ -207,7 +207,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -75,7 +75,7 @@ namespace Jackett.Common.Indexers
await ConfigureIfOK(result.Cookies, result.Cookies?.Contains("id=") == true, () => await ConfigureIfOK(result.Cookies, result.Cookies?.Contains("id=") == true, () =>
{ {
var errorMessage = result.ContentString; var errorMessage = result.Content;
if (errorMessage.Contains("Error!")) if (errorMessage.Contains("Error!"))
errorMessage = "E-mail or password is incorrect"; errorMessage = "E-mail or password is incorrect";
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
@ -112,10 +112,10 @@ namespace Jackett.Common.Indexers
result = await RequestStringWithCookiesAndRetry(searchUrl, null, SearchUrl); result = await RequestStringWithCookiesAndRetry(searchUrl, null, SearchUrl);
} }
if (!result.ContentString.StartsWith("{")) // not JSON => error if (!result.Content.StartsWith("{")) // not JSON => error
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
var json = JsonConvert.DeserializeObject<dynamic>(result.ContentString); var json = JsonConvert.DeserializeObject<dynamic>(result.Content);
try try
{ {
var torrents = json["torrents"]; // latest torrents var torrents = json["torrents"]; // latest torrents

View File

@ -185,7 +185,7 @@ namespace Jackett.Common.Indexers
configData.CookieHeader.Value = null; configData.CookieHeader.Value = null;
var response = await RequestStringWithCookies(LoginUrl); var response = await RequestStringWithCookies(LoginUrl);
var LoginResultParser = new HtmlParser(); var LoginResultParser = new HtmlParser();
var LoginResultDocument = LoginResultParser.ParseDocument(response.ContentString); var LoginResultDocument = LoginResultParser.ParseDocument(response.Content);
var captchaimg = LoginResultDocument.QuerySelector("img[src*=\"/captcha/\"]"); var captchaimg = LoginResultDocument.QuerySelector("img[src*=\"/captcha/\"]");
if (captchaimg != null) if (captchaimg != null)
{ {
@ -226,12 +226,12 @@ namespace Jackett.Common.Indexers
} }
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, CookieHeader, true, null, LoginUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, CookieHeader, true, null, LoginUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("Вы зашли как:"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("Вы зашли как:"), () =>
{ {
logger.Debug(result.ContentString); logger.Debug(result.Content);
var errorMessage = "Unknown error message, please report"; var errorMessage = "Unknown error message, please report";
var LoginResultParser = new HtmlParser(); var LoginResultParser = new HtmlParser();
var LoginResultDocument = LoginResultParser.ParseDocument(result.ContentString); var LoginResultDocument = LoginResultParser.ParseDocument(result.Content);
var errormsg = LoginResultDocument.QuerySelector("h4[class=\"warnColor1 tCenter mrg_16\"]"); var errormsg = LoginResultDocument.QuerySelector("h4[class=\"warnColor1 tCenter mrg_16\"]");
if (errormsg != null) if (errormsg != null)
errorMessage = errormsg.TextContent; errorMessage = errormsg.TextContent;
@ -261,7 +261,7 @@ namespace Jackett.Common.Indexers
var searchUrl = SearchUrl + "?" + queryCollection.GetQueryString(); var searchUrl = SearchUrl + "?" + queryCollection.GetQueryString();
var results = await RequestStringWithCookies(searchUrl); var results = await RequestStringWithCookies(searchUrl);
if (!results.ContentString.Contains("Вы зашли как:")) if (!results.Content.Contains("Вы зашли как:"))
{ {
// re login // re login
await ApplyConfiguration(null); await ApplyConfiguration(null);
@ -272,7 +272,7 @@ namespace Jackett.Common.Indexers
var RowsSelector = "table#tor-tbl > tbody > tr"; var RowsSelector = "table#tor-tbl > tbody > tr";
var SearchResultParser = new HtmlParser(); var SearchResultParser = new HtmlParser();
var SearchResultDocument = SearchResultParser.ParseDocument(results.ContentString); var SearchResultDocument = SearchResultParser.ParseDocument(results.Content);
var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector); var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector);
foreach (var Row in Rows) foreach (var Row in Rows)
{ {
@ -327,7 +327,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;
@ -338,7 +338,7 @@ namespace Jackett.Common.Indexers
{ {
var downloadlink = link; var downloadlink = link;
var response = await RequestStringWithCookies(link.ToString()); var response = await RequestStringWithCookies(link.ToString());
var results = response.ContentString; var results = response.Content;
var SearchResultParser = new HtmlParser(); var SearchResultParser = new HtmlParser();
var SearchResultDocument = SearchResultParser.ParseDocument(results); var SearchResultDocument = SearchResultParser.ParseDocument(results);
var downloadSelector = "a[class=\"dl-stub dl-link\"]"; var downloadSelector = "a[class=\"dl-stub dl-link\"]";

View File

@ -142,7 +142,7 @@ namespace Jackett.Common.Indexers
var loginCookies = result.Cookies; var loginCookies = result.Cookies;
await FollowIfRedirect(result, LoginUrl, null, loginCookies); await FollowIfRedirect(result, LoginUrl, null, loginCookies);
await ConfigureIfOK(loginCookies, result.ContentString?.Contains("logout.php") == true, await ConfigureIfOK(loginCookies, result.Content?.Contains("logout.php") == true,
() => throw new ExceptionWithConfigData("Login failed", configData)); () => throw new ExceptionWithConfigData("Login failed", configData));
return IndexerConfigurationStatus.RequiresTesting; return IndexerConfigurationStatus.RequiresTesting;
@ -211,7 +211,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var rows = dom.QuerySelectorAll("table > tbody > tr.browse"); var rows = dom.QuerySelectorAll("table > tbody > tr.browse");
foreach (var row in rows) foreach (var row in rows)
{ {
@ -258,7 +258,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
} }

View File

@ -121,7 +121,7 @@ namespace Jackett.Common.Indexers
await RenewalTokenAsync(); await RenewalTokenAsync();
var response = await RequestStringWithCookiesAndRetry(BuildSearchUrl(query)); var response = await RequestStringWithCookiesAndRetry(BuildSearchUrl(query));
var jsonContent = JObject.Parse(response.ContentString); var jsonContent = JObject.Parse(response.Content);
var errorCode = jsonContent.Value<int>("error_code"); var errorCode = jsonContent.Value<int>("error_code");
switch (errorCode) switch (errorCode)
{ {
@ -131,7 +131,7 @@ namespace Jackett.Common.Indexers
case 4: // invalid token case 4: // invalid token
await RenewalTokenAsync(true); // force renewal token await RenewalTokenAsync(true); // force renewal token
response = await RequestStringWithCookiesAndRetry(BuildSearchUrl(query)); response = await RequestStringWithCookiesAndRetry(BuildSearchUrl(query));
jsonContent = JObject.Parse(response.ContentString); jsonContent = JObject.Parse(response.Content);
break; break;
case 10: // imdb not found, see issue #1486 case 10: // imdb not found, see issue #1486
case 20: // no results found case 20: // no results found
@ -139,7 +139,7 @@ namespace Jackett.Common.Indexers
// because we can't distinguish between search without results and api malfunction // because we can't distinguish between search without results and api malfunction
return retry ? await PerformQueryWithRetry(query, false) : releases; return retry ? await PerformQueryWithRetry(query, false) : releases;
default: default:
throw new Exception("Unknown error code: " + errorCode + " response: " + response.ContentString); throw new Exception("Unknown error code: " + errorCode + " response: " + response.Content);
} }
try try
@ -196,7 +196,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
@ -264,7 +264,7 @@ namespace Jackett.Common.Indexers
}; };
var tokenUrl = ApiEndpoint + "?" + qc.GetQueryString(); var tokenUrl = ApiEndpoint + "?" + qc.GetQueryString();
var result = await RequestStringWithCookiesAndRetry(tokenUrl); var result = await RequestStringWithCookiesAndRetry(tokenUrl);
var json = JObject.Parse(result.ContentString); var json = JObject.Parse(result.Content);
_token = json.Value<string>("token"); _token = json.Value<string>("token");
_lastTokenFetch = DateTime.Now; _lastTokenFetch = DateTime.Now;
} }

View File

@ -198,7 +198,7 @@ namespace Jackett.Common.Indexers
var homePageLoad = await RequestLoginAndFollowRedirect(LandingPageURL, new Dictionary<string, string> { }, null, true, null, SiteLink); var homePageLoad = await RequestLoginAndFollowRedirect(LandingPageURL, new Dictionary<string, string> { }, null, true, null, SiteLink);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, homePageLoad.Cookies, true, null, LandingPageURL); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, homePageLoad.Cookies, true, null, LandingPageURL);
await ConfigureIfOK(result.Cookies, result.ContentString?.Contains("/logout.php") == true, () => await ConfigureIfOK(result.Cookies, result.Content?.Contains("/logout.php") == true, () =>
throw new ExceptionWithConfigData("Login failed! Check the username and password. If they are ok, try logging on the website.", configData)); throw new ExceptionWithConfigData("Login failed! Check the username and password. If they are ok, try logging on the website.", configData));
// Store RSS key from feed generator page // Store RSS key from feed generator page
@ -208,7 +208,7 @@ namespace Jackett.Common.Indexers
{ "feed", "dl" } { "feed", "dl" }
}; };
var rssPage = await PostDataWithCookies(GetRSSKeyUrl, rssParams, result.Cookies); var rssPage = await PostDataWithCookies(GetRSSKeyUrl, rssParams, result.Cookies);
var match = Regex.Match(rssPage.ContentString, "(?<=passkey\\=)([a-zA-z0-9]*)"); var match = Regex.Match(rssPage.Content, "(?<=passkey\\=)([a-zA-z0-9]*)");
configData.RSSKey.Value = match.Success ? match.Value : string.Empty; configData.RSSKey.Value = match.Success ? match.Value : string.Empty;
if (string.IsNullOrWhiteSpace(configData.RSSKey.Value)) if (string.IsNullOrWhiteSpace(configData.RSSKey.Value))
throw new Exception("Failed to get RSS Key"); throw new Exception("Failed to get RSS Key");
@ -233,7 +233,7 @@ namespace Jackett.Common.Indexers
if (string.IsNullOrWhiteSpace(searchString)) if (string.IsNullOrWhiteSpace(searchString))
{ {
var rssPage = await RequestStringWithCookiesAndRetry(RSSUrl + configData.RSSKey.Value); var rssPage = await RequestStringWithCookiesAndRetry(RSSUrl + configData.RSSKey.Value);
var rssDoc = XDocument.Parse(rssPage.ContentString); var rssDoc = XDocument.Parse(rssPage.Content);
foreach (var item in rssDoc.Descendants("item")) foreach (var item in rssDoc.Descendants("item"))
{ {
@ -316,7 +316,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var rows = dom.QuerySelectorAll("#torrents-table > tbody > tr"); var rows = dom.QuerySelectorAll("#torrents-table > tbody > tr");
foreach (var row in rows.Skip(1)) foreach (var row in rows.Skip(1))
@ -363,7 +363,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
} }

View File

@ -1512,7 +1512,7 @@ namespace Jackett.Common.Indexers
configData.CookieHeader.Value = null; configData.CookieHeader.Value = null;
var response = await RequestStringWithCookies(LoginUrl); var response = await RequestStringWithCookies(LoginUrl);
var parser = new HtmlParser(); var parser = new HtmlParser();
var doc = parser.ParseDocument(response.ContentString); var doc = parser.ParseDocument(response.Content);
var captchaimg = doc.QuerySelector("img[src^=\"https://static.t-ru.org/captcha/\"]"); var captchaimg = doc.QuerySelector("img[src^=\"https://static.t-ru.org/captcha/\"]");
if (captchaimg != null) if (captchaimg != null)
{ {
@ -1557,12 +1557,12 @@ namespace Jackett.Common.Indexers
} }
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, CookieHeader, true, null, LoginUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, CookieHeader, true, null, LoginUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("id=\"logged-in-username\""), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("id=\"logged-in-username\""), () =>
{ {
logger.Debug(result.ContentString); logger.Debug(result.Content);
var errorMessage = "Unknown error message, please report"; var errorMessage = "Unknown error message, please report";
var parser = new HtmlParser(); var parser = new HtmlParser();
var doc = parser.ParseDocument(result.ContentString); var doc = parser.ParseDocument(result.Content);
var errormsg = doc.QuerySelector("h4[class=\"warnColor1 tCenter mrg_16\"]"); var errormsg = doc.QuerySelector("h4[class=\"warnColor1 tCenter mrg_16\"]");
if (errormsg != null) if (errormsg != null)
errorMessage = errormsg.TextContent; errorMessage = errormsg.TextContent;
@ -1592,7 +1592,7 @@ namespace Jackett.Common.Indexers
var searchUrl = SearchUrl + "?" + queryCollection.GetQueryString(); var searchUrl = SearchUrl + "?" + queryCollection.GetQueryString();
var results = await RequestStringWithCookies(searchUrl); var results = await RequestStringWithCookies(searchUrl);
if (!results.ContentString.Contains("id=\"logged-in-username\"")) if (!results.Content.Contains("id=\"logged-in-username\""))
{ {
// re login // re login
await ApplyConfiguration(null); await ApplyConfiguration(null);
@ -1601,7 +1601,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var doc = parser.ParseDocument(results.ContentString); var doc = parser.ParseDocument(results.Content);
var rows = doc.QuerySelectorAll("table#tor-tbl > tbody > tr"); var rows = doc.QuerySelectorAll("table#tor-tbl > tbody > tr");
foreach (var row in rows) foreach (var row in rows)
try try
@ -1696,7 +1696,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -93,12 +93,12 @@ namespace Jackett.Common.Indexers
var searchUrl = SearchUrl + qc.GetQueryString(); var searchUrl = SearchUrl + qc.GetQueryString();
var response = await RequestStringWithCookiesAndRetry(searchUrl); var response = await RequestStringWithCookiesAndRetry(searchUrl);
if (response.ContentString?.Contains("User not found or passkey not set") == true) if (response.Content?.Contains("User not found or passkey not set") == true)
throw new Exception("The passkey is invalid. Check the indexer configuration."); throw new Exception("The passkey is invalid. Check the indexer configuration.");
try try
{ {
var jsonContent = JArray.Parse(response.ContentString); var jsonContent = JArray.Parse(response.Content);
foreach (var item in jsonContent) foreach (var item in jsonContent)
{ {
var title = item.Value<string>("name"); var title = item.Value<string>("name");
@ -136,7 +136,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -116,7 +116,7 @@ namespace Jackett.Common.Indexers
} }
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(loginPage.ContentString); var dom = parser.ParseDocument(loginPage.Content);
var recaptcha = dom.QuerySelector(".g-recaptcha"); var recaptcha = dom.QuerySelector(".g-recaptcha");
if (recaptcha != null) if (recaptcha != null)
{ {
@ -167,10 +167,10 @@ namespace Jackett.Common.Indexers
} }
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("logout.php"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector("td.text").TextContent.Trim(); var errorMessage = dom.QuerySelector("td.text").TextContent.Trim();
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -201,15 +201,15 @@ namespace Jackett.Common.Indexers
var results = await RequestStringWithCookies(searchUrl); var results = await RequestStringWithCookies(searchUrl);
// response without results (the message is misleading) // response without results (the message is misleading)
if (results.ContentString?.Contains("slow down geek!!!") == true) if (results.Content?.Contains("slow down geek!!!") == true)
return new List<ReleaseInfo>(); return new List<ReleaseInfo>();
// not logged in // not logged in
if (results.ContentString == null || !results.ContentString.Contains("/logout.php")) if (results.Content == null || !results.Content.Contains("/logout.php"))
throw new Exception("The user is not logged in. It is possible that the cookie has expired or you " + throw new Exception("The user is not logged in. It is possible that the cookie has expired or you " +
"made a mistake when copying it. Please check the settings."); "made a mistake when copying it. Please check the settings.");
return ParseResponse(query, results.ContentString); return ParseResponse(query, results.Content);
} }
private List<ReleaseInfo> ParseResponse(TorznabQuery query, string htmlResponse) private List<ReleaseInfo> ParseResponse(TorznabQuery query, string htmlResponse)

View File

@ -65,11 +65,11 @@ namespace Jackett.Common.Indexers
// Get cookie // Get cookie
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl);
await ConfigureIfOK(result.Cookies, result.ContentString?.Contains("glyphicon-log-out") == true, await ConfigureIfOK(result.Cookies, result.Content?.Contains("glyphicon-log-out") == true,
() => throw new ExceptionWithConfigData("The username and password entered do not match.", configData)); () => throw new ExceptionWithConfigData("The username and password entered do not match.", configData));
var rssProfile = await RequestStringWithCookiesAndRetry(RSSProfile); var rssProfile = await RequestStringWithCookiesAndRetry(RSSProfile);
var parser = new HtmlParser(); var parser = new HtmlParser();
var rssDom = parser.ParseDocument(rssProfile.ContentString); var rssDom = parser.ParseDocument(rssProfile.Content);
configData.RSSKey.Value = rssDom.QuerySelector(".col-sm-9:nth-of-type(1)").TextContent.Trim(); configData.RSSKey.Value = rssDom.QuerySelector(".col-sm-9:nth-of-type(1)").TextContent.Trim();
if (string.IsNullOrWhiteSpace(configData.RSSKey.Value)) if (string.IsNullOrWhiteSpace(configData.RSSKey.Value))
throw new ExceptionWithConfigData("Failed to find RSS key.", configData); throw new ExceptionWithConfigData("Failed to find RSS key.", configData);
@ -92,7 +92,7 @@ namespace Jackett.Common.Indexers
results = await PostDataWithCookiesAndRetry(SearchUrl, pairs, null, TorrentsUrl); results = await PostDataWithCookiesAndRetry(SearchUrl, pairs, null, TorrentsUrl);
results = await ReloginIfNecessary(results); results = await ReloginIfNecessary(results);
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var shows = dom.QuerySelectorAll("div.show[data-id]"); var shows = dom.QuerySelectorAll("div.show[data-id]");
foreach (var show in shows) foreach (var show in shows)
{ {
@ -110,7 +110,7 @@ namespace Jackett.Common.Indexers
results = await RequestStringWithCookies(searchUrl); results = await RequestStringWithCookies(searchUrl);
results = await ReloginIfNecessary(results); results = await ReloginIfNecessary(results);
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var rows = dom.QuerySelectorAll( var rows = dom.QuerySelectorAll(
string.IsNullOrWhiteSpace(queryString) ? "#torrent-table tr" : "table tr"); string.IsNullOrWhiteSpace(queryString) ? "#torrent-table tr" : "table tr");
var globalFreeleech = var globalFreeleech =
@ -161,7 +161,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
foreach (var release in releases) foreach (var release in releases)
release.Category = release.Title.Contains("1080p") || release.Title.Contains("720p") release.Category = release.Title.Contains("1080p") || release.Title.Contains("720p")
@ -172,7 +172,7 @@ namespace Jackett.Common.Indexers
private async Task<WebClientStringResult> ReloginIfNecessary(WebClientStringResult response) private async Task<WebClientStringResult> ReloginIfNecessary(WebClientStringResult response)
{ {
if (response.ContentString.Contains("onclick=\"document.location='logout'\"")) if (response.Content.Contains("onclick=\"document.location='logout'\""))
return response; return response;
await ApplyConfiguration(null); await ApplyConfiguration(null);

View File

@ -65,7 +65,7 @@ namespace Jackett.Common.Indexers
try try
{ {
xmlDoc.LoadXml(result.ContentString); xmlDoc.LoadXml(result.Content);
foreach (XmlNode node in xmlDoc.GetElementsByTagName("item")) foreach (XmlNode node in xmlDoc.GetElementsByTagName("item"))
{ {
//TODO revisit for refactoring //TODO revisit for refactoring
@ -105,7 +105,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(result.ContentString, ex); OnParseError(result.Content, ex);
} }
return releases; return releases;

View File

@ -80,7 +80,7 @@ namespace Jackett.Common.Indexers
{ {
try try
{ {
var json = JsonConvert.DeserializeObject<dynamic>(result.ContentString); var json = JsonConvert.DeserializeObject<dynamic>(result.Content);
if (!(json is JObject) || !(json["results"] is JArray) || json["results"] == null) if (!(json is JObject) || !(json["results"] is JArray) || json["results"] == null)
throw new Exception("Server error"); throw new Exception("Server error");
return (JArray)json["results"]; return (JArray)json["results"];
@ -88,7 +88,7 @@ namespace Jackett.Common.Indexers
catch (Exception e) catch (Exception e)
{ {
logger.Error("CheckResponse() Error: ", e.Message); logger.Error("CheckResponse() Error: ", e.Message);
throw new ExceptionWithConfigData(result.ContentString, ConfigData); throw new ExceptionWithConfigData(result.Content, ConfigData);
} }
} }

View File

@ -104,7 +104,7 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl1, pairs, null, true, null, SiteLink); var result = await RequestLoginAndFollowRedirect(LoginUrl1, pairs, null, true, null, SiteLink);
var tokenRegex = new Regex(@"name=\\""a\\"" value=\\""([^""]+)\\"""); var tokenRegex = new Regex(@"name=\\""a\\"" value=\\""([^""]+)\\""");
var matches = tokenRegex.Match(result.ContentString); var matches = tokenRegex.Match(result.Content);
if (!matches.Success) if (!matches.Success)
throw new Exception("Error parsing the login form"); throw new Exception("Error parsing the login form");
var token = matches.Groups[1].Value; var token = matches.Groups[1].Value;
@ -116,12 +116,12 @@ namespace Jackett.Common.Indexers
}; };
result = await RequestLoginAndFollowRedirect(LoginUrl2, pairs, result.Cookies, true, null, SiteLink); result = await RequestLoginAndFollowRedirect(LoginUrl2, pairs, result.Cookies, true, null, SiteLink);
await ConfigureIfOK(result.Cookies, result.ContentString?.Contains("/browse.php") == true, () => await ConfigureIfOK(result.Cookies, result.Content?.Contains("/browse.php") == true, () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector("h5")?.TextContent; var errorMessage = dom.QuerySelector("h5")?.TextContent;
if (result.ContentString.Contains("Wrong Captcha!")) if (result.Content.Contains("Wrong Captcha!"))
errorMessage = "Captcha required due to a failed login attempt. Login via a browser to whitelist your IP and then reconfigure Jackett."; errorMessage = "Captcha required due to a failed login attempt. Login via a browser to whitelist your IP and then reconfigure Jackett.";
throw new Exception(errorMessage); throw new Exception(errorMessage);
}); });
@ -152,7 +152,7 @@ namespace Jackett.Common.Indexers
var searchUrl = SearchUrl + string.Join("/", qc); var searchUrl = SearchUrl + string.Join("/", qc);
var response = await RequestStringWithCookiesAndRetry(searchUrl); var response = await RequestStringWithCookiesAndRetry(searchUrl);
if (!response.ContentString.Contains("/logout.php")) // re-login if (!response.Content.Contains("/logout.php")) // re-login
{ {
await DoLogin(); await DoLogin();
response = await RequestStringWithCookiesAndRetry(searchUrl); response = await RequestStringWithCookiesAndRetry(searchUrl);
@ -161,7 +161,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var rows = dom.QuerySelectorAll("div.boxContent > table > tbody > tr"); var rows = dom.QuerySelectorAll("div.boxContent > table > tbody > tr");
foreach (var row in rows) foreach (var row in rows)
@ -205,7 +205,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
} }

View File

@ -133,7 +133,7 @@ namespace Jackett.Common.Indexers
try try
{ {
//var json = JArray.Parse(results.Content); //var json = JArray.Parse(results.Content);
dynamic json = JsonConvert.DeserializeObject<dynamic>(results.ContentString); dynamic json = JsonConvert.DeserializeObject<dynamic>(results.Content);
foreach (var row in json ?? System.Linq.Enumerable.Empty<dynamic>()) foreach (var row in json ?? System.Linq.Enumerable.Empty<dynamic>())
{ {
var release = new ReleaseInfo(); var release = new ReleaseInfo();
@ -205,7 +205,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -76,7 +76,7 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, referer: SiteLink); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, referer: SiteLink);
await ConfigureIfOK( await ConfigureIfOK(
result.Cookies, result.ContentString?.Contains("Főoldal") == true, result.Cookies, result.Content?.Contains("Főoldal") == true,
() => throw new ExceptionWithConfigData("Error while trying to login.", configData)); () => throw new ExceptionWithConfigData("Error while trying to login.", configData));
return IndexerConfigurationStatus.RequiresTesting; return IndexerConfigurationStatus.RequiresTesting;
} }
@ -137,7 +137,7 @@ namespace Jackett.Common.Indexers
* First 3 items per page are total results, results per page, and results this page * First 3 items per page are total results, results per page, and results this page
* There is also a tail of ~4 items after the results for some reason. Looks like \1\\\ * There is also a tail of ~4 items after the results for some reason. Looks like \1\\\
*/ */
var parameters = results.ContentString.Split('\\'); var parameters = results.Content.Split('\\');
var torrentsThisPage = int.Parse(parameters[2]); var torrentsThisPage = int.Parse(parameters[2]);
var maxTorrents = Math.Min(torrentsThisPage, limit - alreadyFound); var maxTorrents = Math.Min(torrentsThisPage, limit - alreadyFound);
var rows = parameters.Skip(3) //Skip pages info var rows = parameters.Skip(3) //Skip pages info
@ -164,7 +164,7 @@ namespace Jackett.Common.Indexers
queryParams["now"] = DateTimeUtil.DateTimeToUnixTimestamp(DateTime.UtcNow) queryParams["now"] = DateTimeUtil.DateTimeToUnixTimestamp(DateTime.UtcNow)
.ToString(CultureInfo.InvariantCulture); .ToString(CultureInfo.InvariantCulture);
var filesList = (await RequestStringWithCookiesAndRetry(SearchUrl + "?" + queryParams.GetQueryString())) var filesList = (await RequestStringWithCookiesAndRetry(SearchUrl + "?" + queryParams.GetQueryString()))
.ContentString; .Content;
var firstFileName = filesList.Split( var firstFileName = filesList.Split(
new[] new[]
{ {
@ -203,7 +203,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;
@ -216,7 +216,7 @@ namespace Jackett.Common.Indexers
private async Task PopulateImdbMapAsync() private async Task PopulateImdbMapAsync()
{ {
var result = await RequestStringWithCookiesAndRetry(BrowseUrl); var result = await RequestStringWithCookiesAndRetry(BrowseUrl);
foreach (Match match in _seriesInfoMatch.Matches(result.ContentString)) foreach (Match match in _seriesInfoMatch.Matches(result.Content))
{ {
var internalId = int.Parse(match.Groups["seriesID"].Value); var internalId = int.Parse(match.Groups["seriesID"].Value);
var imdbId = long.Parse(match.Groups["ImdbId"].Value); var imdbId = long.Parse(match.Groups["ImdbId"].Value);
@ -282,7 +282,7 @@ namespace Jackett.Common.Indexers
var results = await RequestStringWithCookiesAndRetry(SearchUrl + "?" + queryParams.GetQueryString()); var results = await RequestStringWithCookiesAndRetry(SearchUrl + "?" + queryParams.GetQueryString());
// Parse page Information from result // Parse page Information from result
var content = results.ContentString; var content = results.Content;
var splits = content.Split('\\'); var splits = content.Split('\\');
var totalFound = int.Parse(splits[0]); var totalFound = int.Parse(splits[0]);
var torrentPerPage = int.Parse(splits[1]); var torrentPerPage = int.Parse(splits[1]);

View File

@ -64,10 +64,10 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString?.Contains("logout.php") == true, () => await ConfigureIfOK(result.Cookies, result.Content?.Contains("logout.php") == true, () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector("form#loginform").TextContent.Trim(); var errorMessage = dom.QuerySelector("form#loginform").TextContent.Trim();
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -100,7 +100,7 @@ namespace Jackett.Common.Indexers
var seasonRegEx = new Regex(@$"Season\s+0*{query.Season}[^\d]", RegexOptions.IgnoreCase); var seasonRegEx = new Regex(@$"Season\s+0*{query.Season}[^\d]", RegexOptions.IgnoreCase);
var parser = new HtmlParser(); var parser = new HtmlParser();
var doc = parser.ParseDocument(results.ContentString); var doc = parser.ParseDocument(results.Content);
var rows = doc.QuerySelectorAll("table.torrent_table > tbody > tr.torrent"); var rows = doc.QuerySelectorAll("table.torrent_table > tbody > tr.torrent");
foreach (var row in rows) foreach (var row in rows)
{ {
@ -151,7 +151,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -194,12 +194,12 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, CookieHeader, true, null, LoginUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, CookieHeader, true, null, LoginUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("logout=true"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout=true"), () =>
{ {
logger.Debug(result.ContentString); logger.Debug(result.Content);
var errorMessage = "Unknown error message, please report"; var errorMessage = "Unknown error message, please report";
var LoginResultParser = new HtmlParser(); var LoginResultParser = new HtmlParser();
var LoginResultDocument = LoginResultParser.ParseDocument(result.ContentString); var LoginResultDocument = LoginResultParser.ParseDocument(result.Content);
var errormsg = LoginResultDocument.QuerySelector("h4[class=\"warnColor1 tCenter mrg_16\"]"); var errormsg = LoginResultDocument.QuerySelector("h4[class=\"warnColor1 tCenter mrg_16\"]");
if (errormsg != null) if (errormsg != null)
errorMessage = errormsg.TextContent; errorMessage = errormsg.TextContent;
@ -233,7 +233,7 @@ namespace Jackett.Common.Indexers
var searchUrl = SearchUrl + "?" + queryCollection.GetQueryString(); var searchUrl = SearchUrl + "?" + queryCollection.GetQueryString();
var results = await RequestStringWithCookies(searchUrl); var results = await RequestStringWithCookies(searchUrl);
if (!results.ContentString.Contains("logout=true")) if (!results.Content.Contains("logout=true"))
{ {
// re login // re login
await ApplyConfiguration(null); await ApplyConfiguration(null);
@ -244,7 +244,7 @@ namespace Jackett.Common.Indexers
var RowsSelector = "table.forumline > tbody > tr[class*=prow]"; var RowsSelector = "table.forumline > tbody > tr[class*=prow]";
var SearchResultParser = new HtmlParser(); var SearchResultParser = new HtmlParser();
var SearchResultDocument = SearchResultParser.ParseDocument(results.ContentString); var SearchResultDocument = SearchResultParser.ParseDocument(results.Content);
var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector); var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector);
foreach (var Row in Rows) foreach (var Row in Rows)
{ {
@ -313,7 +313,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -63,9 +63,9 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("Logged in as: "), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("Logged in as: "), () =>
{ {
var errorMessage = result.ContentString; var errorMessage = result.Content;
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
return IndexerConfigurationStatus.RequiresTesting; return IndexerConfigurationStatus.RequiresTesting;
@ -110,7 +110,7 @@ namespace Jackett.Common.Indexers
var RowsSelector = "div.borderwrap:has(div.maintitle) > table > tbody > tr:has(a[href*=\"index.php?showtopic=\"])"; var RowsSelector = "div.borderwrap:has(div.maintitle) > table > tbody > tr:has(a[href*=\"index.php?showtopic=\"])";
var SearchResultParser = new HtmlParser(); var SearchResultParser = new HtmlParser();
var SearchResultDocument = SearchResultParser.ParseDocument(results.ContentString); var SearchResultDocument = SearchResultParser.ParseDocument(results.Content);
var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector); var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector);
foreach (var Row in Rows) foreach (var Row in Rows)
{ {
@ -195,7 +195,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;
@ -204,7 +204,7 @@ namespace Jackett.Common.Indexers
public override async Task<byte[]> Download(Uri link) public override async Task<byte[]> Download(Uri link)
{ {
var response = await RequestStringWithCookies(link.ToString()); var response = await RequestStringWithCookies(link.ToString());
var results = response.ContentString; var results = response.Content;
var SearchResultParser = new HtmlParser(); var SearchResultParser = new HtmlParser();
var SearchResultDocument = SearchResultParser.ParseDocument(results); var SearchResultDocument = SearchResultParser.ParseDocument(results);
var downloadSelector = "a[title=\"Download attachment\"]"; var downloadSelector = "a[title=\"Download attachment\"]";

View File

@ -92,12 +92,12 @@ namespace Jackett.Common.Indexers
var loginPage = await RequestStringWithCookies(SiteLink, string.Empty); var loginPage = await RequestStringWithCookies(SiteLink, string.Empty);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, SiteLink, SiteLink); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, SiteLink, SiteLink);
await ConfigureIfOK( await ConfigureIfOK(
result.Cookies, result.ContentString?.Contains("my.php") == true, () => result.Cookies, result.Content?.Contains("my.php") == true, () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var messageEl = dom.QuerySelector("td.embedded"); var messageEl = dom.QuerySelector("td.embedded");
var errorMessage = messageEl != null ? messageEl.TextContent : result.ContentString; var errorMessage = messageEl != null ? messageEl.TextContent : result.Content;
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
return IndexerConfigurationStatus.RequiresTesting; return IndexerConfigurationStatus.RequiresTesting;
@ -138,7 +138,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var rows = dom.QuerySelectorAll("table > tbody:has(tr > td.colhead) > tr:not(:has(td.colhead))"); var rows = dom.QuerySelectorAll("table > tbody:has(tr > td.colhead) > tr:not(:has(td.colhead))");
foreach (var row in rows) foreach (var row in rows)
{ {
@ -187,7 +187,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -166,7 +166,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var rows = JsonConvert.DeserializeObject<dynamic>(results.ContentString); var rows = JsonConvert.DeserializeObject<dynamic>(results.Content);
foreach (var row in rows) foreach (var row in rows)
{ {
@ -207,7 +207,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;
} }

View File

@ -109,13 +109,13 @@ namespace Jackett.Common.Indexers
pairs.Add("proofcode", configData.CaptchaText.Value); pairs.Add("proofcode", configData.CaptchaText.Value);
var result = await RequestLoginAndFollowRedirect( var result = await RequestLoginAndFollowRedirect(
IndexUrl, pairs, configData.CaptchaCookie.Value, true, referer: IndexUrl, accumulateCookies: true); IndexUrl, pairs, configData.CaptchaCookie.Value, true, referer: IndexUrl, accumulateCookies: true);
if (result.ContentString == null || (!result.ContentString.Contains("login_complete") && if (result.Content == null || (!result.Content.Contains("login_complete") &&
!result.ContentString.Contains("index.php?strWebValue=account&strWebAction=logout"))) !result.Content.Contains("index.php?strWebValue=account&strWebAction=logout")))
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessageEl = dom.QuerySelector("table > tbody > tr > td[valign=top][width=100%]"); var errorMessageEl = dom.QuerySelector("table > tbody > tr > td[valign=top][width=100%]");
var errorMessage = errorMessageEl != null ? errorMessageEl.InnerHtml : result.ContentString; var errorMessage = errorMessageEl != null ? errorMessageEl.InnerHtml : result.Content;
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
} }
@ -130,7 +130,7 @@ namespace Jackett.Common.Indexers
{ {
var loginPage = await RequestStringWithCookies(IndexUrl, string.Empty); var loginPage = await RequestStringWithCookies(IndexUrl, string.Empty);
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(loginPage.ContentString); var dom = parser.ParseDocument(loginPage.Content);
var qCaptchaImg = dom.QuerySelector("td.tablea > img"); var qCaptchaImg = dom.QuerySelector("td.tablea > img");
if (qCaptchaImg != null) if (qCaptchaImg != null)
{ {
@ -187,7 +187,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString); var dom = parser.ParseDocument(response.Content);
var rows = dom.QuerySelectorAll("table.torrenttable > tbody > tr"); var rows = dom.QuerySelectorAll("table.torrenttable > tbody > tr");
foreach (var row in rows.Skip(1)) foreach (var row in rows.Skip(1))
{ {
@ -242,7 +242,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -109,7 +109,7 @@ namespace Jackett.Common.Indexers
{ {
var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty); var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty);
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(loginPage.ContentString); var dom = parser.ParseDocument(loginPage.Content);
var captcha = dom.QuerySelector(".g-recaptcha"); var captcha = dom.QuerySelector(".g-recaptcha");
if (captcha != null) if (captcha != null)
{ {
@ -169,10 +169,10 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl);
await ConfigureIfOK(result.Cookies, result.ContentString != null && result.ContentString.Contains("/user/account/logout"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("/user/account/logout"), () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector("p.text-danger:contains(\"Error:\")").TextContent.Trim(); var errorMessage = dom.QuerySelector("p.text-danger:contains(\"Error:\")").TextContent.Trim();
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -200,7 +200,7 @@ namespace Jackett.Common.Indexers
var results = await RequestStringWithCookiesAndRetry(searchUrl); var results = await RequestStringWithCookiesAndRetry(searchUrl);
if (results.ContentString.Contains("/user/account/login")) // re-login if (results.Content.Contains("/user/account/login")) // re-login
{ {
await DoLogin(); await DoLogin();
results = await RequestStringWithCookiesAndRetry(searchUrl); results = await RequestStringWithCookiesAndRetry(searchUrl);
@ -208,7 +208,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var rows = (JArray)((JObject)JsonConvert.DeserializeObject(results.ContentString))["torrentList"]; var rows = (JArray)((JObject)JsonConvert.DeserializeObject(results.Content))["torrentList"];
foreach (var row in rows) foreach (var row in rows)
{ {
var title = row["name"].ToString(); var title = row["name"].ToString();
@ -249,7 +249,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -125,9 +125,9 @@ namespace Jackett.Common.Indexers
{ {
var jsonData = JsonConvert.SerializeObject(data); var jsonData = JsonConvert.SerializeObject(data);
var result = await PostDataWithCookies(APIUrl + endpoint, null, null, SiteLink, APIHeaders, jsonData); var result = await PostDataWithCookies(APIUrl + endpoint, null, null, SiteLink, APIHeaders, jsonData);
if (!result.ContentString.StartsWith("{")) // not JSON => error if (!result.Content.StartsWith("{")) // not JSON => error
throw new ExceptionWithConfigData(result.ContentString, configData); throw new ExceptionWithConfigData(result.Content, configData);
dynamic json = JsonConvert.DeserializeObject<dynamic>(result.ContentString); dynamic json = JsonConvert.DeserializeObject<dynamic>(result.Content);
return json; return json;
} }

View File

@ -106,7 +106,7 @@ namespace Jackett.Common.Indexers
LoadValuesFromJson(configJson); LoadValuesFromJson(configJson);
var loginPage = await RequestStringWithCookies(TokenUrl); var loginPage = await RequestStringWithCookies(TokenUrl);
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(loginPage.ContentString); var dom = parser.ParseDocument(loginPage.Content);
var token = dom.QuerySelector("form.form-horizontal > span"); var token = dom.QuerySelector("form.form-horizontal > span");
var csrf = token.Children[1].GetAttribute("value"); var csrf = token.Children[1].GetAttribute("value");
var pairs = new Dictionary<string, string> var pairs = new Dictionary<string, string>
@ -119,10 +119,10 @@ namespace Jackett.Common.Indexers
}; };
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, accumulateCookies: true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, accumulateCookies: true);
await ConfigureIfOK( await ConfigureIfOK(
result.Cookies, result.ContentString.Contains("/logout.php?"), result.Cookies, result.Content.Contains("/logout.php?"),
() => () =>
{ {
var errorDom = parser.ParseDocument(result.ContentString); var errorDom = parser.ParseDocument(result.Content);
var errorMessage = errorDom.QuerySelector("td.colhead2").InnerHtml; var errorMessage = errorDom.QuerySelector("td.colhead2").InnerHtml;
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -150,12 +150,12 @@ namespace Jackett.Common.Indexers
queryCollection.Add($"cat[{cat}]", "1"); queryCollection.Add($"cat[{cat}]", "1");
searchUrl += "?" + queryCollection.GetQueryString(); searchUrl += "?" + queryCollection.GetQueryString();
var response = await RequestStringWithCookiesAndRetry(searchUrl); var response = await RequestStringWithCookiesAndRetry(searchUrl);
var results = response.ContentString; var results = response.Content;
if (!results.Contains("/logout.php?")) if (!results.Contains("/logout.php?"))
{ {
await ApplyConfiguration(null); await ApplyConfiguration(null);
response = await RequestStringWithCookiesAndRetry(searchUrl); response = await RequestStringWithCookiesAndRetry(searchUrl);
results = response.ContentString; results = response.Content;
} }
try try

View File

@ -112,7 +112,7 @@ namespace Jackett.Common.Indexers
CookieHeader = ""; CookieHeader = "";
var result1 = await RequestStringWithCookies(CaptchaUrl); var result1 = await RequestStringWithCookies(CaptchaUrl);
var json1 = JObject.Parse(result1.ContentString); var json1 = JObject.Parse(result1.Content);
var captchaSelection = json1["images"][0]["hash"]; var captchaSelection = json1["images"][0]["hash"];
var pairs = new Dictionary<string, string> { var pairs = new Dictionary<string, string> {
@ -124,8 +124,8 @@ namespace Jackett.Common.Indexers
var result2 = await RequestLoginAndFollowRedirect(LoginUrl, pairs, result1.Cookies, true, null, null, true); var result2 = await RequestLoginAndFollowRedirect(LoginUrl, pairs, result1.Cookies, true, null, null, true);
await ConfigureIfOK(result2.Cookies, result2.ContentString.Contains("/logout.php"), await ConfigureIfOK(result2.Cookies, result2.Content.Contains("/logout.php"),
() => throw new ExceptionWithConfigData(result2.ContentString, configData)); () => throw new ExceptionWithConfigData(result2.Content, configData));
return IndexerConfigurationStatus.RequiresTesting; return IndexerConfigurationStatus.RequiresTesting;
} }
@ -183,7 +183,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString); var dom = parser.ParseDocument(results.Content);
var rows = dom.QuerySelectorAll("table.torrent_table > tbody > tr"); var rows = dom.QuerySelectorAll("table.torrent_table > tbody > tr");
var globalFreeleech = dom.QuerySelector("legend:contains(\"Freeleech\")+ul > li > b:contains(\"Freeleech\")") != null; var globalFreeleech = dom.QuerySelector("legend:contains(\"Freeleech\")+ul > li > b:contains(\"Freeleech\")") != null;
foreach (var row in rows.Skip(1)) foreach (var row in rows.Skip(1))
@ -242,7 +242,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(results.ContentString, ex); OnParseError(results.Content, ex);
} }
return releases; return releases;

View File

@ -74,7 +74,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var jsonStart = response.ContentString; var jsonStart = response.Content;
var jsonContent = JArray.Parse(jsonStart); var jsonContent = JArray.Parse(jsonStart);
foreach (var torrent in jsonContent) foreach (var torrent in jsonContent)
@ -156,7 +156,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;
} }

View File

@ -134,7 +134,7 @@ namespace Jackett.Common.Indexers
{ {
var loginPage = await RequestStringWithCookies(LandingUrl); var loginPage = await RequestStringWithCookies(LandingUrl);
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(loginPage.ContentString); var dom = parser.ParseDocument(loginPage.Content);
var qCaptchaImg = dom.QuerySelector("img#regimage"); var qCaptchaImg = dom.QuerySelector("img#regimage");
if (qCaptchaImg != null) if (qCaptchaImg != null)
{ {
@ -169,11 +169,11 @@ namespace Jackett.Common.Indexers
//var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, SiteLink, true); //var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, SiteLink, true);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, SearchUrl, LandingUrl, true); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, SearchUrl, LandingUrl, true);
await ConfigureIfOK(result.Cookies, result.ContentString?.Contains("logout.php") == true, await ConfigureIfOK(result.Cookies, result.Content?.Contains("logout.php") == true,
() => () =>
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(result.ContentString); var dom = parser.ParseDocument(result.Content);
var errorMessage = dom.QuerySelector(".left_side table:nth-of-type(1) tr:nth-of-type(2)")?.TextContent.Trim().Replace("\n\t", " "); var errorMessage = dom.QuerySelector(".left_side table:nth-of-type(1) tr:nth-of-type(2)")?.TextContent.Trim().Replace("\n\t", " ");
if (string.IsNullOrWhiteSpace(errorMessage)) if (string.IsNullOrWhiteSpace(errorMessage))
errorMessage = dom.QuerySelector("div.notification-body").TextContent.Trim().Replace("\n\t", " "); errorMessage = dom.QuerySelector("div.notification-body").TextContent.Trim().Replace("\n\t", " ");
@ -190,7 +190,7 @@ namespace Jackett.Common.Indexers
{"showrows", "50"} {"showrows", "50"}
}; };
var rssPage = await PostDataWithCookies(GetRSSKeyUrl, rssParams, result.Cookies); var rssPage = await PostDataWithCookies(GetRSSKeyUrl, rssParams, result.Cookies);
var match = Regex.Match(rssPage.ContentString, "(?<=secret_key\\=)([a-zA-z0-9]*)"); var match = Regex.Match(rssPage.Content, "(?<=secret_key\\=)([a-zA-z0-9]*)");
configData.RSSKey.Value = match.Success ? match.Value : string.Empty; configData.RSSKey.Value = match.Success ? match.Value : string.Empty;
if (string.IsNullOrWhiteSpace(configData.RSSKey.Value)) if (string.IsNullOrWhiteSpace(configData.RSSKey.Value))
throw new Exception("Failed to get RSS Key"); throw new Exception("Failed to get RSS Key");
@ -238,7 +238,7 @@ namespace Jackett.Common.Indexers
try try
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();
var dom = parser.ParseDocument(searchPage.ContentString); var dom = parser.ParseDocument(searchPage.Content);
var rows = dom.QuerySelectorAll("table#sortabletable > tbody > tr:has(div > a[href*=\"details.php?id=\"])"); var rows = dom.QuerySelectorAll("table#sortabletable > tbody > tr:has(div > a[href*=\"details.php?id=\"])");
foreach (var row in rows) foreach (var row in rows)
{ {
@ -290,7 +290,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(searchPage.ContentString, ex); OnParseError(searchPage.Content, ex);
} }
if (!CookieHeader.Trim().Equals(prevCook.Trim())) if (!CookieHeader.Trim().Equals(prevCook.Trim()))

View File

@ -490,10 +490,10 @@ namespace Jackett.Common.Indexers
// Request our first page // Request our first page
var results = await webclient.GetString(myIndexRequest); var results = await webclient.GetString(myIndexRequest);
if (results.Status == HttpStatusCode.InternalServerError) // See issue #2110 if (results.Status == HttpStatusCode.InternalServerError) // See issue #2110
throw new Exception("Internal Server Error (" + results.ContentString + "), probably you reached the API limits, please reduce the number of queries"); throw new Exception("Internal Server Error (" + results.Content + "), probably you reached the API limits, please reduce the number of queries");
// Return results from tracker // Return results from tracker
return results.ContentString; return results.Content;
} }
/// <summary> /// <summary>

View File

@ -104,8 +104,8 @@ namespace Jackett.Common.Indexers
try try
{ {
// returned content might start with an html error message, remove it first // returned content might start with an html error message, remove it first
var jsonStart = response.ContentString.IndexOf('{'); var jsonStart = response.Content.IndexOf('{');
var jsonContentStr = response.ContentString.Remove(0, jsonStart); var jsonContentStr = response.Content.Remove(0, jsonStart);
var jsonContent = JObject.Parse(jsonContentStr); var jsonContent = JObject.Parse(jsonContentStr);
@ -209,7 +209,7 @@ namespace Jackett.Common.Indexers
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(response.ContentString, ex); OnParseError(response.Content, ex);
} }
return releases; return releases;

View File

@ -38,7 +38,7 @@ namespace Jackett.Common.Services
Encoding = Encoding.UTF8 Encoding = Encoding.UTF8
}; };
var result = await WebClient.GetString(request); var result = await WebClient.GetString(request);
var movie = JsonConvert.DeserializeObject<Movie>(result.ContentString); var movie = JsonConvert.DeserializeObject<Movie>(result.Content);
return movie; return movie;
} }

View File

@ -126,7 +126,7 @@ namespace Jackett.Common.Services
logger.Error("Failed to get the release list: " + response.Status); logger.Error("Failed to get the release list: " + response.Status);
} }
var releases = JsonConvert.DeserializeObject<List<Release>>(response.ContentString); var releases = JsonConvert.DeserializeObject<List<Release>>(response.Content);
if (!serverConfig.UpdatePrerelease) if (!serverConfig.UpdatePrerelease)
{ {

View File

@ -152,13 +152,13 @@ namespace Jackett.Common.Utils.Clients
if (result.Content != null) if (result.Content != null)
decodedContent = encoding.GetString(result.Content); decodedContent = encoding.GetString(result.Content);
stringResult.ContentString = decodedContent; stringResult.Content = decodedContent;
logger.Debug(string.Format("WebClient({0}): Returning {1} => {2}", ClientType, result.Status, (result.IsRedirect ? result.RedirectingTo + " " : "") + (decodedContent == null ? "<NULL>" : decodedContent))); logger.Debug(string.Format("WebClient({0}): Returning {1} => {2}", ClientType, result.Status, (result.IsRedirect ? result.RedirectingTo + " " : "") + (decodedContent == null ? "<NULL>" : decodedContent)));
if (stringResult.Headers.TryGetValue("server", out var server)) if (stringResult.Headers.TryGetValue("server", out var server))
{ {
if (server[0] == "cloudflare-nginx") if (server[0] == "cloudflare-nginx")
stringResult.ContentString = BrowserUtil.DecodeCloudFlareProtectedEmailFromHTML(stringResult.ContentString); stringResult.Content = BrowserUtil.DecodeCloudFlareProtectedEmailFromHTML(stringResult.Content);
} }
return stringResult; return stringResult;
} }

View File

@ -2,6 +2,6 @@ namespace Jackett.Common.Utils.Clients
{ {
public class WebClientStringResult : BaseWebResult public class WebClientStringResult : BaseWebResult
{ {
public string ContentString { get; set; } public string Content { get; set; }
} }
} }

View File

@ -73,18 +73,18 @@ namespace Jackett.Server
// TODO: fix deprecation warning (remove #pragma to see the build warning) // TODO: fix deprecation warning (remove #pragma to see the build warning)
Mapper.Initialize(cfg => Mapper.Initialize(cfg =>
{ {
cfg.CreateMap<WebClientByteResult, WebClientStringResult>().ForMember(x => x.ContentString, opt => opt.Ignore()).AfterMap((be, str) => cfg.CreateMap<WebClientByteResult, WebClientStringResult>().ForMember(x => x.Content, opt => opt.Ignore()).AfterMap((be, str) =>
{ {
var encoding = be.Request.Encoding ?? Encoding.UTF8; var encoding = be.Request.Encoding ?? Encoding.UTF8;
str.ContentString = encoding.GetString(be.Content); str.Content = encoding.GetString(be.Content);
}); });
cfg.CreateMap<WebClientStringResult, WebClientByteResult>().ForMember(x => x.Content, opt => opt.Ignore()).AfterMap((str, be) => cfg.CreateMap<WebClientStringResult, WebClientByteResult>().ForMember(x => x.Content, opt => opt.Ignore()).AfterMap((str, be) =>
{ {
if (!string.IsNullOrEmpty(str.ContentString)) if (!string.IsNullOrEmpty(str.Content))
{ {
var encoding = str.Request.Encoding ?? Encoding.UTF8; var encoding = str.Request.Encoding ?? Encoding.UTF8;
be.Content = encoding.GetBytes(str.ContentString); be.Content = encoding.GetBytes(str.Content);
} }
}); });