From 125298425a0988821e37eda38cee2ae2f0b24141 Mon Sep 17 00:00:00 2001 From: Cory Date: Fri, 20 Mar 2020 14:22:56 -0500 Subject: [PATCH] core: refactor http webclient part 10 #8529 (#7729) Move WebResult String and Byte properties to base class --- src/Jackett.Common/Indexers/Abnormal.cs | 2 +- src/Jackett.Common/Indexers/AniDUB.cs | 2 +- src/Jackett.Common/Indexers/BJShare.cs | 2 +- src/Jackett.Common/Indexers/BaseIndexer.cs | 16 +++++++------- src/Jackett.Common/Indexers/BitHDTV.cs | 2 +- .../Indexers/CardigannIndexer.cs | 10 ++++----- src/Jackett.Common/Indexers/Cinecalidad.cs | 2 +- src/Jackett.Common/Indexers/CorsaroRed.cs | 2 +- src/Jackett.Common/Indexers/DanishBits.cs | 2 +- .../Indexers/InternetArchive.cs | 2 +- src/Jackett.Common/Indexers/LostFilm.cs | 2 +- src/Jackett.Common/Indexers/NCore.cs | 2 +- src/Jackett.Common/Indexers/NorBits.cs | 10 ++++----- src/Jackett.Common/Indexers/NordicBits.cs | 10 ++++----- src/Jackett.Common/Indexers/Partis.cs | 2 +- src/Jackett.Common/Indexers/SceneTime.cs | 2 +- src/Jackett.Common/Indexers/Shazbat.cs | 4 ++-- src/Jackett.Common/Indexers/SolidTorrents.cs | 2 +- src/Jackett.Common/Indexers/TVStore.cs | 2 +- src/Jackett.Common/Indexers/TorrenTech.cs | 2 +- .../Utils/Clients/BaseWebResult.cs | 21 +++++++++++++++++-- .../Utils/Clients/WebByteResult.cs | 1 - src/Jackett.Common/Utils/Clients/WebClient.cs | 6 +++--- .../Utils/Clients/WebClientResult.cs | 4 +--- src/Jackett.Test/TestWebClient.cs | 8 +++---- 25 files changed, 67 insertions(+), 53 deletions(-) diff --git a/src/Jackett.Common/Indexers/Abnormal.cs b/src/Jackett.Common/Indexers/Abnormal.cs index 0b985aa21..ae8f0da93 100644 --- a/src/Jackett.Common/Indexers/Abnormal.cs +++ b/src/Jackett.Common/Indexers/Abnormal.cs @@ -548,7 +548,7 @@ namespace Jackett.Common.Indexers /// Results from query private async Task queryTracker(string request) { - WebClientStringResult results = null; + BaseWebResult results = null; // Cache mode not enabled or cached file didn't exist for our query output("\nQuerying tracker for results...."); diff --git a/src/Jackett.Common/Indexers/AniDUB.cs b/src/Jackett.Common/Indexers/AniDUB.cs index fe6615363..36f069dce 100644 --- a/src/Jackett.Common/Indexers/AniDUB.cs +++ b/src/Jackett.Common/Indexers/AniDUB.cs @@ -509,7 +509,7 @@ namespace Jackett.Common.Indexers return domDate.NodeValue.Trim(); } - private bool IsAuthorized(WebClientStringResult result) => + private bool IsAuthorized(BaseWebResult result) => result.ContentString.Contains("index.php?action=logout"); private IEnumerable ParseCategories(Uri showUri) diff --git a/src/Jackett.Common/Indexers/BJShare.cs b/src/Jackett.Common/Indexers/BJShare.cs index c0204b071..12c106cac 100644 --- a/src/Jackett.Common/Indexers/BJShare.cs +++ b/src/Jackett.Common/Indexers/BJShare.cs @@ -219,7 +219,7 @@ namespace Jackett.Common.Indexers return title; } - private bool IsSessionIsClosed(WebClientStringResult result) + private bool IsSessionIsClosed(BaseWebResult result) { return result.IsRedirect && result.RedirectingTo.Contains("login.php"); } diff --git a/src/Jackett.Common/Indexers/BaseIndexer.cs b/src/Jackett.Common/Indexers/BaseIndexer.cs index 1883e2eb2..9fad0e186 100644 --- a/src/Jackett.Common/Indexers/BaseIndexer.cs +++ b/src/Jackett.Common/Indexers/BaseIndexer.cs @@ -412,7 +412,7 @@ namespace Jackett.Common.Indexers return response.ContentBytes; } - protected async Task RequestBytesWithCookiesAndRetry(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable> data = null) + protected async Task RequestBytesWithCookiesAndRetry(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable> data = null) { Exception lastException = null; for (var i = 0; i < 3; i++) @@ -432,7 +432,7 @@ namespace Jackett.Common.Indexers throw lastException; } - protected async Task RequestStringWithCookies(string url, string cookieOverride = null, string referer = null, Dictionary headers = null) + protected async Task RequestStringWithCookies(string url, string cookieOverride = null, string referer = null, Dictionary headers = null) { var request = new Utils.Clients.WebRequest() { @@ -452,7 +452,7 @@ namespace Jackett.Common.Indexers return result; } - protected async Task RequestStringWithCookiesAndRetry(string url, string cookieOverride = null, string referer = null, Dictionary headers = null) + protected async Task RequestStringWithCookiesAndRetry(string url, string cookieOverride = null, string referer = null, Dictionary headers = null) { Exception lastException = null; for (var i = 0; i < 3; i++) @@ -472,7 +472,7 @@ namespace Jackett.Common.Indexers throw lastException; } - protected virtual async Task RequestBytesWithCookies(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable> data = null, Dictionary headers = null) + protected virtual async Task RequestBytesWithCookies(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable> data = null, Dictionary headers = null) { var request = new Utils.Clients.WebRequest() { @@ -492,7 +492,7 @@ namespace Jackett.Common.Indexers return result; } - protected async Task PostDataWithCookies(string url, IEnumerable> data, string cookieOverride = null, string referer = null, Dictionary headers = null, string rawbody = null, bool? emulateBrowser = null) + protected async Task PostDataWithCookies(string url, IEnumerable> data, string cookieOverride = null, string referer = null, Dictionary headers = null, string rawbody = null, bool? emulateBrowser = null) { var request = new Utils.Clients.WebRequest() { @@ -514,7 +514,7 @@ namespace Jackett.Common.Indexers return result; } - protected async Task PostDataWithCookiesAndRetry(string url, IEnumerable> data, string cookieOverride = null, string referer = null, Dictionary headers = null, string rawbody = null, bool? emulateBrowser = null) + protected async Task PostDataWithCookiesAndRetry(string url, IEnumerable> data, string cookieOverride = null, string referer = null, Dictionary headers = null, string rawbody = null, bool? emulateBrowser = null) { Exception lastException = null; for (var i = 0; i < 3; i++) @@ -534,7 +534,7 @@ namespace Jackett.Common.Indexers throw lastException; } - protected async Task RequestLoginAndFollowRedirect(string url, IEnumerable> data, string cookies, bool returnCookiesFromFirstCall, string redirectUrlOverride = null, string referer = null, bool accumulateCookies = false) + protected async Task RequestLoginAndFollowRedirect(string url, IEnumerable> data, string cookies, bool returnCookiesFromFirstCall, string redirectUrlOverride = null, string referer = null, bool accumulateCookies = false) { var request = new Utils.Clients.WebRequest() { @@ -566,7 +566,7 @@ namespace Jackett.Common.Indexers return response; } - protected void CheckTrackerDown(WebClientStringResult response) + protected void CheckTrackerDown(BaseWebResult response) { if (response.Status == System.Net.HttpStatusCode.BadGateway || response.Status == System.Net.HttpStatusCode.GatewayTimeout diff --git a/src/Jackett.Common/Indexers/BitHDTV.cs b/src/Jackett.Common/Indexers/BitHDTV.cs index 93afb4207..589d5bc64 100644 --- a/src/Jackett.Common/Indexers/BitHDTV.cs +++ b/src/Jackett.Common/Indexers/BitHDTV.cs @@ -122,7 +122,7 @@ namespace Jackett.Common.Indexers { {"cat", MapTorznabCapsToTrackers(query, true).FirstIfSingleOrDefault("0")} }; - var results = new List(); + var results = new List(); var search = new UriBuilder(SearchUrl); if (query.IsImdbQuery) { diff --git a/src/Jackett.Common/Indexers/CardigannIndexer.cs b/src/Jackett.Common/Indexers/CardigannIndexer.cs index f0dd0ff6c..70bc5923f 100644 --- a/src/Jackett.Common/Indexers/CardigannIndexer.cs +++ b/src/Jackett.Common/Indexers/CardigannIndexer.cs @@ -26,7 +26,7 @@ namespace Jackett.Common.Indexers public class CardigannIndexer : BaseWebIndexer { protected IndexerDefinition Definition; - protected WebClientStringResult landingResult; + protected BaseWebResult landingResult; protected IHtmlDocument landingResultDocument; protected List DefaultCategories = new List(); @@ -455,7 +455,7 @@ namespace Jackett.Common.Indexers return template; } - protected bool checkForError(WebClientStringResult loginResult, IList errorBlocks) + protected bool checkForError(BaseWebResult loginResult, IList errorBlocks) { if (loginResult.Status == HttpStatusCode.Unauthorized) // e.g. used by YGGtorrent throw new ExceptionWithConfigData("401 Unauthorized, check your credentials", configData); @@ -702,7 +702,7 @@ namespace Jackett.Common.Indexers landingResult = null; landingResultDocument = null; - WebClientStringResult loginResult = null; + BaseWebResult loginResult = null; var enctype = form.GetAttribute("enctype"); if (enctype == "multipart/form-data") { @@ -1334,7 +1334,7 @@ namespace Jackett.Common.Indexers logger.Info($"Fetching: {searchUrl}"); // send HTTP request - WebClientStringResult response = null; + BaseWebResult response = null; Dictionary headers = null; if (Search.Headers != null) { @@ -1721,7 +1721,7 @@ namespace Jackett.Common.Indexers return releases; } - protected async Task handleRequest(requestBlock request, Dictionary variables = null, string referer = null) + protected async Task handleRequest(requestBlock request, Dictionary variables = null, string referer = null) { var requestLinkStr = resolvePath(applyGoTemplateText(request.Path, variables)).ToString(); logger.Debug($"CardigannIndexer ({Id}): handleRequest() requestLinkStr= {requestLinkStr}"); diff --git a/src/Jackett.Common/Indexers/Cinecalidad.cs b/src/Jackett.Common/Indexers/Cinecalidad.cs index ffac06989..309087804 100644 --- a/src/Jackett.Common/Indexers/Cinecalidad.cs +++ b/src/Jackett.Common/Indexers/Cinecalidad.cs @@ -142,7 +142,7 @@ namespace Jackett.Common.Indexers return null; } - private List ParseReleases(WebClientStringResult response, TorznabQuery query) + private List ParseReleases(BaseWebResult response, TorznabQuery query) { var releases = new List(); diff --git a/src/Jackett.Common/Indexers/CorsaroRed.cs b/src/Jackett.Common/Indexers/CorsaroRed.cs index 3cfc9895c..e94ea6548 100644 --- a/src/Jackett.Common/Indexers/CorsaroRed.cs +++ b/src/Jackett.Common/Indexers/CorsaroRed.cs @@ -107,7 +107,7 @@ namespace Jackett.Common.Indexers return IndexerConfigurationStatus.Completed; } - private dynamic CheckResponse(WebClientStringResult result) + private dynamic CheckResponse(BaseWebResult result) { try { diff --git a/src/Jackett.Common/Indexers/DanishBits.cs b/src/Jackett.Common/Indexers/DanishBits.cs index 53626f324..8c9d5c2f5 100644 --- a/src/Jackett.Common/Indexers/DanishBits.cs +++ b/src/Jackett.Common/Indexers/DanishBits.cs @@ -65,7 +65,7 @@ namespace Jackett.Common.Indexers return searchString; } - protected override async Task RequestBytesWithCookies(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable> data = null, Dictionary headers = null) + protected override async Task RequestBytesWithCookies(string url, string cookieOverride = null, RequestType method = RequestType.GET, string referer = null, IEnumerable> data = null, Dictionary headers = null) { CookieHeader = null; // Download fill fail with cookies set return await base.RequestBytesWithCookies(url, cookieOverride, method, referer, data, headers); diff --git a/src/Jackett.Common/Indexers/InternetArchive.cs b/src/Jackett.Common/Indexers/InternetArchive.cs index 4bfb5bb62..b9c0c2461 100644 --- a/src/Jackett.Common/Indexers/InternetArchive.cs +++ b/src/Jackett.Common/Indexers/InternetArchive.cs @@ -150,7 +150,7 @@ namespace Jackett.Common.Indexers return releases; } - private JArray ParseResponse(WebClientStringResult result) + private JArray ParseResponse(BaseWebResult result) { try { diff --git a/src/Jackett.Common/Indexers/LostFilm.cs b/src/Jackett.Common/Indexers/LostFilm.cs index d2cff3a96..7edd2dc2a 100644 --- a/src/Jackett.Common/Indexers/LostFilm.cs +++ b/src/Jackett.Common/Indexers/LostFilm.cs @@ -212,7 +212,7 @@ namespace Jackett.Common.Indexers } } - private async Task RequestStringAndRelogin(string url) + private async Task RequestStringAndRelogin(string url) { var results = await RequestStringWithCookies(url); if (results.ContentString.Contains("503 Service")) diff --git a/src/Jackett.Common/Indexers/NCore.cs b/src/Jackett.Common/Indexers/NCore.cs index 1417e11d3..eb697bc91 100644 --- a/src/Jackett.Common/Indexers/NCore.cs +++ b/src/Jackett.Common/Indexers/NCore.cs @@ -207,7 +207,7 @@ namespace Jackett.Common.Indexers return releases; } - private List ParseTorrents(WebClientStringResult results, string episodeString, TorznabQuery query, + private List ParseTorrents(BaseWebResult results, string episodeString, TorznabQuery query, int alreadyFound, int limit, int previouslyParsedOnPage) { var releases = new List(); diff --git a/src/Jackett.Common/Indexers/NorBits.cs b/src/Jackett.Common/Indexers/NorBits.cs index 12a362079..b8ceb32b8 100644 --- a/src/Jackett.Common/Indexers/NorBits.cs +++ b/src/Jackett.Common/Indexers/NorBits.cs @@ -459,9 +459,9 @@ namespace Jackett.Common.Indexers /// /// URL created by Query Builder /// Results from query - private async Task QueryExec(string request) + private async Task QueryExec(string request) { - WebClientStringResult results; + BaseWebResult results; // Switch in we are in DEV mode with Hard Drive Cache or not if (DevMode && CacheMode) @@ -482,9 +482,9 @@ namespace Jackett.Common.Indexers /// /// URL created by Query Builder /// Results from query - private async Task QueryCache(string request) + private async Task QueryCache(string request) { - WebClientStringResult results; + BaseWebResult results; // Create Directory if not exist System.IO.Directory.CreateDirectory(Directory); @@ -519,7 +519,7 @@ namespace Jackett.Common.Indexers /// /// URL created by Query Builder /// Results from query - private async Task QueryTracker(string request) + private async Task QueryTracker(string request) { // Cache mode not enabled or cached file didn't exist for our query Output("\nQuerying tracker for results...."); diff --git a/src/Jackett.Common/Indexers/NordicBits.cs b/src/Jackett.Common/Indexers/NordicBits.cs index e74f342cd..d9a11fdb1 100644 --- a/src/Jackett.Common/Indexers/NordicBits.cs +++ b/src/Jackett.Common/Indexers/NordicBits.cs @@ -530,9 +530,9 @@ namespace Jackett.Common.Indexers /// /// URL created by Query Builder /// Results from query - private async Task QueryExec(string request) + private async Task QueryExec(string request) { - WebClientStringResult results; + BaseWebResult results; // Switch in we are in DEV mode with Hard Drive Cache or not if (DevMode && CacheMode) @@ -553,9 +553,9 @@ namespace Jackett.Common.Indexers /// /// URL created by Query Builder /// Results from query - private async Task QueryCache(string request) + private async Task QueryCache(string request) { - WebClientStringResult results; + BaseWebResult results; // Create Directory if not exist System.IO.Directory.CreateDirectory(Directory); @@ -590,7 +590,7 @@ namespace Jackett.Common.Indexers /// /// URL created by Query Builder /// Results from query - private async Task QueryTracker(string request) + private async Task QueryTracker(string request) { // Cache mode not enabled or cached file didn't exist for our query Output("\nQuerying tracker for results...."); diff --git a/src/Jackett.Common/Indexers/Partis.cs b/src/Jackett.Common/Indexers/Partis.cs index 77deed4c4..1321035c5 100644 --- a/src/Jackett.Common/Indexers/Partis.cs +++ b/src/Jackett.Common/Indexers/Partis.cs @@ -116,7 +116,7 @@ namespace Jackett.Common.Indexers var releases = new List(); //List of releases initialization var searchString = query.GetQueryString(); //get search string from query - WebClientStringResult results = null; + BaseWebResult results = null; var queryCollection = new NameValueCollection(); var catList = MapTorznabCapsToTrackers(query); // map categories from query to indexer specific var categ = string.Join(",", catList); diff --git a/src/Jackett.Common/Indexers/SceneTime.cs b/src/Jackett.Common/Indexers/SceneTime.cs index 7136d4723..6e87c9b84 100644 --- a/src/Jackett.Common/Indexers/SceneTime.cs +++ b/src/Jackett.Common/Indexers/SceneTime.cs @@ -104,7 +104,7 @@ namespace Jackett.Common.Indexers public override async Task GetConfigurationForSetup() { - WebClientStringResult loginPage; + BaseWebResult loginPage; try { loginPage = await RequestStringWithCookies(StartPageUrl, string.Empty); diff --git a/src/Jackett.Common/Indexers/Shazbat.cs b/src/Jackett.Common/Indexers/Shazbat.cs index 363b269a2..4f1895ae3 100644 --- a/src/Jackett.Common/Indexers/Shazbat.cs +++ b/src/Jackett.Common/Indexers/Shazbat.cs @@ -81,7 +81,7 @@ namespace Jackett.Common.Indexers { var releases = new List(); var queryString = query.GetQueryString(); - WebClientStringResult results = null; + BaseWebResult results = null; var searchUrls = new List(); if (!string.IsNullOrWhiteSpace(query.SanitizedSearchTerm)) { @@ -170,7 +170,7 @@ namespace Jackett.Common.Indexers return releases; } - private async Task ReloginIfNecessary(WebClientStringResult response) + private async Task ReloginIfNecessary(BaseWebResult response) { if (response.ContentString.Contains("onclick=\"document.location='logout'\"")) return response; diff --git a/src/Jackett.Common/Indexers/SolidTorrents.cs b/src/Jackett.Common/Indexers/SolidTorrents.cs index e863d161b..ca6e65f9d 100644 --- a/src/Jackett.Common/Indexers/SolidTorrents.cs +++ b/src/Jackett.Common/Indexers/SolidTorrents.cs @@ -76,7 +76,7 @@ namespace Jackett.Common.Indexers return IndexerConfigurationStatus.Completed; } - private JArray CheckResponse(WebClientStringResult result) + private JArray CheckResponse(BaseWebResult result) { try { diff --git a/src/Jackett.Common/Indexers/TVStore.cs b/src/Jackett.Common/Indexers/TVStore.cs index 707c531e3..eae5d7a4c 100644 --- a/src/Jackett.Common/Indexers/TVStore.cs +++ b/src/Jackett.Common/Indexers/TVStore.cs @@ -119,7 +119,7 @@ namespace Jackett.Common.Indexers /// Number of the already found torrents.(used for limit) /// The limit to the number of torrents to download /// Current position in parsed results - private async Task> ParseTorrentsAsync(WebClientStringResult results, int alreadyFound, int limit, + private async Task> ParseTorrentsAsync(BaseWebResult results, int alreadyFound, int limit, int previouslyParsedOnPage) { var releases = new List(); diff --git a/src/Jackett.Common/Indexers/TorrenTech.cs b/src/Jackett.Common/Indexers/TorrenTech.cs index f78f48247..62cb0873e 100644 --- a/src/Jackett.Common/Indexers/TorrenTech.cs +++ b/src/Jackett.Common/Indexers/TorrenTech.cs @@ -76,7 +76,7 @@ namespace Jackett.Common.Indexers var releases = new List(); var searchString = query.GetQueryString(); - WebClientStringResult results = null; + BaseWebResult results = null; var queryCollection = new NameValueCollection { { "act", "search" }, diff --git a/src/Jackett.Common/Utils/Clients/BaseWebResult.cs b/src/Jackett.Common/Utils/Clients/BaseWebResult.cs index ed171261b..fbd43feef 100644 --- a/src/Jackett.Common/Utils/Clients/BaseWebResult.cs +++ b/src/Jackett.Common/Utils/Clients/BaseWebResult.cs @@ -8,6 +8,7 @@ namespace Jackett.Common.Utils.Clients { public abstract class BaseWebResult { + private string _contentString; private Encoding _encoding; public Encoding Encoding @@ -20,7 +21,8 @@ namespace Jackett.Common.Utils.Clients _encoding = Request.Encoding; else if (Headers.ContainsKey("content-type")) { - var charsetRegexMatch = Regex.Match(Headers["content-type"][0], @"charset=([\w-]+)", RegexOptions.Compiled); + var charsetRegexMatch = Regex.Match( + Headers["content-type"][0], @"charset=([\w-]+)", RegexOptions.Compiled); if (charsetRegexMatch.Success) { var charset = charsetRegexMatch.Groups[1].Value; @@ -36,19 +38,34 @@ namespace Jackett.Common.Utils.Clients } _encoding ??= Encoding.UTF8; - return _encoding; } set => _encoding = value; } + public byte[] ContentBytes { get; set; } public HttpStatusCode Status { get; set; } public string Cookies { get; set; } public string RedirectingTo { get; set; } public WebRequest Request { get; set; } + public Dictionary Headers { get; protected set; } = new Dictionary(StringComparer.OrdinalIgnoreCase); + public string ContentString + { + get + { + if (_contentString != null) + return _contentString; + if (ContentBytes == null) + return null; + _contentString = Encoding.GetString(ContentBytes); + return _contentString; + } + set => _contentString = value; + } + public bool IsRedirect => Status == HttpStatusCode.Redirect || Status == HttpStatusCode.RedirectKeepVerb || Status == HttpStatusCode.RedirectMethod || diff --git a/src/Jackett.Common/Utils/Clients/WebByteResult.cs b/src/Jackett.Common/Utils/Clients/WebByteResult.cs index 350eea264..5c3890b31 100644 --- a/src/Jackett.Common/Utils/Clients/WebByteResult.cs +++ b/src/Jackett.Common/Utils/Clients/WebByteResult.cs @@ -2,6 +2,5 @@ namespace Jackett.Common.Utils.Clients { public class WebClientByteResult : BaseWebResult { - public byte[] ContentBytes { get; set; } } } diff --git a/src/Jackett.Common/Utils/Clients/WebClient.cs b/src/Jackett.Common/Utils/Clients/WebClient.cs index 03f1d127f..c36005dbf 100644 --- a/src/Jackett.Common/Utils/Clients/WebClient.cs +++ b/src/Jackett.Common/Utils/Clients/WebClient.cs @@ -186,7 +186,7 @@ namespace Jackett.Common.Utils.Clients return; } - public virtual async Task GetBytes(WebRequest request) + public virtual async Task GetBytes(WebRequest request) { logger.Debug(string.Format("WebClient({0}).GetBytes(Url:{1})", ClientType, request.Url)); PrepareRequest(request); @@ -198,7 +198,7 @@ namespace Jackett.Common.Utils.Clients return result; } - public virtual async Task GetString(WebRequest request) + public virtual async Task GetString(WebRequest request) { logger.Debug(string.Format("WebClient({0}).GetString(Url:{1})", ClientType, request.Url)); PrepareRequest(request); @@ -206,7 +206,7 @@ namespace Jackett.Common.Utils.Clients var result = await Run(request); lastRequest = DateTime.Now; result.Request = request; - WebClientStringResult stringResult = result; + BaseWebResult stringResult = result; logger.Debug(string.Format("WebClient({0}): Returning {1} => {2}", ClientType, result.Status, (result.IsRedirect ? result.RedirectingTo + " " : "") + (stringResult.ContentString ?? ""))); diff --git a/src/Jackett.Common/Utils/Clients/WebClientResult.cs b/src/Jackett.Common/Utils/Clients/WebClientResult.cs index b77e8ee08..5d0c18a48 100644 --- a/src/Jackett.Common/Utils/Clients/WebClientResult.cs +++ b/src/Jackett.Common/Utils/Clients/WebClientResult.cs @@ -2,11 +2,9 @@ namespace Jackett.Common.Utils.Clients { public class WebClientStringResult : BaseWebResult { - public string ContentString { get; set; } - public static implicit operator WebClientStringResult(WebClientByteResult br) => new WebClientStringResult() { - ContentString = br.ContentBytes == null ? null : br.Encoding.GetString(br.ContentBytes), + ContentBytes = br.ContentBytes, Cookies = br.Cookies, Encoding = br.Encoding, Headers = br.Headers, diff --git a/src/Jackett.Test/TestWebClient.cs b/src/Jackett.Test/TestWebClient.cs index 381df1a16..5048ca4d2 100644 --- a/src/Jackett.Test/TestWebClient.cs +++ b/src/Jackett.Test/TestWebClient.cs @@ -11,8 +11,8 @@ namespace Jackett.Test { public class TestWebClient : WebClient { - private readonly Dictionary> byteCallbacks = new Dictionary>(); - private readonly Dictionary> stringCallbacks = new Dictionary>(); + private readonly Dictionary> byteCallbacks = new Dictionary>(); + private readonly Dictionary> stringCallbacks = new Dictionary>(); public TestWebClient(IProcessService p, Logger l, IConfigurationService c, ServerConfig sc) : base(p: p, @@ -26,9 +26,9 @@ namespace Jackett.Test public void RegisterStringCall(WebRequest req, Func f) => stringCallbacks.Add(req, f); - public override Task GetBytes(WebRequest request) => Task.FromResult(byteCallbacks.Where(r => r.Key.Equals(request)).First().Value.Invoke(request)); + public override Task GetBytes(WebRequest request) => Task.FromResult(byteCallbacks.Where(r => r.Key.Equals(request)).First().Value.Invoke(request)); - public override Task GetString(WebRequest request) => Task.FromResult(stringCallbacks.Where(r => r.Key.Equals(request)).First().Value.Invoke(request)); + public override Task GetString(WebRequest request) => Task.FromResult(stringCallbacks.Where(r => r.Key.Equals(request)).First().Value.Invoke(request)); public override void Init() {