Feature/netcore preparation (#2072)

* Use platform detection that works on mono 4.6+

* Move to use package reference for restoring nuget packages.

* DateTimeRoutines does not have Nuget packages that support .NET Standard (and therefore .NET Core). We will have to include them for now until we can get rid of this dependency.

* Start spliting some interfaces into their own files - this will help by allowing us to split them out in the future into a seperate project so the actual implementations can stay within their respective architectures when required

* Move out common libraries

* Few more tidy up tasks to get things working with .NET Standard

* Restructure the solution layout

* Encoding work to reduce rework later on platforms without Windows codepages (or require compliance with RFC1345)

* Move folder structure around to have more natural layout of the solutions

* DI server configuration to get rid of "temporary" hack and dependency circle for serverservice

* Make all encoding consistent to match the expected encoding casing for earlier versions of mono.
This commit is contained in:
Nathan Holland 2017-11-05 22:42:03 +13:00 committed by flightlevel
parent 47a2ffa313
commit 571c52a0f2
235 changed files with 967 additions and 1001 deletions

View File

@ -295,7 +295,9 @@ namespace CurlSharp
_multiInfo = null;
throw new NotImplementedException("CurlMulti.InfoRead()");
#endif
#pragma warning disable CS0162 // Unreachable code detected when not compiling with the shim
return _multiInfo;
#pragma warning restore CS0162 // Unreachable code detected when not compiling with the shim
}
}
}

View File

@ -10,6 +10,7 @@ using System.Net.Http.Headers;
using Jackett.Utils;
using System.Net;
using System.Threading;
using Jacket.Common;
namespace Jackett
{
@ -138,7 +139,7 @@ namespace Jackett
}
}
if (Startup.DoSSLFix == true)
if (JackettStartup.DoSSLFix == true)
{
// http://stackoverflow.com/questions/31107851/how-to-fix-curl-35-cannot-communicate-securely-with-peer-no-common-encryptio
// https://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html
@ -147,16 +148,16 @@ namespace Jackett
easy.ForbidReuse = true;
}
if (Startup.IgnoreSslErrors == true)
if (JackettStartup.IgnoreSslErrors == true)
{
easy.SetOpt(CurlOption.SslVerifyhost, false);
easy.SetOpt(CurlOption.SslVerifyPeer, false);
}
if (Engine.Server.Config.Proxy != null)
if (JackettStartup.ProxyConnection != null)
{
easy.SetOpt(CurlOption.HttpProxyTunnel, 1);
easy.SetOpt(CurlOption.Proxy, Engine.Server.Config.Proxy);
easy.SetOpt(CurlOption.Proxy, JackettStartup.ProxyConnection);
}
easy.Perform();
@ -173,7 +174,7 @@ namespace Jackett
var headerBytes = Combine(headerBuffers.ToArray());
var headerString = Encoding.UTF8.GetString(headerBytes);
if (Startup.ProxyConnection != null)
if (JackettStartup.ProxyConnection != null)
{
var firstcrlf = headerString.IndexOf("\r\n\r\n");
var secondcrlf = headerString.IndexOf("\r\n\r\n", firstcrlf + 1);

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Net;
using System.Text;
namespace Jacket.Common.Helpers
{
public static class WebUtilityHelpers
{
public static string UrlEncode(string searchString, Encoding encoding)
{
if (string.IsNullOrEmpty(searchString))
{
return string.Empty;
}
byte[] bytes = encoding.GetBytes(searchString);
return encoding.GetString(WebUtility.UrlEncodeToBytes(bytes, 0, bytes.Length));
}
public static string UrlDecode(string searchString, Encoding encoding)
{
if (string.IsNullOrEmpty(searchString))
{
return string.Empty;
}
var inputBytes = encoding.GetBytes(searchString);
return encoding.GetString(WebUtility.UrlDecodeToBytes(inputBytes, 0, inputBytes.Length));
}
}
}

View File

@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace Jackett
{
class IndexerException : Exception
public class IndexerException : Exception
{
public IIndexer Indexer { get; protected set; }

View File

@ -25,7 +25,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public SevenTor(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public SevenTor(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "7tor",
description: "7Tor is a RUSSIAN Semi-Private site for MOVIES / TV / GENERAL",
link: "https://7tor.org/",

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
@ -44,7 +45,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Abnormal(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public Abnormal(IIndexerConfigurationService configService, Utils.Clients.WebClient w, Logger l, IProtectionService ps)
: base(
name: "Abnormal",
description: "General French Private Tracker",
@ -411,12 +412,12 @@ namespace Jackett.Indexers
if (categoriesList.Last() == category)
{
// Adding previous categories to URL with latest category
parameters.Add(Uri.EscapeDataString("cat[]"), HttpUtility.UrlEncode(category) + categories);
parameters.Add(Uri.EscapeDataString("cat[]"), WebUtility.UrlEncode(category) + categories);
}
else
{
// Build categories parameter
categories += "&" + Uri.EscapeDataString("cat[]") + "=" + HttpUtility.UrlEncode(category);
categories += "&" + Uri.EscapeDataString("cat[]") + "=" + WebUtility.UrlEncode(category);
}
}
@ -424,11 +425,11 @@ namespace Jackett.Indexers
if (!string.IsNullOrWhiteSpace(term))
{
// Add search term
parameters.Add("search", HttpUtility.UrlEncode(term));
parameters.Add("search", WebUtility.UrlEncode(term));
}
else
{
parameters.Add("search", HttpUtility.UrlEncode("%"));
parameters.Add("search", WebUtility.UrlEncode("%"));
// Showing all torrents (just for output function)
term = "all";
}
@ -733,7 +734,7 @@ namespace Jackett.Indexers
goto case "debug";
case "debug":
// Only if Debug Level Enabled on Jackett
if (Engine.Logger.IsDebugEnabled)
if (logger.IsDebugEnabled)
{
logger.Debug(message);
}

View File

@ -13,6 +13,7 @@ using Jackett.Utils.Clients;
using System.Text.RegularExpressions;
using Jackett.Models.IndexerConfig;
using Jackett.Services.Interfaces;
using System.Net;
namespace Jackett.Indexers
{
@ -27,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public AvistazTracker(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService, string name, string desc, string link)
public AvistazTracker(IIndexerConfigurationService configService, Utils.Clients.WebClient webClient, Logger logger, IProtectionService protectionService, string name, string desc, string link)
: base(name: name,
description: desc,
link: link,
@ -38,7 +39,7 @@ namespace Jackett.Indexers
p: protectionService,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
AddCategoryMapping(1, TorznabCatType.Movies);
@ -85,7 +86,7 @@ namespace Jackett.Indexers
}
var episodeSearchUrl = string.Format(SearchUrl, category, HttpUtility.UrlEncode(query.GetQueryString()));
var episodeSearchUrl = string.Format(SearchUrl, category, WebUtility.UrlEncode(query.GetQueryString()));
var response = await RequestStringWithCookiesAndRetry(episodeSearchUrl);
if (response.IsRedirect)

View File

@ -24,7 +24,7 @@ namespace Jackett.Indexers.Abstract
set { base.configData = value; }
}
public CouchPotatoTracker(IIndexerConfigurationService configService, IWebClient client, Logger logger, IProtectionService p, ConfigurationDataUserPasskey configData, string name, string description, string link, string endpoint)
public CouchPotatoTracker(IIndexerConfigurationService configService, WebClient client, Logger logger, IProtectionService p, ConfigurationDataUserPasskey configData, string name, string description, string link, string endpoint)
: base(name: name,
description: description,
link: link,

View File

@ -14,6 +14,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Net;
namespace Jackett.Indexers.Abstract
{
@ -30,7 +31,7 @@ namespace Jackett.Indexers.Abstract
set { base.configData = value; }
}
public GazelleTracker(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService, string name, string desc, string link)
public GazelleTracker(IIndexerConfigurationService configService, Utils.Clients.WebClient webClient, Logger logger, IProtectionService protectionService, string name, string desc, string link)
: base(name: name,
description: desc,
link: link,
@ -41,7 +42,7 @@ namespace Jackett.Indexers.Abstract
p: protectionService,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
@ -120,8 +121,8 @@ namespace Jackett.Indexers.Abstract
foreach (JObject r in json["response"]["results"])
{
var groupTime = DateTimeUtil.UnixTimestampToDateTime(long.Parse((string)r["groupTime"]));
var groupName = HttpUtility.HtmlDecode((string)r["groupName"]);
var artist = HttpUtility.HtmlDecode((string)r["artist"]);
var groupName = WebUtility.HtmlDecode((string)r["groupName"]);
var artist = WebUtility.HtmlDecode((string)r["artist"]);
var cover = (string)r["cover"];
var tags = r["tags"].ToList();
var groupYear = (string)r["groupYear"];
@ -192,7 +193,7 @@ namespace Jackett.Indexers.Abstract
var format = (string)torrent["format"];
if (!string.IsNullOrEmpty(format))
flags.Add(HttpUtility.HtmlDecode(format));
flags.Add(WebUtility.HtmlDecode(format));
var encoding = (string)torrent["encoding"];
if (!string.IsNullOrEmpty(encoding))
@ -214,7 +215,7 @@ namespace Jackett.Indexers.Abstract
if (torrent["remastered"] != null && (bool)torrent["remastered"])
{
var remasterYear = (string)torrent["remasterYear"];
var remasterTitle = HttpUtility.HtmlDecode((string)torrent["remasterTitle"]);
var remasterTitle = WebUtility.HtmlDecode((string)torrent["remasterTitle"]);
flags.Add(remasterYear + (!string.IsNullOrEmpty(remasterTitle) ? " " + remasterTitle : ""));
}

View File

@ -8,7 +8,7 @@ namespace Jackett.Indexers
{
public class AlphaRatio : GazelleTracker
{
public AlphaRatio(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public AlphaRatio(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "AlphaRatio",
desc: "AlphaRatio (AR) is a Private Torrent Tracker for 0DAY / GENERAL",
link: "https://alpharatio.cc/",

View File

@ -27,7 +27,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Andraste(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public Andraste(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "Andraste",
description: "A German general tracker.",
link: "https://andraste.io/",

View File

@ -39,7 +39,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public AnimeBytes(IIndexerConfigurationService configService, IWebClient client, Logger l, IProtectionService ps)
public AnimeBytes(IIndexerConfigurationService configService, Utils.Clients.WebClient client, Logger l, IProtectionService ps)
: base(name: "AnimeBytes",
link: "https://animebytes.tv/",
description: "Powered by Tentacles",
@ -58,7 +58,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataAnimeBytes())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";
@ -165,7 +165,7 @@ namespace Jackett.Indexers
private async Task<IEnumerable<ReleaseInfo>> GetResults(TorznabQuery query, SearchType searchType, string searchTerm)
{
var cleanSearchTerm = HttpUtility.UrlEncode(searchTerm);
var cleanSearchTerm = WebUtility.UrlEncode(searchTerm);
// The result list
var releases = new List<ReleaseInfo>();

View File

@ -28,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public AnimeTorrents(IIndexerConfigurationService configService, IWebClient c, Logger l, IProtectionService ps)
public AnimeTorrents(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps)
: base(name: "AnimeTorrents",
description: "Definitive source for anime and manga",
link: "https://animetorrents.me/",
@ -39,7 +39,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -6,7 +6,7 @@ namespace Jackett.Indexers
{
public class Avistaz : AvistazTracker
{
public Avistaz(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public Avistaz(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "Avistaz",
desc: "Aka AsiaTorrents",
link: "https://avistaz.to/",

View File

@ -31,7 +31,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public BB(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public BB(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "bB",
description: "BaconBits (bB) is a Private Torrent Tracker for 0DAY / GENERAL",
link: StringUtil.FromBase64("aHR0cHM6Ly9iYWNvbmJpdHMub3JnLw=="),
@ -42,7 +42,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -29,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public BJShare(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public BJShare(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "BJ-Share",
description: "A brazilian tracker.",
link: "https://bj-share.me/",
@ -40,7 +40,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "pt-br";
Type = "private";

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
@ -26,7 +27,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public BakaBT(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public BakaBT(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
: base(name: "BakaBT",
description: "Anime Comunity",
link: "https://bakabt.me/",
@ -83,7 +84,7 @@ namespace Jackett.Indexers
var releases = new List<ReleaseInfo>();
var searchString = query.SanitizedSearchTerm;
var episodeSearchUrl = SearchUrl + HttpUtility.UrlEncode(searchString);
var episodeSearchUrl = SearchUrl + WebUtility.UrlEncode(searchString);
var response = await RequestStringWithCookiesAndRetry(episodeSearchUrl);
try

View File

@ -260,7 +260,7 @@ namespace Jackett.Indexers
public abstract class BaseWebIndexer : BaseIndexer, IWebIndexer
{
protected BaseWebIndexer(string name, string link, string description, IIndexerConfigurationService configService, IWebClient client, Logger logger, ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null, string downloadBase = null)
protected BaseWebIndexer(string name, string link, string description, IIndexerConfigurationService configService, WebClient client, Logger logger, ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null, string downloadBase = null)
: base(name, link, description, configService, logger, configData, p)
{
this.webclient = client;
@ -272,7 +272,7 @@ namespace Jackett.Indexers
}
// minimal constructor used by e.g. cardigann generic indexer
protected BaseWebIndexer(IIndexerConfigurationService configService, IWebClient client, Logger logger, IProtectionService p)
protected BaseWebIndexer(IIndexerConfigurationService configService, WebClient client, Logger logger, IProtectionService p)
: base("", "/", "", configService, logger, null, p)
{
this.webclient = client;
@ -739,13 +739,13 @@ namespace Jackett.Indexers
public Encoding Encoding { get; protected set; }
private List<CategoryMapping> categoryMapping = new List<CategoryMapping>();
protected IWebClient webclient;
protected WebClient webclient;
protected readonly string downloadUrlBase = "";
}
public abstract class BaseCachingWebIndexer : BaseWebIndexer
{
protected BaseCachingWebIndexer(string name, string link, string description, IIndexerConfigurationService configService, IWebClient client, Logger logger, ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null, string downloadBase = null)
protected BaseCachingWebIndexer(string name, string link, string description, IIndexerConfigurationService configService, WebClient client, Logger logger, ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null, string downloadBase = null)
: base(name, link, description, configService, client, logger, configData, p, caps, downloadBase)
{
}

View File

@ -26,7 +26,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public BeyondHD(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public BeyondHD(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "BeyondHD",
description: "Without BeyondHD, your HDTV is just a TV",
link: "https://beyond-hd.me/",
@ -37,7 +37,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataLoginLink())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -27,7 +27,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public BitCityReloaded(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public BitCityReloaded(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "Bit-City Reloaded",
description: "A German general tracker.",
link: "https://bc-reloaded.net/",

View File

@ -29,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public BitHdtv(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public BitHdtv(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "BIT-HDTV",
description: "Home of high definition invites",
link: "https://www.bit-hdtv.com/",

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@ -32,7 +33,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public BitMeTV(IIndexerConfigurationService configService, IWebClient c, Logger l, IProtectionService ps)
public BitMeTV(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l, IProtectionService ps)
: base(name: "BitMeTV",
description: "TV Episode specialty tracker",
link: "http://www.bitmetv.org/",
@ -89,7 +90,7 @@ namespace Jackett.Indexers
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
var episodeSearchUrl = string.Format("{0}?search={1}&cat=0&incldead=1", SearchUrl, HttpUtility.UrlEncode(query.GetQueryString()));
var episodeSearchUrl = string.Format("{0}?search={1}&cat=0&incldead=1", SearchUrl, WebUtility.UrlEncode(query.GetQueryString()));
var results = await RequestStringWithCookiesAndRetry(episodeSearchUrl);
try
{

View File

@ -29,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public BitSoup(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public BitSoup(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "BitSoup",
description: "SoupieBits",
link: "https://www.bitsoup.me/",

View File

@ -25,7 +25,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public BroadcastTheNet(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public BroadcastTheNet(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "BroadcastTheNet",
description: "Broadcasthe.net (BTN) is an invite-only torrent tracker focused on TV shows",
link: "https://broadcasthe.net/",

View File

@ -8,7 +8,7 @@ namespace Jackett.Indexers
{
public class BrokenStones : GazelleTracker
{
public BrokenStones(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public BrokenStones(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "BrokenStones",
desc: "Broken Stones is a Private site for MacOS and iOS APPS / GAMES",
link: "https://brokenstones.club/",

View File

@ -17,6 +17,9 @@ using System.Web;
using AngleSharp.Dom;
using AngleSharp.Dom.Html;
using System.Linq;
using System.Net;
using Microsoft.AspNetCore.WebUtilities;
using Jacket.Common.Helpers;
namespace Jackett.Indexers
{
@ -36,7 +39,7 @@ namespace Jackett.Indexers
protected readonly string[] OptionalFileds = new string[] { "imdb", "rageid", "tvdbid", "banner" };
public CardigannIndexer(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps, IndexerDefinition Definition)
public CardigannIndexer(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps, IndexerDefinition Definition)
: base(configService: configService,
client: wc,
logger: l,
@ -827,10 +830,10 @@ namespace Jackett.Indexers
Data = Data.ToUpper();
break;
case "urldecode":
Data = HttpUtility.UrlDecode(Data, Encoding);
Data = WebUtilityHelpers.UrlDecode(Data, Encoding);
break;
case "urlencode":
Data = HttpUtility.UrlEncode(Data, Encoding);
Data = WebUtilityHelpers.UrlEncode(Data, Encoding);
break;
case "timeago":
case "reltime":
@ -1036,7 +1039,7 @@ namespace Jackett.Indexers
// build search URL
// HttpUtility.UrlPathEncode seems to only encode spaces, we use UrlEncode and replace + with %20 as a workaround
var searchUrl = resolvePath(applyGoTemplateText(SearchPath.Path, variables, HttpUtility.UrlEncode).Replace("+", "%20")).AbsoluteUri;
var searchUrl = resolvePath(applyGoTemplateText(SearchPath.Path, variables, WebUtility.UrlEncode).Replace("+", "%20")).AbsoluteUri;
var queryCollection = new List<KeyValuePair<string, string>>();
RequestType method = RequestType.GET;
@ -1058,7 +1061,7 @@ namespace Jackett.Indexers
{
if (Input.Key == "$raw")
{
var rawStr = applyGoTemplateText(Input.Value, variables, HttpUtility.UrlEncode);
var rawStr = applyGoTemplateText(Input.Value, variables, WebUtility.UrlEncode);
foreach (string part in rawStr.Split('&'))
{
var parts = part.Split(new char[] { '=' }, 2);
@ -1467,10 +1470,11 @@ namespace Jackett.Indexers
variables[prefix + ".Port"] = uri.Port.ToString();
variables[prefix + ".PathAndQuery"] = uri.PathAndQuery;
variables[prefix + ".Query"] = uri.Query;
var queryString = HttpUtility.ParseQueryString(uri.Query);
var queryString = QueryHelpers.ParseQuery(uri.Query);
foreach (string key in queryString.Keys)
{
variables[prefix + ".Query." + key] = queryString.Get(key);
//If we have supplied the same query string multiple time, just take the first.
variables[prefix + ".Query." + key] = queryString[key].First();
}
return variables;
}

View File

@ -6,7 +6,7 @@ namespace Jackett.Indexers
{
public class CinemaZ : AvistazTracker
{
public CinemaZ(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public CinemaZ(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "CinemaZ",
desc: "Part of the Avistaz network.",
link: "https://cinemaz.to/",

View File

@ -19,7 +19,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public DanishBits(IIndexerConfigurationService configService, IWebClient c, Logger l, IProtectionService ps)
public DanishBits(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps)
: base(name: "DanishBits",
description: "A danish closed torrent tracker",
link: "https://danishbits.org/",
@ -31,7 +31,7 @@ namespace Jackett.Indexers
configData: new ConfigurationDataUserPasskey("Note about Passkey: This is not your login Password. Find the Passkey by logging into DanishBits with your Browser, and under your account page you'll see your passkey under the 'Personal' section on the left side.")
)
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "da-dk";
Type = "private";

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
@ -11,6 +12,7 @@ using Jackett.Models.IndexerConfig;
using Jackett.Services.Interfaces;
using Jackett.Utils;
using Jackett.Utils.Clients;
using Microsoft.AspNetCore.WebUtilities;
using Newtonsoft.Json.Linq;
using NLog;
@ -27,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Demonoid(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public Demonoid(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
: base(name: "Demonoid",
description: "Demonoid is a Private torrent tracker for 0DAY / TV / MOVIES / GENERAL",
link: "https://www.demonoid.pw/",
@ -38,7 +40,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataRecaptchaLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";
@ -132,7 +134,7 @@ namespace Jackett.Indexers
var releases = new List<ReleaseInfo>();
var trackerCats = MapTorznabCapsToTrackers(query);
var cat = (trackerCats.Count == 1 ? trackerCats.ElementAt(0) : "0");
var episodeSearchUrl = string.Format(SearchUrl, cat, HttpUtility.UrlEncode(query.GetQueryString()));
var episodeSearchUrl = string.Format(SearchUrl, cat, WebUtility.UrlEncode(query.GetQueryString()));
var results = await RequestStringWithCookiesAndRetry(episodeSearchUrl);
if (results.Content.Contains("No torrents found"))
@ -177,7 +179,7 @@ namespace Jackett.Indexers
release.PublishDate = lastDateTime;
var catUrl = rowA.ChildElements.ElementAt(0).FirstElementChild.GetAttribute("href");
var catId = HttpUtility.ParseQueryString(catUrl).Get("category");
var catId = QueryHelpers.ParseQuery(catUrl)["category"].First();
release.Category = MapTrackerCatToNewznab(catId);
var qLink = rowA.ChildElements.ElementAt(1).FirstElementChild.Cq();

View File

@ -27,7 +27,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public DigitalHive(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public DigitalHive(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "DigitalHive",
description: "DigitalHive is one of the oldest general trackers",
link: "https://www.digitalhive.org/",

View File

@ -29,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public EliteTracker(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public EliteTracker(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "Elite-Tracker",
description: "French Torrent Tracker",
link: "https://elite-tracker.net/",
@ -40,7 +40,7 @@ namespace Jackett.Indexers
configData: new ConfigurationDataBasicLogin()
)
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "fr-fr";
Type = "private";

View File

@ -13,7 +13,7 @@ namespace Jackett.Indexers.Newznab
{
public class AnimeTosho : BaseNewznabIndexer
{
public AnimeTosho(IIndexerConfigurationService configService, IWebClient client, Logger logger, IProtectionService p)
public AnimeTosho(IIndexerConfigurationService configService, WebClient client, Logger logger, IProtectionService p)
: base(
"Anime Tosho",
"https://animetosho.org/",

View File

@ -15,7 +15,7 @@ namespace Jackett.Indexers
{
protected abstract Uri FeedUri { get; }
protected BaseFeedIndexer(string name, string link, string description, IIndexerConfigurationService configService, IWebClient client, Logger logger, ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null, string downloadBase = null) : base(name, link, description, configService, client, logger, configData, p, caps, downloadBase)
protected BaseFeedIndexer(string name, string link, string description, IIndexerConfigurationService configService, WebClient client, Logger logger, ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null, string downloadBase = null) : base(name, link, description, configService, client, logger, configData, p, caps, downloadBase)
{
}

View File

@ -13,7 +13,7 @@ namespace Jackett.Indexers
{
public abstract class BaseNewznabIndexer : BaseFeedIndexer
{
protected BaseNewznabIndexer(string name, string link, string description, IIndexerConfigurationService configService, IWebClient client, Logger logger, ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null, string downloadBase = null) : base(name, link, description, configService, client, logger, configData, p, caps, downloadBase)
protected BaseNewznabIndexer(string name, string link, string description, IIndexerConfigurationService configService, WebClient client, Logger logger, ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null, string downloadBase = null) : base(name, link, description, configService, client, logger, configData, p, caps, downloadBase)
{
}

View File

@ -28,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public FileList(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public FileList(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "FileList",
description: "The best Romanian site.",
link: "http://filelist.ro/",
@ -39,7 +39,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataFileList())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "ro-ro";
Type = "private";

View File

@ -25,7 +25,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public FunFile(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public FunFile(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "FunFile",
description: "A general tracker",
link: "https://www.funfile.org/",

View File

@ -3,11 +3,13 @@ using System.Collections.Generic;
using System.Collections.Specialized;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using CsQuery;
using Jacket.Common.Helpers;
using Jackett.Models;
using Jackett.Models.IndexerConfig;
using Jackett.Services.Interfaces;
@ -30,7 +32,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Fuzer(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public Fuzer(IIndexerConfigurationService configService, Utils.Clients.WebClient w, Logger l, IProtectionService ps)
: base(name: "Fuzer",
description: "Fuzer is a private torrent website with israeli torrents.",
link: "https://fuzer.me/",
@ -40,7 +42,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("Windows-1255");
Encoding = Encoding.GetEncoding("windows-1255");
Language = "he-il";
Type = "private";
TorznabCaps.Categories.Clear();
@ -161,7 +163,7 @@ namespace Jackett.Indexers
searchUrl += "?";
if (!string.IsNullOrWhiteSpace(searchString))
{
var strEncoded = HttpUtility.UrlEncode(searchString, Encoding.GetEncoding("Windows-1255"));
var strEncoded = WebUtilityHelpers.UrlEncode(searchString, Encoding);
searchUrl += "&query=" + strEncoded + "&matchquery=any";
}

View File

@ -31,7 +31,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public GFTracker(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public GFTracker(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "GFTracker",
description: "Home of user happiness",
link: "https://www.thegft.org/",

View File

@ -27,7 +27,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public GhostCity(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public GhostCity(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "Ghost City",
description: "A German general tracker",
link: "http://ghostcity.dyndns.info/",
@ -38,7 +38,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "de-de";
Type = "private";

View File

@ -28,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public GimmePeers(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public GimmePeers(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "GimmePeers",
description: "Formerly ILT",
link: "https://www.gimmepeers.com/",

View File

@ -27,7 +27,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public HD4Free(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public HD4Free(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "HD4Free",
description: "A HD trackers",
link: "https://hd4free.xyz/",
@ -38,7 +38,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataRecaptchaLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -8,7 +8,7 @@ namespace Jackett.Indexers
{
public class HDForever : GazelleTracker
{
public HDForever(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public HDForever(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "HD-Forever",
desc: "HD-Forever (HD-F) is a FRENCH Private Torrent Tracker for HD MOVIES",
link: "https://hdf.world/",

View File

@ -10,7 +10,7 @@ namespace Jackett.Indexers
{
public class HDOnly : GazelleTracker
{
public HDOnly(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public HDOnly(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "HD-Only",
desc: "HD-Only (HD-O) is a FRENCH Private Torrent Tracker for HD MOVIES / TV",
link: "https://hd-only.org/",

View File

@ -28,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public HDSpace(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public HDSpace(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "HD-Space",
description: "Sharing The Universe",
link: "https://hd-space.org/",
@ -39,7 +39,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -28,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public HDTorrents(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public HDTorrents(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "HD-Torrents",
description: "HD-Torrents is a private torrent website with HD torrents and strict rules on their content.",
link: "https://hdts.ru/",// Of the accessible domains the .ru seems the most reliable. https://hdts.ru | https://hd-torrents.org | https://hd-torrents.net | https://hd-torrents.me
@ -38,7 +38,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -26,7 +26,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Hardbay(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public Hardbay(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "Hardbay",
description: "Hardbay is a Private Torrent Tracker for HARDSTYLE / HARDCORE ELECTRONIC MUSIC",
link: "https://hardbay.club/",
@ -37,7 +37,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@ -28,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Hebits(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public Hebits(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
: base(name: "Hebits",
description: "The Israeli Tracker",
link: "https://hebits.net/",
@ -85,9 +86,9 @@ namespace Jackett.Indexers
if (!string.IsNullOrWhiteSpace(searchString))
{
searchUrl += "&search=" + HttpUtility.UrlEncode(searchString);
searchUrl += "&search=" + WebUtility.UrlEncode(searchString);
}
string.Format(SearchUrl, HttpUtility.UrlEncode(searchString));
string.Format(SearchUrl, WebUtility.UrlEncode(searchString));
var cats = MapTorznabCapsToTrackers(query);
if (cats.Count > 0)

View File

@ -28,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Hounddawgs(IIndexerConfigurationService configService, IWebClient c, Logger l, IProtectionService ps)
public Hounddawgs(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps)
: base(name: "Hounddawgs",
description: "A danish closed torrent tracker",
link: "https://hounddawgs.org/",
@ -39,7 +39,7 @@ namespace Jackett.Indexers
p: ps,
configData: new NxtGnConfigurationData())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "da-dk";
Type = "private";

View File

@ -29,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public HouseOfTorrents(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public HouseOfTorrents(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "House-of-Torrents",
description: "A general tracker",
link: "https://houseoftorrents.club/",
@ -40,7 +40,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
@ -42,7 +43,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public IPTorrents(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public IPTorrents(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
: base(name: "IPTorrents",
description: "Always a step ahead.",
link: "https://iptorrents.com/",
@ -53,7 +54,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataRecaptchaLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";
@ -267,7 +268,7 @@ namespace Jackett.Indexers
release.PublishDate = DateTimeUtil.FromTimeAgo(dateString);
var qLink = row.ChildElements.ElementAt(3).Cq().Children("a");
release.Link = new Uri(SiteLink + HttpUtility.UrlEncode(qLink.Attr("href").TrimStart('/')));
release.Link = new Uri(SiteLink + WebUtility.UrlEncode(qLink.Attr("href").TrimStart('/')));
var sizeStr = row.ChildElements.ElementAt(5).Cq().Text();
release.Size = ReleaseInfo.GetBytes(sizeStr);

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
@ -28,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public ImmortalSeed(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public ImmortalSeed(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
: base(name: "ImmortalSeed",
description: "ImmortalSeed (iS) is a Private Torrent Tracker for MOVIES / TV / GENERAL",
link: "http://immortalseed.me/",
@ -39,7 +40,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";
@ -96,7 +97,7 @@ namespace Jackett.Indexers
if (!string.IsNullOrWhiteSpace(query.GetQueryString()))
{
searchUrl += string.Format(QueryString, HttpUtility.UrlEncode(query.GetQueryString()));
searchUrl += string.Format(QueryString, WebUtility.UrlEncode(query.GetQueryString()));
}
var results = await RequestStringWithCookiesAndRetry(searchUrl);

View File

@ -83,7 +83,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public LostFilm(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public LostFilm(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "LostFilm.tv",
description: "Unique portal about foreign series",
link: "https://www.lostfilm.tv/",

View File

@ -14,7 +14,7 @@ namespace Jackett.Indexers.Meta
{
public abstract class BaseMetaIndexer : BaseWebIndexer
{
protected BaseMetaIndexer(string name, string description, IFallbackStrategyProvider fallbackStrategyProvider, IResultFilterProvider resultFilterProvider, IIndexerConfigurationService configService, IWebClient webClient, Logger logger, ConfigurationData configData, IProtectionService p, Func<IIndexer, bool> filter)
protected BaseMetaIndexer(string name, string description, IFallbackStrategyProvider fallbackStrategyProvider, IResultFilterProvider resultFilterProvider, IIndexerConfigurationService configService, WebClient webClient, Logger logger, ConfigurationData configData, IProtectionService p, Func<IIndexer, bool> filter)
: base(name, "http://127.0.0.1/", description, configService, webClient, logger, configData, p, null, null)
{
filterFunc = filter;

View File

@ -12,7 +12,7 @@ using Jackett.Models.IndexerConfig;
namespace Jackett.Indexers.Meta
{
class AggregateIndexer : BaseMetaIndexer
public class AggregateIndexer : BaseMetaIndexer
{
public override string ID
{
@ -21,7 +21,7 @@ namespace Jackett.Indexers.Meta
return "all";
}
}
public AggregateIndexer(IFallbackStrategyProvider fallbackStrategyProvider, IResultFilterProvider resultFilterProvider, IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public AggregateIndexer(IFallbackStrategyProvider fallbackStrategyProvider, IResultFilterProvider resultFilterProvider, IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base("AggregateSearch", "This feed includes all configured trackers", fallbackStrategyProvider, resultFilterProvider, configService, wc, l, new ConfigurationData(), ps, x => true)
{
}

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@ -28,7 +29,7 @@ namespace Jackett.Indexers
private ConfigurationDataBasicLogin ConfigData => (ConfigurationDataBasicLogin)configData;
public MoreThanTV(IIndexerConfigurationService configService, IWebClient c, Logger l, IProtectionService ps)
public MoreThanTV(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l, IProtectionService ps)
: base(name: "MoreThanTV",
description: "ROMANIAN Private Torrent Tracker for TV / MOVIES, and the internal tracker for the release group DRACULA.",
link: "https://www.morethan.tv/",
@ -40,7 +41,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";
}
@ -101,7 +102,7 @@ namespace Jackett.Indexers
if (Array.IndexOf(categories, TorznabCatType.TV.ID) > -1)
extra += "&filter_cat%5B2%5D=1";
return SiteLink + $"torrents.php?searchstr={HttpUtility.UrlEncode(searchQuery)}&tags_type=1&order_by=time&order_way=desc&group_results=1{extra}&action=basic&searchsubmit=1";
return SiteLink + $"torrents.php?searchstr={WebUtility.UrlEncode(searchQuery)}&tags_type=1&order_by=time&order_way=desc&group_results=1{extra}&action=basic&searchsubmit=1";
}
private async Task GetReleases(ICollection<ReleaseInfo> releases, TorznabQuery query, string searchQuery)

View File

@ -26,7 +26,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Myanonamouse(IIndexerConfigurationService configService, IWebClient c, Logger l, IProtectionService ps)
public Myanonamouse(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps)
: base(name: "MyAnonamouse",
description: "Friendliness, Warmth and Sharing",
link: "https://www.myanonamouse.net/",
@ -42,7 +42,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -28,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public NCore(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public NCore(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "nCore",
description: "A Hungarian private torrent site.",
link: "https://ncore.cc/",

View File

@ -26,7 +26,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public NewRealWorld(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public NewRealWorld(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "New Real World",
description: "A German general tracker.",
link: "https://nrw-tracker.eu/",

View File

@ -4,11 +4,13 @@ using System.Collections.Specialized;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using CsQuery;
using Jacket.Common.Helpers;
using Jackett.Models;
using Jackett.Models.IndexerConfig.Bespoke;
using Jackett.Services.Interfaces;
@ -40,7 +42,7 @@ namespace Jackett.Indexers
private CQ _fDom;
private ConfigurationDataNorbits ConfigData => (ConfigurationDataNorbits)configData;
public Norbits(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public Norbits(IIndexerConfigurationService configService, Utils.Clients.WebClient w, Logger l, IProtectionService ps)
: base(
name: "Norbits",
description: "Norbits is a Norwegian Private site for MOVIES / TV / GENERAL",
@ -123,7 +125,7 @@ namespace Jackett.Indexers
private async Task DoLogin()
{
// Build WebRequest for index
var myIndexRequest = new WebRequest()
var myIndexRequest = new Utils.Clients.WebRequest()
{
Type = RequestType.GET,
Url = SiteLink,
@ -142,7 +144,7 @@ namespace Jackett.Indexers
};
// Build WebRequest for login
var myRequestLogin = new WebRequest()
var myRequestLogin = new Utils.Clients.WebRequest()
{
Type = RequestType.GET,
Url = LoginUrl,
@ -158,7 +160,7 @@ namespace Jackett.Indexers
await webclient.GetString(myRequestLogin);
// Build WebRequest for submitting authentification
var request = new WebRequest()
var request = new Utils.Clients.WebRequest()
{
PostData = pairs,
Referer = LoginUrl,
@ -458,7 +460,7 @@ namespace Jackett.Indexers
}
else if (!string.IsNullOrWhiteSpace(term))
{
searchterm = "search=" + System.Web.HttpUtility.UrlEncode(term, Encoding.GetEncoding(28591));
searchterm = "search=" + WebUtilityHelpers.UrlEncode(term, Encoding.GetEncoding(28591));
}
else
{
@ -696,7 +698,7 @@ namespace Jackett.Indexers
goto case "debug";
case "debug":
// Only if Debug Level Enabled on Jackett
if (Engine.Logger.IsDebugEnabled)
if (logger.IsDebugEnabled)
{
logger.Debug(message);
}

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
@ -28,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public PassThePopcorn(IIndexerConfigurationService configService, IWebClient c, Logger l, IProtectionService ps)
public PassThePopcorn(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l, IProtectionService ps)
: base(name: "PassThePopcorn",
description: "PassThePopcorn is a Private site for MOVIES / TV",
link: "https://passthepopcorn.me/",
@ -105,11 +106,11 @@ namespace Jackett.Indexers
if (!string.IsNullOrEmpty(query.ImdbID))
{
movieListSearchUrl = string.Format("{0}?json=noredirect&searchstr={1}", SearchUrl, HttpUtility.UrlEncode(query.ImdbID));
movieListSearchUrl = string.Format("{0}?json=noredirect&searchstr={1}", SearchUrl, WebUtility.UrlEncode(query.ImdbID));
}
else if (!string.IsNullOrEmpty(query.GetQueryString()))
{
movieListSearchUrl = string.Format("{0}?json=noredirect&searchstr={1}", SearchUrl, HttpUtility.UrlEncode(query.GetQueryString()));
movieListSearchUrl = string.Format("{0}?json=noredirect&searchstr={1}", SearchUrl, WebUtility.UrlEncode(query.GetQueryString()));
}
else
{
@ -142,7 +143,7 @@ namespace Jackett.Indexers
release.Description = string.Format("Title: {0}", movie_title);
release.BannerUrl = coverUri;
release.Imdb = movie_imdbid;
release.Comments = new Uri(string.Format("{0}?id={1}", SearchUrl, HttpUtility.UrlEncode(movie_groupid)));
release.Comments = new Uri(string.Format("{0}?id={1}", SearchUrl, WebUtility.UrlEncode(movie_groupid)));
release.Guid = release.Comments;
release.Size = long.Parse((string)torrent["Size"]);
release.Grabs = long.Parse((string)torrent["Snatched"]);
@ -151,7 +152,7 @@ namespace Jackett.Indexers
release.PublishDate = DateTime.ParseExact((string)torrent["UploadTime"], "yyyy-MM-dd HH:mm:ss",
CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToLocalTime();
release.Link = new Uri(string.Format("{0}?action=download&id={1}&authkey={2}&torrent_pass={3}",
SearchUrl, HttpUtility.UrlEncode((string)torrent["Id"]), HttpUtility.UrlEncode(AuthKey), HttpUtility.UrlEncode(configData.Passkey.Value)));
SearchUrl, WebUtility.UrlEncode((string)torrent["Id"]), WebUtility.UrlEncode(AuthKey), WebUtility.UrlEncode(configData.Passkey.Value)));
release.MinimumRatio = 1;
release.MinimumSeedTime = 345600;
release.Category = new List<int> { 2000 };

View File

@ -32,7 +32,7 @@ namespace Jackett.Indexers
private string input_username = null;
private string input_password = null;
public PiXELHD(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public PiXELHD(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "PiXELHD",
description: "PixelHD (PxHD) is a Private Torrent Tracker for HD .MP4 MOVIES / TV",
link: "https://pixelhd.me/",
@ -44,7 +44,7 @@ namespace Jackett.Indexers
configData: new ConfigurationDataCaptchaLogin()
)
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -30,7 +30,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public PirateTheNet(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public PirateTheNet(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "PirateTheNet",
description: "A movie tracker",
link: "http://piratethenet.org/",
@ -41,7 +41,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -30,7 +30,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public PolishTracker(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public PolishTracker(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "PolishTracker",
description: "Polish Tracker is a POLISH Private site for 0DAY / MOVIES / GENERAL",
link: "https://pte.nu/",
@ -41,7 +41,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "pl-pl";
Type = "private";

View File

@ -30,7 +30,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Pretome(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public Pretome(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "PreToMe",
description: "BitTorrent site for High Quality, High Definition (HD) movies and TV Shows",
link: "https://pretome.info/",

View File

@ -6,7 +6,7 @@ namespace Jackett.Indexers
{
public class PrivateHD : AvistazTracker, IIndexer
{
public PrivateHD(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public PrivateHD(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "PrivateHD",
desc: "BitTorrent site for High Quality, High Definition (HD) movies and TV Shows",
link: "https://privatehd.to/",

View File

@ -8,7 +8,7 @@ namespace Jackett.Indexers
{
public class Psytorrents : GazelleTracker
{
public Psytorrents(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public Psytorrents(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "Psytorrents",
desc: "Psytorrents (PSY) is a Private Torrent Tracker for ELECTRONIC MUSIC",
link: "https://psytorrents.info/",

View File

@ -5,6 +5,7 @@ using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Jacket.Common;
using Jackett.Models;
using Jackett.Models.IndexerConfig;
using Jackett.Services.Interfaces;
@ -41,7 +42,7 @@ namespace Jackett.Indexers
private bool HasValidToken { get { return !string.IsNullOrEmpty(token) && lastTokenFetch > DateTime.Now - TOKEN_DURATION; } }
public Rarbg(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public Rarbg(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "RARBG",
description: "RARBG is a Public torrent site for MOVIES / TV / GENERAL",
link: "https://rarbg.to/",
@ -129,7 +130,7 @@ namespace Jackett.Indexers
var queryCollection = new NameValueCollection();
queryCollection.Add("token", token);
queryCollection.Add("format", "json_extended");
queryCollection.Add("app_id", "jackett_v" + Engine.ConfigService.GetVersion());
queryCollection.Add("app_id", "jackett_v" + JackettStartup.JackettVersion);
queryCollection.Add("limit", "100");
queryCollection.Add("ranked", "0");

View File

@ -9,7 +9,7 @@ namespace Jackett.Indexers
{
public class PassTheHeadphones : GazelleTracker
{
public PassTheHeadphones(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public PassTheHeadphones(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "Redacted",
desc: "A music tracker",
link: "https://redacted.ch/",

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@ -33,7 +34,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public RevolutionTT(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public RevolutionTT(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
: base(name: "RevolutionTT",
description: "The Revolution has begun",
link: "https://revolutiontt.me/",
@ -292,8 +293,8 @@ namespace Jackett.Indexers
}
else
{
searchUrl += "?titleonly=1&search=" + HttpUtility.UrlEncode(searchString);
string.Format(SearchUrl, HttpUtility.UrlEncode(searchString));
searchUrl += "?titleonly=1&search=" + WebUtility.UrlEncode(searchString);
string.Format(SearchUrl, WebUtility.UrlEncode(searchString));
var cats = MapTorznabCapsToTrackers(query);
if (cats.Count > 0)

View File

@ -4,6 +4,7 @@ using System.Collections.Specialized;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
@ -43,7 +44,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public SceneFZ(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public SceneFZ(IIndexerConfigurationService configService, Utils.Clients.WebClient w, Logger l, IProtectionService ps)
: base(
name: "SceneFZ",
description: "Torrent tracker. Tracking over 50.000 torrent files.",
@ -134,7 +135,7 @@ namespace Jackett.Indexers
};
// Getting login form to retrieve PHPSESSID
var myRequest = new WebRequest()
var myRequest = new Utils.Clients.WebRequest()
{
Url = LoginUrl
};
@ -402,7 +403,7 @@ namespace Jackett.Indexers
if (!string.IsNullOrWhiteSpace(term))
{
// Add search term
queryCollection.Add("search", HttpUtility.UrlEncode(term));
queryCollection.Add("search", WebUtility.UrlEncode(term));
queryCollection.Add("searchin", "0");
queryCollection.Add("cat", "0");
queryCollection.Add("incldead", "0");
@ -625,7 +626,7 @@ namespace Jackett.Indexers
goto case "debug";
case "debug":
// Only if Debug Level Enabled on Jackett
if (Engine.Logger.IsDebugEnabled)
if (logger.IsDebugEnabled)
{
logger.Debug(message);
}

View File

@ -28,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public SceneTime(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public SceneTime(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "SceneTime",
description: "Always on time",
link: "https://www.scenetime.com/",

View File

@ -29,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Shazbat(IIndexerConfigurationService configService, IWebClient c, Logger l, IProtectionService ps)
public Shazbat(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps)
: base(name: "Shazbat",
description: "Modern indexer",
link: "https://www.shazbat.tv/",

View File

@ -25,7 +25,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public ShowRSS(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public ShowRSS(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "ShowRSS",
description: "showRSS is a service that allows you to keep track of your favorite TV shows",
link: "https://showrss.info/",

View File

@ -27,7 +27,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public SpeedCD(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public SpeedCD(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "Speed.cd",
description: "Your home now!",
link: "https://speed.cd/",

View File

@ -26,7 +26,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Superbits(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public Superbits(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "Superbits",
description: "SuperBits is a SWEDISH Private Torrent Tracker for MOVIES / TV / GENERAL",
link: "https://superbits.org/",
@ -37,7 +37,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "sv-sw";
Type = "private";

View File

@ -9,7 +9,7 @@ namespace Jackett.Indexers
{
public class Synthesiz3r : GazelleTracker
{
public Synthesiz3r(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public Synthesiz3r(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "Synthesiz3r",
desc: "Synthesiz3r (ST3) is a Private Torrent Tracker for ELECTRONIC MUSIC",
link: "https://synthesiz3r.com/",

View File

@ -32,7 +32,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public TVChaosUK(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public TVChaosUK(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "TV Chaos",
description: "Total Chaos",
link: "https://www.tvchaosuk.com/",
@ -43,7 +43,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSS())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-uk";
Type = "private";

View File

@ -26,7 +26,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public TVVault(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public TVVault(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "TV-Vault",
description: "A TV tracker for old shows.",
link: "https://tv-vault.me/",
@ -37,7 +37,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
@ -28,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public TehConnection(IIndexerConfigurationService configService, IWebClient c, Logger l, IProtectionService ps)
public TehConnection(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l, IProtectionService ps)
: base(name: "TehConnection",
description: "Working towards providing a well-seeded archive of all available digital forms of cinema and film in their highest possible quality",
link: "https://tehconnection.eu/",
@ -41,7 +42,7 @@ namespace Jackett.Indexers
Separate options with a space if using more than one option.<br>Filter options available:
<br><code>QualityEncodeOnly</code><br><code>FreeLeechOnly</code>"))
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";
@ -109,11 +110,11 @@ namespace Jackett.Indexers
if (!string.IsNullOrEmpty(query.ImdbID))
{
movieListSearchUrl = string.Format("{0}?action=basic&searchstr={1}", SearchUrl, HttpUtility.UrlEncode(query.ImdbID));
movieListSearchUrl = string.Format("{0}?action=basic&searchstr={1}", SearchUrl, WebUtility.UrlEncode(query.ImdbID));
}
else if (!string.IsNullOrEmpty(query.GetQueryString()))
{
movieListSearchUrl = string.Format("{0}?action=basic&searchstr={1}", SearchUrl, HttpUtility.UrlEncode(query.GetQueryString()));
movieListSearchUrl = string.Format("{0}?action=basic&searchstr={1}", SearchUrl, WebUtility.UrlEncode(query.GetQueryString()));
}
else
{

View File

@ -26,7 +26,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public TorrentBytes(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public TorrentBytes(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "TorrentBytes",
description: "A decade of torrentbytes",
link: "https://www.torrentbytes.net/",

View File

@ -41,7 +41,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public TorrentDay(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public TorrentDay(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "TorrentDay",
description: "TorrentDay (TD) is a Private site for TV / MOVIES / GENERAL",
link: "https://torrentday.it/",
@ -52,7 +52,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataRecaptchaLogin())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -29,7 +29,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public TorrentHeaven(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public TorrentHeaven(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "TorrentHeaven",
description: "A German general tracker.",
link: "https://torrentheaven.myfqdn.info/",

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
@ -27,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public TorrentLeech(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public TorrentLeech(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
: base(name: "TorrentLeech",
description: "This is what happens when you seed",
link: "https://www.torrentleech.org/",
@ -125,9 +126,9 @@ namespace Jackett.Indexers
if (!string.IsNullOrWhiteSpace(searchString))
{
searchUrl += "query/" + HttpUtility.UrlEncode(searchString) + "/";
searchUrl += "query/" + WebUtility.UrlEncode(searchString) + "/";
}
string.Format(SearchUrl, HttpUtility.UrlEncode(searchString));
string.Format(SearchUrl, WebUtility.UrlEncode(searchString));
var cats = MapTorznabCapsToTrackers(query);
if (cats.Count > 0)

View File

@ -31,7 +31,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public TorrentNetwork(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public TorrentNetwork(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "Torrent Network",
description: "Torrent Network (TN) is a GERMAN Private site for TV / MOVIES / GENERAL",
link: "https://tntracker.org/",
@ -42,7 +42,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "de-de";
Type = "private";

View File

@ -30,7 +30,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public TorrentSyndikat(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public TorrentSyndikat(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "Torrent-Syndikat",
description: "A German general tracker",
link: "https://torrent-syndikat.org/",
@ -41,7 +41,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "de-de";
Type = "private";

View File

@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
@ -11,6 +13,7 @@ using Jackett.Models.IndexerConfig;
using Jackett.Services.Interfaces;
using Jackett.Utils;
using Jackett.Utils.Clients;
using Microsoft.AspNetCore.WebUtilities;
using Newtonsoft.Json.Linq;
using NLog;
@ -27,7 +30,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public Torrentech(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public Torrentech(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
: base(name: "Torrentech",
description: "TorrenTech (TTH) is a Private Torrent Tracker for ELECTRONIC MUSIC",
link: "https://www.torrentech.org/",
@ -133,7 +136,7 @@ namespace Jackett.Indexers
release.DownloadVolumeFactor = 1;
release.UploadVolumeFactor = 1;
var id = HttpUtility.ParseQueryString(release.Comments.Query).Get("showtopic");
var id = QueryHelpers.ParseQuery(release.Comments.Query)["showtopic"].FirstOrDefault();
var desc = Row.QuerySelector("span.desc");
var forange = desc.QuerySelector("font.forange");
@ -163,7 +166,7 @@ namespace Jackett.Indexers
release.Description += e.TextContent + "\n";
}
}
release.Description = HttpUtility.HtmlEncode(release.Description.Trim());
release.Description = WebUtility.HtmlEncode(release.Description.Trim());
release.Description = release.Description.Replace("\n", "<br>");
if (format.Contains("MP3"))

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@ -27,7 +28,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public TransmitheNet(IIndexerConfigurationService configService, IWebClient c, Logger l, IProtectionService ps)
public TransmitheNet(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l, IProtectionService ps)
: base(name: "Nebulance",
description: " At Nebulance we will change the way you think about TV",
link: "https://nebulance.io/",
@ -38,7 +39,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLogin("For best results, change the 'Torrents per page' setting to 100 in your profile on the NBL webpage."))
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";
}
@ -88,7 +89,7 @@ namespace Jackett.Indexers
Url = SearchUrl;
else
{
Url = $"{SearchUrl}&searchtext={HttpUtility.UrlEncode(query.GetQueryString())}";
Url = $"{SearchUrl}&searchtext={WebUtility.UrlEncode(query.GetQueryString())}";
}
var response = await RequestStringWithCookiesAndRetry(Url);

View File

@ -41,7 +41,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public WiHD(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public WiHD(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(
name: "WiHD",
description: "Your World in High Definition",
@ -804,7 +804,7 @@ namespace Jackett.Indexers
goto case "debug";
case "debug":
// Only if Debug Level Enabled on Jackett
if (Engine.Logger.IsDebugEnabled)
if (logger.IsDebugEnabled)
{
logger.Debug(message);
}

View File

@ -35,7 +35,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public XSpeeds(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public XSpeeds(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "XSpeeds",
description: "XSpeeds (XS) is a Private Torrent Tracker for MOVIES / TV / GENERAL",
link: "https://www.xspeeds.eu/",
@ -46,7 +46,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
@ -32,7 +33,7 @@ namespace Jackett.Indexers
public Dictionary<string, string> EmulatedBrowserHeaders { get; } = new Dictionary<string, string>();
private ConfigurationDataXthor ConfigData => (ConfigurationDataXthor)configData;
public Xthor(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public Xthor(IIndexerConfigurationService configService, Utils.Clients.WebClient w, Logger l, IProtectionService ps)
: base(
name: "Xthor",
description: "General French Private Tracker",
@ -315,7 +316,7 @@ namespace Jackett.Indexers
{
// Add search term
// ReSharper disable once AssignNullToNotNullAttribute
parameters.Add("search", HttpUtility.UrlEncode(term));
parameters.Add("search", WebUtility.UrlEncode(term));
}
else
{
@ -436,7 +437,7 @@ namespace Jackett.Indexers
Output("\nQuerying tracker for results....");
// Build WebRequest for index
var myIndexRequest = new WebRequest()
var myIndexRequest = new Utils.Clients.WebRequest()
{
Type = RequestType.GET,
Url = request,
@ -565,7 +566,7 @@ namespace Jackett.Indexers
goto case "debug";
case "debug":
// Only if Debug Level Enabled on Jackett
if (Engine.Logger.IsDebugEnabled)
if (logger.IsDebugEnabled)
{
logger.Debug(message);
}

View File

@ -8,7 +8,7 @@ namespace Jackett.Indexers
{
public class CGPeers : GazelleTracker
{
public CGPeers(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public CGPeers(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "CGPeers",
desc: "CGPeers is a Private Torrent Tracker for GRAPHICS SOFTWARE / TUTORIALS / ETC",
link: "https://www.cgpeers.com/",

View File

@ -26,7 +26,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public myAmity(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public myAmity(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "myAmity",
description: "A German general tracker.",
link: "https://ttv2.myamity.info/",
@ -37,7 +37,7 @@ namespace Jackett.Indexers
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("UTF-8");
Encoding = Encoding.UTF8;
Language = "de-de";
Type = "private";

View File

@ -9,7 +9,7 @@ namespace Jackett.Indexers
{
public class notwhatcd : GazelleTracker
{
public notwhatcd(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
public notwhatcd(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "notwhat.cd",
desc: "A music tracker",
link: "https://notwhat.cd/",

View File

@ -30,7 +30,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public RuTracker(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps)
public RuTracker(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "RuTracker",
description: "RuTracker is a Semi-Private Russian torrent site with a thriving file-sharing community",
link: "https://rutracker.org/",

View File

@ -27,7 +27,7 @@ namespace Jackett.Indexers
set { base.configData = value; }
}
public x264(IIndexerConfigurationService configService, IWebClient w, Logger l, IProtectionService ps)
public x264(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "x264",
description: "A movie/TV tracker",
link: "https://x264.me/",

Some files were not shown because too many files have changed in this diff Show More