Upgrade StyleCop.Analyzers to Unstable 1.2.0.556

This commit is contained in:
Bogdan 2025-06-06 13:18:01 +03:00 committed by Qstick
parent cbcefa41ab
commit cd680a47b5
110 changed files with 297 additions and 292 deletions

View file

@ -141,9 +141,9 @@
<!-- Set up stylecop --> <!-- Set up stylecop -->
<ItemGroup Condition="'$(ProwlarrProject)'=='true' and '$(EnableAnalyzers)'!='false'"> <ItemGroup Condition="'$(ProwlarrProject)'=='true' and '$(EnableAnalyzers)'!='false'">
<!-- StyleCop analysis --> <!-- StyleCop analysis -->
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118"> <PackageReference Include="StyleCop.Analyzers.Unstable" Version="1.2.0.556">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<AdditionalFiles Include="$(SolutionDir)stylecop.json" /> <AdditionalFiles Include="$(SolutionDir)stylecop.json" />
</ItemGroup> </ItemGroup>

View file

@ -35,7 +35,7 @@ public class HttpClientFixture<TDispatcher> : TestBase<HttpClient>
private string _httpBinHost; private string _httpBinHost;
private string _httpBinHost2; private string _httpBinHost2;
private System.Net.Http.HttpClient _httpClient = new (); private System.Net.Http.HttpClient _httpClient = new();
[OneTimeSetUp] [OneTimeSetUp]
public void FixtureSetUp() public void FixtureSetUp()

View file

@ -295,7 +295,7 @@ private string[] GetFragments()
return _path.Split(new char[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries); return _path.Split(new char[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries);
} }
public static OsPath Null => new (null); public static OsPath Null => new(null);
public override string ToString() public override string ToString()
{ {

View file

@ -31,7 +31,7 @@ public static void Add<TKey, TValue>(this ICollection<KeyValuePair<TKey, TValue>
} }
public static IDictionary<TNewKey, TNewValue> SelectDictionary<TKey, TValue, TNewKey, TNewValue>(this IDictionary<TKey, TValue> dictionary, public static IDictionary<TNewKey, TNewValue> SelectDictionary<TKey, TValue, TNewKey, TNewValue>(this IDictionary<TKey, TValue> dictionary,
Func<KeyValuePair<TKey, TValue>, ValueTuple<TNewKey, TNewValue>> selection) Func<KeyValuePair<TKey, TValue>, (TNewKey Item1, TNewValue Item2)> selection)
{ {
return dictionary.Select(selection).ToDictionary(t => t.Item1, t => t.Item2); return dictionary.Select(selection).ToDictionary(t => t.Item1, t => t.Item2);
} }

View file

@ -9,7 +9,7 @@ public static class CookieUtil
{ {
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
// NOTE: we are not checking non-ascii characters and we should // NOTE: we are not checking non-ascii characters and we should
private static readonly Regex CookieRegex = new (@"([^\(\)<>@,;:\\""/\[\]\?=\{\}\s]+)=([^,;\\""\s]+)"); private static readonly Regex CookieRegex = new(@"([^\(\)<>@,;:\\""/\[\]\?=\{\}\s]+)=([^,;\\""\s]+)");
private static readonly string[] FilterProps = { "COMMENT", "COMMENTURL", "DISCORD", "DOMAIN", "EXPIRES", "MAX-AGE", "PATH", "PORT", "SECURE", "VERSION", "HTTPONLY", "SAMESITE" }; private static readonly string[] FilterProps = { "COMMENT", "COMMENTURL", "DISCORD", "DOMAIN", "EXPIRES", "MAX-AGE", "PATH", "PORT", "SECURE", "VERSION", "HTTPONLY", "SAMESITE" };
private static readonly char[] InvalidKeyChars = { '(', ')', '<', '>', '@', ',', ';', ':', '\\', '"', '/', '[', ']', '?', '=', '{', '}', ' ', '\t', '\n' }; private static readonly char[] InvalidKeyChars = { '(', ')', '<', '>', '@', ',', ';', ':', '\\', '"', '/', '[', ']', '?', '=', '{', '}', ' ', '\t', '\n' };
private static readonly char[] InvalidValueChars = { '"', ',', ';', '\\', ' ', '\t', '\n' }; private static readonly char[] InvalidValueChars = { '"', ',', ';', '\\', ' ', '\t', '\n' };

View file

@ -9,7 +9,7 @@ namespace NzbDrone.Common.Http
{ {
public class HttpResponse public class HttpResponse
{ {
private static readonly Regex RegexRefresh = new ("^(.*?url)=(.*?)(?:;|$)", RegexOptions.Compiled); private static readonly Regex RegexRefresh = new("^(.*?url)=(.*?)(?:;|$)", RegexOptions.Compiled);
public HttpResponse(HttpRequest request, HttpHeader headers, CookieCollection cookies, byte[] binaryData, long elapsedTime = 0, HttpStatusCode statusCode = HttpStatusCode.OK, Version version = null) public HttpResponse(HttpRequest request, HttpHeader headers, CookieCollection cookies, byte[] binaryData, long elapsedTime = 0, HttpStatusCode statusCode = HttpStatusCode.OK, Version version = null)
{ {

View file

@ -5,7 +5,7 @@ namespace NzbDrone.Common.Http
{ {
public static class UserAgentParser public static class UserAgentParser
{ {
private static readonly Regex AppSourceRegex = new (@"^(?<agent>[a-z0-9]+)(?:\/.+(?:\(.*\))?|$)", private static readonly Regex AppSourceRegex = new(@"^(?<agent>[a-z0-9]+)(?:\/.+(?:\(.*\))?|$)",
RegexOptions.IgnoreCase | RegexOptions.Compiled); RegexOptions.IgnoreCase | RegexOptions.Compiled);
public static string SimplifyUserAgent(string userAgent) public static string SimplifyUserAgent(string userAgent)

View file

@ -10,64 +10,64 @@ public class CleanseLogMessage
private static readonly Regex[] CleansingRules = private static readonly Regex[] CleansingRules =
{ {
// Url // Url
new (@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|rsskey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|rsskey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"(?<=[?& ;])[^=]*?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?<=[?& ;])[^=]*?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"rss(24h)?\.torrentleech\.org/(?!rss)(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"rss(24h)?\.torrentleech\.org/(?!rss)(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"torrentleech\.org/rss/download/[0-9]+/(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"torrentleech\.org/rss/download/[0-9]+/(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"iptorrents\.com/[/a-z0-9?&;]*?(?:[?&;](u|tp)=(?<secret>[^&=;]+?))+(?= |;|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"iptorrents\.com/[/a-z0-9?&;]*?(?:[?&;](u|tp)=(?<secret>[^&=;]+?))+(?= |;|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"/fetch/[a-z0-9]{32}/(?<secret>[a-z0-9]{32})", RegexOptions.Compiled), new(@"/fetch/[a-z0-9]{32}/(?<secret>[a-z0-9]{32})", RegexOptions.Compiled),
new (@"getnzb.*?(?<=\?|&)(r)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"getnzb.*?(?<=\?|&)(r)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"\b(\w*)?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"\b(\w*)?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"(?<=authkey = "")(?<secret>[^&=]+?)(?="")", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?<=authkey = "")(?<secret>[^&=]+?)(?="")", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"(?<=beyond-hd\.[a-z]+/api/torrents/)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?<=beyond-hd\.[a-z]+/api/torrents/)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"(?<=beyond-hd\.[a-z]+/torrent/download/[\w\d-]+[.]\d+[.])(?<secret>[a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?<=beyond-hd\.[a-z]+/torrent/download/[\w\d-]+[.]\d+[.])(?<secret>[a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"(?:sharewood)\.[a-z]{2,3}/api/(?<secret>[a-z0-9]{16,})/", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?:sharewood)\.[a-z]{2,3}/api/(?<secret>[a-z0-9]{16,})/", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// UNIT3D // UNIT3D
new (@"(?<=[a-z0-9-]+\.[a-z]+/torrent/download/\d+\.)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?<=[a-z0-9-]+\.[a-z]+/torrent/download/\d+\.)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Path // Path
new (@"""C:\\Users\\(?<secret>[^\""]+?)(\\|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"""C:\\Users\\(?<secret>[^\""]+?)(\\|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"""/(home|Users)/(?<secret>[^/""]+?)(/|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"""/(home|Users)/(?<secret>[^/""]+?)(/|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Trackers Announce Keys; Designed for Qbit Json; should work for all in theory // Trackers Announce Keys; Designed for Qbit Json; should work for all in theory
new (@"announce(\.php)?(/|%2f|%3fpasskey%3d)(?<secret>[a-z0-9]{16,})|(?<secret>[a-z0-9]{16,})(/|%2f)announce", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"announce(\.php)?(/|%2f|%3fpasskey%3d)(?<secret>[a-z0-9]{16,})|(?<secret>[a-z0-9]{16,})(/|%2f)announce", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// NzbGet // NzbGet
new (@"""Name""\s*:\s*""[^""]*(username|password)""\s*,\s*""Value""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"""Name""\s*:\s*""[^""]*(username|password)""\s*,\s*""Value""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Sabnzbd // Sabnzbd
new (@"""[^""]*(username|password|api_?key|nzb_key)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"""[^""]*(username|password|api_?key|nzb_key)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"""email_(account|to|from|pwd)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"""email_(account|to|from|pwd)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// uTorrent // uTorrent
new (@"\[""[a-z._]*(username|password)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"\[""[a-z._]*(username|password)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"\[""(boss_key|boss_key_salt|proxy\.proxy)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"\[""(boss_key|boss_key_salt|proxy\.proxy)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Deluge // Deluge
new (@"auth.login\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"auth.login\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// BroadcastheNet (;torrent_pass|torrents_notify_ is for MTV) // BroadcastheNet (;torrent_pass|torrents_notify_ is for MTV)
new (@"""?method""?\s*:\s*""(getTorrents)"",\s*""?params""?\s*:\s*\[\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"""?method""?\s*:\s*""(getTorrents)"",\s*""?params""?\s*:\s*\[\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"getTorrents\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"getTorrents\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"(?<=\?|&|;|=)(authkey|torrent_pass|torrents_notify)[_=](?<secret>[^&=]+?)(?=""|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?<=\?|&|;|=)(authkey|torrent_pass|torrents_notify)[_=](?<secret>[^&=]+?)(?=""|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Plex // Plex
new (@"(?<=\?|&)(X-Plex-Client-Identifier|X-Plex-Token)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?<=\?|&)(X-Plex-Client-Identifier|X-Plex-Token)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Indexer Responses // Indexer Responses
new (@"(?:avistaz|exoticaz|cinemaz|privatehd)\.[a-z]{2,3}/rss/download/(?<secret>[^&=]+?)/(?<secret>[^&=]+?)\.torrent", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?:avistaz|exoticaz|cinemaz|privatehd)\.[a-z]{2,3}/rss/download/(?<secret>[^&=]+?)/(?<secret>[^&=]+?)\.torrent", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"(?:animebytes)\.[a-z]{2,3}/torrent/[0-9]+/download/(?<secret>[^&=]+?)[""]", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"(?:animebytes)\.[a-z]{2,3}/torrent/[0-9]+/download/(?<secret>[^&=]+?)[""]", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"""(info_hash|token|((pass|rss)[- _]?key))"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"""(info_hash|token|((pass|rss)[- _]?key))"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Applications // Applications
new (@"""name"":""apikey"",""value"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase), new(@"""name"":""apikey"",""value"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Discord // Discord
new (@"discord.com/api/webhooks/((?<secret>[\w-]+)/)?(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase) new(@"discord.com/api/webhooks/((?<secret>[\w-]+)/)?(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase)
}; };
private static readonly Regex CleanseRemoteIPRegex = new (@"(?:Auth-\w+(?<!Failure|Unauthorized) ip|from) (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})", RegexOptions.Compiled); private static readonly Regex CleanseRemoteIPRegex = new(@"(?:Auth-\w+(?<!Failure|Unauthorized) ip|from) (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})", RegexOptions.Compiled);
public static string Cleanse(string message) public static string Cleanse(string message)
{ {

View file

@ -15,8 +15,8 @@ public static class NzbDroneLogger
private const string FileLogLayout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}"; private const string FileLogLayout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
private const string ConsoleFormat = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}"; private const string ConsoleFormat = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
private static readonly CleansingConsoleLogLayout CleansingConsoleLayout = new (ConsoleFormat); private static readonly CleansingConsoleLogLayout CleansingConsoleLayout = new(ConsoleFormat);
private static readonly CleansingClefLogLayout ClefLogLayout = new (); private static readonly CleansingClefLogLayout ClefLogLayout = new();
private static bool _isConfigured; private static bool _isConfigured;

View file

@ -94,7 +94,8 @@ private void NotifyThreadPoolOfPendingWork()
{ {
_currentThreadIsProcessingItems = false; _currentThreadIsProcessingItems = false;
} }
}, null); },
null);
} }
/// <summary>Attempts to execute the specified task on the current thread.</summary> /// <summary>Attempts to execute the specified task on the current thread.</summary>

View file

@ -20,7 +20,8 @@ public static Task LogExceptions(this Task task)
Logger.Error(exception, "Task Error"); Logger.Error(exception, "Task Error");
} }
} }
}, TaskContinuationOptions.OnlyOnFaulted); },
TaskContinuationOptions.OnlyOnFaulted);
return task; return task;
} }

View file

@ -16,7 +16,7 @@ public abstract class ApplicationBase<TSettings> : IApplication
protected readonly IAppIndexerMapService _appIndexerMapService; protected readonly IAppIndexerMapService _appIndexerMapService;
protected readonly Logger _logger; protected readonly Logger _logger;
protected static readonly Regex AppIndexerRegex = new (@"\/(?<indexer>\d{1,3})(?:\/(?:api)?\/?)?$", RegexOptions.IgnoreCase | RegexOptions.Compiled); protected static readonly Regex AppIndexerRegex = new(@"\/(?<indexer>\d{1,3})(?:\/(?:api)?\/?)?$", RegexOptions.IgnoreCase | RegexOptions.Compiled);
public abstract string Name { get; } public abstract string Name { get; }

View file

@ -19,7 +19,7 @@ public LazyLibrarianSettingsValidator()
public class LazyLibrarianSettings : IApplicationSettings public class LazyLibrarianSettings : IApplicationSettings
{ {
private static readonly LazyLibrarianSettingsValidator Validator = new (); private static readonly LazyLibrarianSettingsValidator Validator = new();
public LazyLibrarianSettings() public LazyLibrarianSettings()
{ {

View file

@ -18,7 +18,7 @@ public LidarrSettingsValidator()
public class LidarrSettings : IApplicationSettings public class LidarrSettings : IApplicationSettings
{ {
private static readonly LidarrSettingsValidator Validator = new (); private static readonly LidarrSettingsValidator Validator = new();
public LidarrSettings() public LidarrSettings()
{ {

View file

@ -23,7 +23,7 @@ public interface ILidarrV1Proxy
public class LidarrV1Proxy : ILidarrV1Proxy public class LidarrV1Proxy : ILidarrV1Proxy
{ {
private static Version MinimumApplicationVersion => new (1, 0, 2, 0); private static Version MinimumApplicationVersion => new(1, 0, 2, 0);
private const string AppApiRoute = "/api/v1"; private const string AppApiRoute = "/api/v1";
private const string AppIndexerApiRoute = $"{AppApiRoute}/indexer"; private const string AppIndexerApiRoute = $"{AppApiRoute}/indexer";

View file

@ -19,7 +19,7 @@ public MylarSettingsValidator()
public class MylarSettings : IApplicationSettings public class MylarSettings : IApplicationSettings
{ {
private static readonly MylarSettingsValidator Validator = new (); private static readonly MylarSettingsValidator Validator = new();
public MylarSettings() public MylarSettings()
{ {

View file

@ -19,7 +19,7 @@ public RadarrSettingsValidator()
public class RadarrSettings : IApplicationSettings public class RadarrSettings : IApplicationSettings
{ {
private static readonly RadarrSettingsValidator Validator = new (); private static readonly RadarrSettingsValidator Validator = new();
public RadarrSettings() public RadarrSettings()
{ {

View file

@ -23,8 +23,8 @@ public interface IRadarrV3Proxy
public class RadarrV3Proxy : IRadarrV3Proxy public class RadarrV3Proxy : IRadarrV3Proxy
{ {
private static Version MinimumApplicationV4Version => new (4, 0, 4, 0); private static Version MinimumApplicationV4Version => new(4, 0, 4, 0);
private static Version MinimumApplicationV3Version => new (3, 1, 1, 0); private static Version MinimumApplicationV3Version => new(3, 1, 1, 0);
private const string AppApiRoute = "/api/v3"; private const string AppApiRoute = "/api/v3";
private const string AppIndexerApiRoute = $"{AppApiRoute}/indexer"; private const string AppIndexerApiRoute = $"{AppApiRoute}/indexer";

View file

@ -19,7 +19,7 @@ public ReadarrSettingsValidator()
public class ReadarrSettings : IApplicationSettings public class ReadarrSettings : IApplicationSettings
{ {
private static readonly ReadarrSettingsValidator Validator = new (); private static readonly ReadarrSettingsValidator Validator = new();
public ReadarrSettings() public ReadarrSettings()
{ {

View file

@ -18,7 +18,7 @@ public SonarrSettingsValidator()
public class SonarrSettings : IApplicationSettings public class SonarrSettings : IApplicationSettings
{ {
private static readonly SonarrSettingsValidator Validator = new (); private static readonly SonarrSettingsValidator Validator = new();
public SonarrSettings() public SonarrSettings()
{ {

View file

@ -23,7 +23,7 @@ public interface ISonarrV3Proxy
public class SonarrV3Proxy : ISonarrV3Proxy public class SonarrV3Proxy : ISonarrV3Proxy
{ {
private static Version MinimumApplicationVersion => new (3, 0, 5, 0); private static Version MinimumApplicationVersion => new(3, 0, 5, 0);
private const string AppApiRoute = "/api/v3"; private const string AppApiRoute = "/api/v3";
private const string AppIndexerApiRoute = $"{AppApiRoute}/indexer"; private const string AppIndexerApiRoute = $"{AppApiRoute}/indexer";

View file

@ -19,7 +19,7 @@ public WhisparrSettingsValidator()
public class WhisparrSettings : IApplicationSettings public class WhisparrSettings : IApplicationSettings
{ {
private static readonly WhisparrSettingsValidator Validator = new (); private static readonly WhisparrSettingsValidator Validator = new();
public WhisparrSettings() public WhisparrSettings()
{ {

View file

@ -5,7 +5,7 @@ namespace NzbDrone.Core.Datastore;
public static class DatabaseVersionParser public static class DatabaseVersionParser
{ {
private static readonly Regex VersionRegex = new (@"^[^ ]+", RegexOptions.Compiled); private static readonly Regex VersionRegex = new(@"^[^ ]+", RegexOptions.Compiled);
public static Version ParseServerVersion(string serverVersion) public static Version ParseServerVersion(string serverVersion)
{ {

View file

@ -36,7 +36,7 @@ public FreeboxDownloadSettingsValidator()
public class FreeboxDownloadSettings : IProviderConfig public class FreeboxDownloadSettings : IProviderConfig
{ {
private static readonly FreeboxDownloadSettingsValidator Validator = new (); private static readonly FreeboxDownloadSettingsValidator Validator = new();
public FreeboxDownloadSettings() public FreeboxDownloadSettings()
{ {

View file

@ -76,7 +76,7 @@ protected override string AddFromTorrentFile(TorrentInfo release, string hash, s
public override string Name => "uTorrent"; public override string Name => "uTorrent";
public override ProviderMessage Message => new (_localizationService.GetLocalizedString("DownloadClientUTorrentProviderMessage"), ProviderMessageType.Warning); public override ProviderMessage Message => new(_localizationService.GetLocalizedString("DownloadClientUTorrentProviderMessage"), ProviderMessageType.Warning);
public override bool SupportsCategories => true; public override bool SupportsCategories => true;

View file

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Http.CloudFlare
{ {
public class CloudFlareDetectionService public class CloudFlareDetectionService
{ {
private static readonly HashSet<string> CloudflareServerNames = new () { "cloudflare", "cloudflare-nginx", "ddos-guard" }; private static readonly HashSet<string> CloudflareServerNames = new() { "cloudflare", "cloudflare-nginx", "ddos-guard" };
private readonly Logger _logger; private readonly Logger _logger;
public CloudFlareDetectionService(Logger logger) public CloudFlareDetectionService(Logger logger)

View file

@ -7,8 +7,8 @@ namespace NzbDrone.Core.IndexerSearch.Definitions
{ {
public abstract class SearchCriteriaBase public abstract class SearchCriteriaBase
{ {
private static readonly Regex StandardizeDashesRegex = new (@"\p{Pd}+", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex StandardizeDashesRegex = new(@"\p{Pd}+", RegexOptions.IgnoreCase | RegexOptions.Compiled);
private static readonly Regex StandardizeSingleQuotesRegex = new (@"[\u0060\u00B4\u2018\u2019]", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex StandardizeSingleQuotesRegex = new(@"[\u0060\u00B4\u2018\u2019]", RegexOptions.IgnoreCase | RegexOptions.Compiled);
public virtual bool InteractiveSearch { get; set; } public virtual bool InteractiveSearch { get; set; }
public List<int> IndexerIds { get; set; } public List<int> IndexerIds { get; set; }

View file

@ -5,10 +5,10 @@ namespace NzbDrone.Core.IndexerSearch
{ {
public class NewznabRequest public class NewznabRequest
{ {
private static readonly Regex TvRegex = new (@"\{((?:imdbid\:)(?<imdbid>[^{]+)|(?:rid\:)(?<rid>[^{]+)|(?:tvdbid\:)(?<tvdbid>[^{]+)|(?:tmdbid\:)(?<tmdbid>[^{]+)|(?:tvmazeid\:)(?<tvmazeid>[^{]+)|(?:doubanid\:)(?<doubanid>[^{]+)|(?:season\:)(?<season>[^{]+)|(?:episode\:)(?<episode>[^{]+)|(?:year\:)(?<year>[^{]+)|(?:genre\:)(?<genre>[^{]+))\}", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex TvRegex = new(@"\{((?:imdbid\:)(?<imdbid>[^{]+)|(?:rid\:)(?<rid>[^{]+)|(?:tvdbid\:)(?<tvdbid>[^{]+)|(?:tmdbid\:)(?<tmdbid>[^{]+)|(?:tvmazeid\:)(?<tvmazeid>[^{]+)|(?:doubanid\:)(?<doubanid>[^{]+)|(?:season\:)(?<season>[^{]+)|(?:episode\:)(?<episode>[^{]+)|(?:year\:)(?<year>[^{]+)|(?:genre\:)(?<genre>[^{]+))\}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex MovieRegex = new (@"\{((?:imdbid\:)(?<imdbid>[^{]+)|(?:doubanid\:)(?<doubanid>[^{]+)|(?:tmdbid\:)(?<tmdbid>[^{]+)|(?:traktid\:)(?<traktid>[^{]+)|(?:year\:)(?<year>[^{]+)|(?:genre\:)(?<genre>[^{]+))\}", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex MovieRegex = new(@"\{((?:imdbid\:)(?<imdbid>[^{]+)|(?:doubanid\:)(?<doubanid>[^{]+)|(?:tmdbid\:)(?<tmdbid>[^{]+)|(?:traktid\:)(?<traktid>[^{]+)|(?:year\:)(?<year>[^{]+)|(?:genre\:)(?<genre>[^{]+))\}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex MusicRegex = new (@"\{((?:artist\:)(?<artist>[^{]+)|(?:album\:)(?<album>[^{]+)|(?:track\:)(?<track>[^{]+)|(?:label\:)(?<label>[^{]+)|(?:year\:)(?<year>[^{]+)|(?:genre\:)(?<genre>[^{]+))\}", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex MusicRegex = new(@"\{((?:artist\:)(?<artist>[^{]+)|(?:album\:)(?<album>[^{]+)|(?:track\:)(?<track>[^{]+)|(?:label\:)(?<label>[^{]+)|(?:year\:)(?<year>[^{]+)|(?:genre\:)(?<genre>[^{]+))\}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex BookRegex = new (@"\{((?:author\:)(?<author>[^{]+)|(?:publisher\:)(?<publisher>[^{]+)|(?:title\:)(?<title>[^{]+)|(?:year\:)(?<year>[^{]+)|(?:genre\:)(?<genre>[^{]+))\}", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex BookRegex = new(@"\{((?:author\:)(?<author>[^{]+)|(?:publisher\:)(?<publisher>[^{]+)|(?:title\:)(?<title>[^{]+)|(?:year\:)(?<year>[^{]+)|(?:genre\:)(?<genre>[^{]+))\}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
public string t { get; set; } public string t { get; set; }
public string q { get; set; } public string q { get; set; }

View file

@ -33,7 +33,7 @@ public class IndexerDefinitionUpdateService : IIndexerDefinitionUpdateService, I
private const int DEFINITION_VERSION = 11; private const int DEFINITION_VERSION = 11;
// Used when moving yml to C# // Used when moving yml to C#
private readonly List<string> _definitionBlocklist = new () private readonly List<string> _definitionBlocklist = new()
{ {
"aither", "aither",
"animeworld", "animeworld",
@ -251,8 +251,8 @@ private CardigannDefinition CleanIndexerDefinition(CardigannDefinition definitio
{ {
definition.Settings = new List<SettingsField> definition.Settings = new List<SettingsField>
{ {
new () { Name = "username", Label = "Username", Type = "text" }, new() { Name = "username", Label = "Username", Type = "text" },
new () { Name = "password", Label = "Password", Type = "password" } new() { Name = "password", Label = "Password", Type = "password" }
}; };
} }

View file

@ -252,7 +252,7 @@ public class AnidubParser : IParseIndexerResponse
private readonly IIndexerHttpClient _httpClient; private readonly IIndexerHttpClient _httpClient;
private readonly Logger _logger; private readonly Logger _logger;
private static Dictionary<string, string> CategoriesMap => new () private static Dictionary<string, string> CategoriesMap => new()
{ {
{ "/anime_tv/full", "14" }, { "/anime_tv/full", "14" },
{ "/anime_tv/anime_ongoing", "10" }, { "/anime_tv/anime_ongoing", "10" },

View file

@ -149,7 +149,7 @@ public class AnimeBytesRequestGenerator : IIndexerRequestGenerator
private readonly AnimeBytesSettings _settings; private readonly AnimeBytesSettings _settings;
private readonly IndexerCapabilities _capabilities; private readonly IndexerCapabilities _capabilities;
private static Regex YearRegex => new (@"\b((?:19|20)\d{2})$", RegexOptions.Compiled); private static Regex YearRegex => new(@"\b((?:19|20)\d{2})$", RegexOptions.Compiled);
public AnimeBytesRequestGenerator(AnimeBytesSettings settings, IndexerCapabilities capabilities) public AnimeBytesRequestGenerator(AnimeBytesSettings settings, IndexerCapabilities capabilities)
{ {
@ -290,16 +290,16 @@ private static string CleanSearchTerm(string term)
public class AnimeBytesParser : IParseIndexerResponse public class AnimeBytesParser : IParseIndexerResponse
{ {
private static readonly HashSet<string> ExcludedProperties = new (StringComparer.OrdinalIgnoreCase) { "Freeleech" }; private static readonly HashSet<string> ExcludedProperties = new(StringComparer.OrdinalIgnoreCase) { "Freeleech" };
private static readonly HashSet<string> RemuxResolutions = new (StringComparer.OrdinalIgnoreCase) { "1080i", "1080p", "2160p", "4K" }; private static readonly HashSet<string> RemuxResolutions = new(StringComparer.OrdinalIgnoreCase) { "1080i", "1080p", "2160p", "4K" };
private static readonly HashSet<string> CommonReleaseGroupsProperties = new (StringComparer.OrdinalIgnoreCase) private static readonly HashSet<string> CommonReleaseGroupsProperties = new(StringComparer.OrdinalIgnoreCase)
{ {
"Softsubs", "Softsubs",
"Hardsubs", "Hardsubs",
"RAW", "RAW",
"Translated" "Translated"
}; };
private static readonly HashSet<string> ExcludedFileExtensions = new (StringComparer.OrdinalIgnoreCase) { ".mka", ".mds", ".md5", ".nfo", ".sfv", ".ass", ".mks", ".srt", ".ssa", ".sup", ".jpeg", ".jpg", ".png", ".otf", ".ttf" }; private static readonly HashSet<string> ExcludedFileExtensions = new(StringComparer.OrdinalIgnoreCase) { ".mka", ".mds", ".md5", ".nfo", ".sfv", ".ass", ".mks", ".srt", ".ssa", ".sup", ".jpeg", ".jpg", ".png", ".otf", ".ttf" };
private static readonly string[] PropertiesSeparator = { " | ", " / " }; private static readonly string[] PropertiesSeparator = { " | ", " / " };
@ -712,7 +712,7 @@ public AnimeBytesSettingsValidator()
public class AnimeBytesSettings : NoAuthTorrentBaseSettings public class AnimeBytesSettings : NoAuthTorrentBaseSettings
{ {
private static readonly AnimeBytesSettingsValidator Validator = new (); private static readonly AnimeBytesSettingsValidator Validator = new();
public AnimeBytesSettings() public AnimeBytesSettings()
{ {

View file

@ -15,7 +15,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
public class AvistazParserBase : IParseIndexerResponse public class AvistazParserBase : IParseIndexerResponse
{ {
protected virtual string TimezoneOffset => "-04:00"; // Avistaz does not specify a timezone & returns server time protected virtual string TimezoneOffset => "-04:00"; // Avistaz does not specify a timezone & returns server time
private readonly HashSet<string> _hdResolutions = new () { "1080p", "1080i", "720p" }; private readonly HashSet<string> _hdResolutions = new() { "1080p", "1080i", "720p" };
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; } public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }

View file

@ -17,7 +17,7 @@ public AvistazSettingsValidator()
public class AvistazSettings : NoAuthTorrentBaseSettings public class AvistazSettings : NoAuthTorrentBaseSettings
{ {
private static readonly AvistazSettingsValidator Validator = new (); private static readonly AvistazSettingsValidator Validator = new();
public AvistazSettings() public AvistazSettings()
{ {

View file

@ -234,7 +234,7 @@ public class BakaBTParser : IParseIndexerResponse
{ {
private readonly BakaBTSettings _settings; private readonly BakaBTSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private readonly List<IndexerCategory> _defaultCategories = new () { NewznabStandardCategory.TVAnime }; private readonly List<IndexerCategory> _defaultCategories = new() { NewznabStandardCategory.TVAnime };
public BakaBTParser(BakaBTSettings settings, IndexerCapabilitiesCategories categories) public BakaBTParser(BakaBTSettings settings, IndexerCapabilitiesCategories categories)
{ {

View file

@ -360,7 +360,7 @@ public BeyondHDSettingsValidator()
public class BeyondHDSettings : NoAuthTorrentBaseSettings public class BeyondHDSettings : NoAuthTorrentBaseSettings
{ {
private static readonly BeyondHDSettingsValidator Validator = new (); private static readonly BeyondHDSettingsValidator Validator = new();
public BeyondHDSettings() public BeyondHDSettings()
{ {

View file

@ -216,7 +216,7 @@ public class BinSearchSettings : IIndexerSettings
public string BaseUrl { get; set; } public string BaseUrl { get; set; }
[FieldDefinition(2)] [FieldDefinition(2)]
public IndexerBaseSettings BaseSettings { get; set; } = new (); public IndexerBaseSettings BaseSettings { get; set; } = new();
public NzbDroneValidationResult Validate() public NzbDroneValidationResult Validate()
{ {

View file

@ -12,7 +12,7 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
{ {
public class BroadcastheNetParser : IParseIndexerResponse public class BroadcastheNetParser : IParseIndexerResponse
{ {
private static readonly Regex RegexProtocol = new ("^https?:", RegexOptions.Compiled); private static readonly Regex RegexProtocol = new("^https?:", RegexOptions.Compiled);
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; } public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }

View file

@ -15,7 +15,7 @@ public BroadcastheNetSettingsValidator()
public class BroadcastheNetSettings : NoAuthTorrentBaseSettings public class BroadcastheNetSettings : NoAuthTorrentBaseSettings
{ {
private static readonly BroadcastheNetSettingsValidator Validator = new (); private static readonly BroadcastheNetSettingsValidator Validator = new();
public BroadcastheNetSettings() public BroadcastheNetSettings()
{ {

View file

@ -128,8 +128,8 @@ private IndexerDefinition GetDefinition(CardigannMetaDefinition definition)
{ {
var defaultSettings = new List<SettingsField> var defaultSettings = new List<SettingsField>
{ {
new () { Name = "username", Label = "Username", Type = "text" }, new() { Name = "username", Label = "Username", Type = "text" },
new () { Name = "password", Label = "Password", Type = "password" } new() { Name = "password", Label = "Password", Type = "password" }
}; };
var settings = definition.Settings ?? defaultSettings; var settings = definition.Settings ?? defaultSettings;

View file

@ -27,8 +27,8 @@ public class CardigannBase
protected virtual string SiteLink { get; private set; } protected virtual string SiteLink { get; private set; }
protected readonly IndexerCapabilitiesCategories _categories = new (); protected readonly IndexerCapabilitiesCategories _categories = new();
protected readonly List<string> _defaultCategories = new (); protected readonly List<string> _defaultCategories = new();
protected readonly string[] OptionalFields = new string[] { "imdb", "imdbid", "tmdbid", "rageid", "tvdbid", "tvmazeid", "traktid", "doubanid", "poster", "banner", "description", "genre" }; protected readonly string[] OptionalFields = new string[] { "imdb", "imdbid", "tmdbid", "rageid", "tvdbid", "tvmazeid", "traktid", "doubanid", "poster", "banner", "description", "genre" };

View file

@ -16,7 +16,7 @@ public CardigannSettingsValidator()
public class CardigannSettings : NoAuthTorrentBaseSettings public class CardigannSettings : NoAuthTorrentBaseSettings
{ {
private static readonly CardigannSettingsValidator Validator = new (); private static readonly CardigannSettingsValidator Validator = new();
public CardigannSettings() public CardigannSettings()
{ {

View file

@ -16,7 +16,7 @@ public FileListSettingsValidator()
public class FileListSettings : NoAuthTorrentBaseSettings public class FileListSettings : NoAuthTorrentBaseSettings
{ {
private static readonly FileListSettingsValidator Validator = new (); private static readonly FileListSettingsValidator Validator = new();
public FileListSettings() public FileListSettings()
{ {

View file

@ -228,7 +228,7 @@ public class FunFileParser : IParseIndexerResponse
private readonly UserPassTorrentBaseSettings _settings; private readonly UserPassTorrentBaseSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private readonly List<string> _validTagList = new () private readonly List<string> _validTagList = new()
{ {
"action", "action",
"adventure", "adventure",

View file

@ -11,7 +11,7 @@ public class GazelleSettingsValidator<T> : UserPassBaseSettingsValidator<T>
public class GazelleSettings : UserPassTorrentBaseSettings public class GazelleSettings : UserPassTorrentBaseSettings
{ {
private static readonly GazelleSettingsValidator<GazelleSettings> Validator = new (); private static readonly GazelleSettingsValidator<GazelleSettings> Validator = new();
public string AuthKey { get; set; } public string AuthKey { get; set; }
public string PassKey { get; set; } public string PassKey { get; set; }

View file

@ -19,7 +19,7 @@ public GazelleUserPassOrCookieValidator()
public class GazelleUserPassOrCookieSettings : GazelleSettings public class GazelleUserPassOrCookieSettings : GazelleSettings
{ {
private static readonly GazelleUserPassOrCookieValidator<GazelleUserPassOrCookieSettings> Validator = new (); private static readonly GazelleUserPassOrCookieValidator<GazelleUserPassOrCookieSettings> Validator = new();
[FieldDefinition(4, Label = "Cookie", HelpText = "Use the Cookie field only if 2FA is enabled for your account, leave it empty otherwise.", HelpLink = "https://wiki.servarr.com/useful-tools#finding-cookies", Privacy = PrivacyLevel.Password)] [FieldDefinition(4, Label = "Cookie", HelpText = "Use the Cookie field only if 2FA is enabled for your account, leave it empty otherwise.", HelpLink = "https://wiki.servarr.com/useful-tools#finding-cookies", Privacy = PrivacyLevel.Password)]
public string Cookie { get; set; } public string Cookie { get; set; }

View file

@ -369,7 +369,7 @@ public class GazelleGamesParser : IParseIndexerResponse
private readonly GazelleGamesSettings _settings; private readonly GazelleGamesSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private static Regex YearRegex => new (@"\b(?:19|20|21)\d{2}\b", RegexOptions.Compiled); private static Regex YearRegex => new(@"\b(?:19|20|21)\d{2}\b", RegexOptions.Compiled);
public GazelleGamesParser(GazelleGamesSettings settings, IndexerCapabilitiesCategories categories) public GazelleGamesParser(GazelleGamesSettings settings, IndexerCapabilitiesCategories categories)
{ {
@ -553,7 +553,7 @@ public GazelleGamesSettingsValidator()
public class GazelleGamesSettings : NoAuthTorrentBaseSettings public class GazelleGamesSettings : NoAuthTorrentBaseSettings
{ {
private static readonly GazelleGamesSettingsValidator Validator = new (); private static readonly GazelleGamesSettingsValidator Validator = new();
public GazelleGamesSettings() public GazelleGamesSettings()
{ {

View file

@ -120,7 +120,7 @@ public class GreatPosterWallParser : GazelleParser
private readonly GreatPosterWallSettings _settings; private readonly GreatPosterWallSettings _settings;
private readonly Logger _logger; private readonly Logger _logger;
private readonly HashSet<string> _hdResolutions = new () { "1080p", "1080i", "720p" }; private readonly HashSet<string> _hdResolutions = new() { "1080p", "1080i", "720p" };
public GreatPosterWallParser(GreatPosterWallSettings settings, IndexerCapabilities capabilities, Logger logger) public GreatPosterWallParser(GreatPosterWallSettings settings, IndexerCapabilities capabilities, Logger logger)
: base(settings, capabilities) : base(settings, capabilities)
@ -272,7 +272,7 @@ var res when _hdResolutions.Contains(res) => NewznabStandardCategory.MoviesHD,
public class GreatPosterWallSettings : GazelleUserPassOrCookieSettings public class GreatPosterWallSettings : GazelleUserPassOrCookieSettings
{ {
private static readonly GazelleUserPassOrCookieValidator<GreatPosterWallSettings> Validator = new (); private static readonly GazelleUserPassOrCookieValidator<GreatPosterWallSettings> Validator = new();
[FieldDefinition(6, Label = "Freeleech Only", Type = FieldType.Checkbox, HelpText = "Search freeleech torrents only")] [FieldDefinition(6, Label = "Freeleech Only", Type = FieldType.Checkbox, HelpText = "Search freeleech torrents only")]
public bool FreeleechOnly { get; set; } public bool FreeleechOnly { get; set; }

View file

@ -15,7 +15,7 @@ public class HDBitsParser : IParseIndexerResponse
private readonly HDBitsSettings _settings; private readonly HDBitsSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private readonly List<int> _halfLeechMediums = new () { (int)HdBitsMedium.Bluray, (int)HdBitsMedium.Remux, (int)HdBitsMedium.Capture }; private readonly List<int> _halfLeechMediums = new() { (int)HdBitsMedium.Bluray, (int)HdBitsMedium.Remux, (int)HdBitsMedium.Capture };
public HDBitsParser(HDBitsSettings settings, IndexerCapabilitiesCategories categories) public HDBitsParser(HDBitsSettings settings, IndexerCapabilitiesCategories categories)
{ {

View file

@ -18,7 +18,7 @@ public HDBitsSettingsValidator()
public class HDBitsSettings : NoAuthTorrentBaseSettings public class HDBitsSettings : NoAuthTorrentBaseSettings
{ {
private static readonly HDBitsSettingsValidator Validator = new (); private static readonly HDBitsSettingsValidator Validator = new();
public HDBitsSettings() public HDBitsSettings()
{ {

View file

@ -234,8 +234,8 @@ public class HDTorrentsParser : IParseIndexerResponse
private readonly UserPassTorrentBaseSettings _settings; private readonly UserPassTorrentBaseSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private readonly Regex _posterRegex = new (@"src=\\'./([^']+)\\'", RegexOptions.IgnoreCase); private readonly Regex _posterRegex = new(@"src=\\'./([^']+)\\'", RegexOptions.IgnoreCase);
private readonly HashSet<string> _freeleechRanks = new (StringComparer.OrdinalIgnoreCase) private readonly HashSet<string> _freeleechRanks = new(StringComparer.OrdinalIgnoreCase)
{ {
"VIP", "VIP",
"Uploader", "Uploader",

View file

@ -16,7 +16,7 @@ public HeadphonesSettingsValidator()
public class HeadphonesSettings : IIndexerSettings public class HeadphonesSettings : IIndexerSettings
{ {
private static readonly HeadphonesSettingsValidator Validator = new (); private static readonly HeadphonesSettingsValidator Validator = new();
public HeadphonesSettings() public HeadphonesSettings()
{ {
@ -38,7 +38,7 @@ public HeadphonesSettings()
public string Password { get; set; } public string Password { get; set; }
[FieldDefinition(4)] [FieldDefinition(4)]
public IndexerBaseSettings BaseSettings { get; set; } = new (); public IndexerBaseSettings BaseSettings { get; set; } = new();
public virtual NzbDroneValidationResult Validate() public virtual NzbDroneValidationResult Validate()
{ {

View file

@ -424,7 +424,7 @@ public IPTorrentsValidator()
public class IPTorrentsSettings : CookieTorrentBaseSettings public class IPTorrentsSettings : CookieTorrentBaseSettings
{ {
private static readonly IPTorrentsValidator Validator = new (); private static readonly IPTorrentsValidator Validator = new();
[FieldDefinition(3, Label = "IndexerIPTorrentsSettingsCookieUserAgent", Type = FieldType.Textbox, HelpText = "IndexerIPTorrentsSettingsCookieUserAgentHelpText")] [FieldDefinition(3, Label = "IndexerIPTorrentsSettingsCookieUserAgent", Type = FieldType.Textbox, HelpText = "IndexerIPTorrentsSettingsCookieUserAgentHelpText")]
public string UserAgent { get; set; } public string UserAgent { get; set; }

View file

@ -257,7 +257,7 @@ public class ImmortalSeedParser : IParseIndexerResponse
private readonly ImmortalSeedSettings _settings; private readonly ImmortalSeedSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private readonly Regex _dateAddedRegex = new (@"\d{4}-\d{2}-\d{2} \d{2}:\d{2} [AaPp][Mm]", RegexOptions.Compiled); private readonly Regex _dateAddedRegex = new(@"\d{4}-\d{2}-\d{2} \d{2}:\d{2} [AaPp][Mm]", RegexOptions.Compiled);
public ImmortalSeedParser(ImmortalSeedSettings settings, IndexerCapabilitiesCategories categories) public ImmortalSeedParser(ImmortalSeedSettings settings, IndexerCapabilitiesCategories categories)
{ {

View file

@ -247,7 +247,7 @@ private IEnumerable<IndexerRequest> CreateRequest(SearchCriteriaBase searchCrite
public class KnabenParser : IParseIndexerResponse public class KnabenParser : IParseIndexerResponse
{ {
private static readonly Regex DateTimezoneRegex = new (@"[+-]\d{2}:\d{2}$", RegexOptions.Compiled); private static readonly Regex DateTimezoneRegex = new(@"[+-]\d{2}:\d{2}$", RegexOptions.Compiled);
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;

View file

@ -226,7 +226,7 @@ private IEnumerable<IndexerRequest> GetPagedRequests(SearchCriteriaBase searchCr
public class LibbleParser : IParseIndexerResponse public class LibbleParser : IParseIndexerResponse
{ {
private readonly LibbleSettings _settings; private readonly LibbleSettings _settings;
private static Regex ReleaseYearRegex => new (@"\[(\d{4})\]$", RegexOptions.Compiled); private static Regex ReleaseYearRegex => new(@"\[(\d{4})\]$", RegexOptions.Compiled);
public LibbleParser(LibbleSettings settings) public LibbleParser(LibbleSettings settings)
{ {

View file

@ -427,7 +427,7 @@ public MTeamTpValidator()
public class MTeamTpSettings : NoAuthTorrentBaseSettings public class MTeamTpSettings : NoAuthTorrentBaseSettings
{ {
private static readonly MTeamTpValidator Validator = new (); private static readonly MTeamTpValidator Validator = new();
[FieldDefinition(2, Label = "ApiKey", HelpText = "IndexerMTeamTpSettingsApiKeyHelpText", Privacy = PrivacyLevel.ApiKey)] [FieldDefinition(2, Label = "ApiKey", HelpText = "IndexerMTeamTpSettingsApiKeyHelpText", Privacy = PrivacyLevel.ApiKey)]
public string ApiKey { get; set; } public string ApiKey { get; set; }

View file

@ -258,7 +258,7 @@ private IndexerCapabilities SetCapabilities()
public class MyAnonamouseRequestGenerator : IIndexerRequestGenerator public class MyAnonamouseRequestGenerator : IIndexerRequestGenerator
{ {
private static readonly Regex SanitizeSearchQueryRegex = new ("[^\\w]+", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex SanitizeSearchQueryRegex = new("[^\\w]+", RegexOptions.IgnoreCase | RegexOptions.Compiled);
private readonly MyAnonamouseSettings _settings; private readonly MyAnonamouseSettings _settings;
private readonly IndexerCapabilities _capabilities; private readonly IndexerCapabilities _capabilities;
@ -417,7 +417,7 @@ public class MyAnonamouseParser : IParseIndexerResponse
private readonly Logger _logger; private readonly Logger _logger;
private readonly ICached<string> _userClassCache; private readonly ICached<string> _userClassCache;
private readonly HashSet<string> _vipFreeleechUserClasses = new (StringComparer.OrdinalIgnoreCase) private readonly HashSet<string> _vipFreeleechUserClasses = new(StringComparer.OrdinalIgnoreCase)
{ {
"VIP", "VIP",
"Elite VIP" "Elite VIP"
@ -613,7 +613,7 @@ public MyAnonamouseSettingsValidator()
public class MyAnonamouseSettings : NoAuthTorrentBaseSettings public class MyAnonamouseSettings : NoAuthTorrentBaseSettings
{ {
private static readonly MyAnonamouseSettingsValidator Validator = new (); private static readonly MyAnonamouseSettingsValidator Validator = new();
public MyAnonamouseSettings() public MyAnonamouseSettings()
{ {

View file

@ -49,7 +49,7 @@ public NewznabSettingsValidator()
public class NewznabSettings : IIndexerSettings public class NewznabSettings : IIndexerSettings
{ {
private static readonly NewznabSettingsValidator Validator = new (); private static readonly NewznabSettingsValidator Validator = new();
public NewznabSettings() public NewznabSettings()
{ {
@ -74,7 +74,7 @@ public NewznabSettings()
public string VipExpiration { get; set; } public string VipExpiration { get; set; }
[FieldDefinition(7)] [FieldDefinition(7)]
public IndexerBaseSettings BaseSettings { get; set; } = new (); public IndexerBaseSettings BaseSettings { get; set; } = new();
public NewznabCapabilitiesSettings Capabilities { get; set; } public NewznabCapabilitiesSettings Capabilities { get; set; }

View file

@ -1111,7 +1111,7 @@ public class NzbIndexParser : IParseIndexerResponse
private readonly NzbIndexSettings _settings; private readonly NzbIndexSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private static readonly Regex ParseTitleRegex = new (@"\""(?<title>[^:\/]*?)(?:\.(rar|nfo|mkv|par2|001|nzb|url|zip|r[0-9]{2}))?\""", RegexOptions.Compiled); private static readonly Regex ParseTitleRegex = new(@"\""(?<title>[^:\/]*?)(?:\.(rar|nfo|mkv|par2|001|nzb|url|zip|r[0-9]{2}))?\""", RegexOptions.Compiled);
public NzbIndexParser(NzbIndexSettings settings, IndexerCapabilitiesCategories categories) public NzbIndexParser(NzbIndexSettings settings, IndexerCapabilitiesCategories categories)
{ {
@ -1181,7 +1181,7 @@ public NzbIndexSettingsValidator()
public class NzbIndexSettings : IIndexerSettings public class NzbIndexSettings : IIndexerSettings
{ {
private static readonly NzbIndexSettingsValidator Validator = new (); private static readonly NzbIndexSettingsValidator Validator = new();
public NzbIndexSettings() public NzbIndexSettings()
{ {
@ -1195,7 +1195,7 @@ public NzbIndexSettings()
public string ApiKey { get; set; } public string ApiKey { get; set; }
[FieldDefinition(3)] [FieldDefinition(3)]
public IndexerBaseSettings BaseSettings { get; set; } = new (); public IndexerBaseSettings BaseSettings { get; set; } = new();
public NzbDroneValidationResult Validate() public NzbDroneValidationResult Validate()
{ {

View file

@ -445,7 +445,7 @@ public OrpheusSettingsValidator()
public class OrpheusSettings : NoAuthTorrentBaseSettings public class OrpheusSettings : NoAuthTorrentBaseSettings
{ {
private static readonly OrpheusSettingsValidator Validator = new (); private static readonly OrpheusSettingsValidator Validator = new();
public OrpheusSettings() public OrpheusSettings()
{ {

View file

@ -84,7 +84,7 @@ private IndexerCapabilities SetCapabilities()
public class PassThePopcornFlag : IndexerFlag public class PassThePopcornFlag : IndexerFlag
{ {
public static IndexerFlag Golden => new ("golden", "Release follows Golden Popcorn quality rules"); public static IndexerFlag Golden => new("golden", "Release follows Golden Popcorn quality rules");
public static IndexerFlag Approved => new ("approved", "Release approved by PTP staff"); public static IndexerFlag Approved => new("approved", "Release approved by PTP staff");
} }
} }

View file

@ -16,7 +16,7 @@ public PassThePopcornSettingsValidator()
public class PassThePopcornSettings : NoAuthTorrentBaseSettings public class PassThePopcornSettings : NoAuthTorrentBaseSettings
{ {
private static readonly PassThePopcornSettingsValidator Validator = new (); private static readonly PassThePopcornSettingsValidator Validator = new();
public PassThePopcornSettings() public PassThePopcornSettings()
{ {

View file

@ -242,7 +242,7 @@ public PixelHDSettingsValidator()
public class PixelHDSettings : CookieTorrentBaseSettings public class PixelHDSettings : CookieTorrentBaseSettings
{ {
private static readonly PixelHDSettingsValidator Validator = new (); private static readonly PixelHDSettingsValidator Validator = new();
[FieldDefinition(3, Label = "Cookie User-Agent", Type = FieldType.Textbox, HelpText = "User-Agent associated with cookie used from Browser")] [FieldDefinition(3, Label = "Cookie User-Agent", Type = FieldType.Textbox, HelpText = "User-Agent associated with cookie used from Browser")]
public string UserAgent { get; set; } public string UserAgent { get; set; }

View file

@ -323,7 +323,7 @@ public class PornoLabParser : IParseIndexerResponse
private readonly PornoLabSettings _settings; private readonly PornoLabSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private readonly Logger _logger; private readonly Logger _logger;
private static readonly Regex StripRussianRegex = new (@"(\([\p{IsCyrillic}\W]+\))|(^[\p{IsCyrillic}\W\d]+\/ )|([\p{IsCyrillic} \-]+,+)|([\p{IsCyrillic}]+)"); private static readonly Regex StripRussianRegex = new(@"(\([\p{IsCyrillic}\W]+\))|(^[\p{IsCyrillic}\W\d]+\/ )|([\p{IsCyrillic} \-]+,+)|([\p{IsCyrillic}]+)");
public PornoLabParser(PornoLabSettings settings, IndexerCapabilitiesCategories categories, Logger logger) public PornoLabParser(PornoLabSettings settings, IndexerCapabilitiesCategories categories, Logger logger)
{ {

View file

@ -396,7 +396,7 @@ public PreToMeSettingsValidator()
public class PreToMeSettings : UserPassTorrentBaseSettings public class PreToMeSettings : UserPassTorrentBaseSettings
{ {
private static readonly PreToMeSettingsValidator Validator = new (); private static readonly PreToMeSettingsValidator Validator = new();
[FieldDefinition(4, Label = "Pin", HelpText = "Site Pin", Privacy = PrivacyLevel.Password)] [FieldDefinition(4, Label = "Pin", HelpText = "Site Pin", Privacy = PrivacyLevel.Password)]
public string Pin { get; set; } public string Pin { get; set; }

View file

@ -12,7 +12,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Rarbg
{ {
public class RarbgParser : IParseIndexerResponse public class RarbgParser : IParseIndexerResponse
{ {
private static readonly Regex RegexGuid = new (@"^magnet:\?xt=urn:btih:([a-f0-9]+)", RegexOptions.Compiled); private static readonly Regex RegexGuid = new(@"^magnet:\?xt=urn:btih:([a-f0-9]+)", RegexOptions.Compiled);
private readonly IndexerCapabilities _capabilities; private readonly IndexerCapabilities _capabilities;
private readonly Logger _logger; private readonly Logger _logger;

View file

@ -456,7 +456,7 @@ public RedactedSettingsValidator()
public class RedactedSettings : NoAuthTorrentBaseSettings public class RedactedSettings : NoAuthTorrentBaseSettings
{ {
private static readonly RedactedSettingsValidator Validator = new (); private static readonly RedactedSettingsValidator Validator = new();
public RedactedSettings() public RedactedSettings()
{ {

View file

@ -1579,7 +1579,7 @@ public class RuTrackerParser : IParseIndexerResponse
private readonly RuTrackerSettings _settings; private readonly RuTrackerSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private readonly RuTrackerTitleParser _titleParser = new (); private readonly RuTrackerTitleParser _titleParser = new();
public RuTrackerParser(RuTrackerSettings settings, IndexerCapabilitiesCategories categories) public RuTrackerParser(RuTrackerSettings settings, IndexerCapabilitiesCategories categories)
{ {
@ -1696,22 +1696,22 @@ private DateTime GetPublishDateOfRelease(in IElement row)
public class RuTrackerTitleParser public class RuTrackerTitleParser
{ {
private static readonly List<Regex> FindTagsInTitlesRegexList = new () private static readonly List<Regex> FindTagsInTitlesRegexList = new()
{ {
new Regex(@"\((?>\((?<c>)|[^()]+|\)(?<-c>))*(?(c)(?!))\)"), new Regex(@"\((?>\((?<c>)|[^()]+|\)(?<-c>))*(?(c)(?!))\)"),
new Regex(@"\[(?>\[(?<c>)|[^\[\]]+|\](?<-c>))*(?(c)(?!))\]") new Regex(@"\[(?>\[(?<c>)|[^\[\]]+|\](?<-c>))*(?(c)(?!))\]")
}; };
private readonly Regex _stripCyrillicRegex = new (@"(\([\p{IsCyrillic}\W]+\))|(^[\p{IsCyrillic}\W\d]+\/ )|([\p{IsCyrillic} \-]+,+)|([\p{IsCyrillic}]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _stripCyrillicRegex = new(@"(\([\p{IsCyrillic}\W]+\))|(^[\p{IsCyrillic}\W\d]+\/ )|([\p{IsCyrillic} \-]+,+)|([\p{IsCyrillic}]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleCommaRegex = new (@"\s(\d+),(\d+)", RegexOptions.Compiled); private readonly Regex _tvTitleCommaRegex = new(@"\s(\d+),(\d+)", RegexOptions.Compiled);
private readonly Regex _tvTitleCyrillicXRegex = new (@"([\s-])Х+([\s\)\]])", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleCyrillicXRegex = new(@"([\s-])Х+([\s\)\]])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleRusSeasonEpisodeOfRegex = new (@"Сезон\s*[:]*\s+(\d+).+(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)\s*из\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleRusSeasonEpisodeOfRegex = new(@"Сезон\s*[:]*\s+(\d+).+(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)\s*из\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleRusSeasonEpisodeRegex = new (@"Сезон\s*[:]*\s+(\d+).+(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleRusSeasonEpisodeRegex = new(@"Сезон\s*[:]*\s+(\d+).+(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleRusSeasonRegex = new (@"Сезон\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleRusSeasonRegex = new(@"Сезон\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleRusEpisodeOfRegex = new (@"(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)\s*из\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleRusEpisodeOfRegex = new(@"(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)\s*из\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleRusEpisodeRegex = new (@"(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleRusEpisodeRegex = new(@"(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
public string Parse(string title, public string Parse(string title,
ICollection<IndexerCategory> categories, ICollection<IndexerCategory> categories,

View file

@ -241,7 +241,7 @@ public SceneHDSettingsValidator()
public class SceneHDSettings : NoAuthTorrentBaseSettings public class SceneHDSettings : NoAuthTorrentBaseSettings
{ {
private static readonly SceneHDSettingsValidator Validator = new (); private static readonly SceneHDSettingsValidator Validator = new();
public SceneHDSettings() public SceneHDSettings()
{ {

View file

@ -209,8 +209,8 @@ public class ShazbatParser : IParseIndexerResponse
private readonly IIndexerHttpClient _httpClient; private readonly IIndexerHttpClient _httpClient;
private readonly Logger _logger; private readonly Logger _logger;
private readonly Regex _torrentInfoRegex = new (@"\((?<size>\d+)\):(?<seeders>\d+) \/ :(?<leechers>\d+)$", RegexOptions.Compiled); private readonly Regex _torrentInfoRegex = new(@"\((?<size>\d+)\):(?<seeders>\d+) \/ :(?<leechers>\d+)$", RegexOptions.Compiled);
private readonly HashSet<string> _hdResolutions = new () { "1080p", "1080i", "720p" }; private readonly HashSet<string> _hdResolutions = new() { "1080p", "1080i", "720p" };
public ShazbatParser(ProviderDefinition definition, ShazbatSettings settings, TimeSpan rateLimit, IIndexerHttpClient httpClient, Logger logger) public ShazbatParser(ProviderDefinition definition, ShazbatSettings settings, TimeSpan rateLimit, IIndexerHttpClient httpClient, Logger logger)
{ {
@ -393,7 +393,7 @@ public ShazbatSettingsValidator()
public class ShazbatSettings : UserPassTorrentBaseSettings public class ShazbatSettings : UserPassTorrentBaseSettings
{ {
private static readonly ShazbatSettingsValidator Validator = new (); private static readonly ShazbatSettingsValidator Validator = new();
[FieldDefinition(4, Type = FieldType.Number, Label = "Show Pages Fetch Limit", HelpText = "The number of show pages should Prowlarr fetch when searching. Default: 2.")] [FieldDefinition(4, Type = FieldType.Number, Label = "Show Pages Fetch Limit", HelpText = "The number of show pages should Prowlarr fetch when searching. Default: 2.")]
public int? ShowPagesFetchLimit { get; set; } public int? ShowPagesFetchLimit { get; set; }

View file

@ -302,7 +302,7 @@ public SpeedAppSettingsValidator()
public class SpeedAppSettings : NoAuthTorrentBaseSettings public class SpeedAppSettings : NoAuthTorrentBaseSettings
{ {
private static readonly SpeedAppSettingsValidator Validator = new (); private static readonly SpeedAppSettingsValidator Validator = new();
public SpeedAppSettings() public SpeedAppSettings()
{ {

View file

@ -75,7 +75,7 @@ private IndexerCapabilities SetCapabilities()
public class SubsPleaseRequestGenerator : IIndexerRequestGenerator public class SubsPleaseRequestGenerator : IIndexerRequestGenerator
{ {
private static readonly Regex ResolutionRegex = new (@"\d{3,4}p", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex ResolutionRegex = new(@"\d{3,4}p", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly NoAuthTorrentBaseSettings _settings; private readonly NoAuthTorrentBaseSettings _settings;
@ -172,7 +172,7 @@ private IEnumerable<IndexerRequest> GetSearchRequests(string term, SearchCriteri
public class SubsPleaseParser : IParseIndexerResponse public class SubsPleaseParser : IParseIndexerResponse
{ {
private static readonly Regex RegexSize = new (@"\&xl=(?<size>\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex RegexSize = new(@"\&xl=(?<size>\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly NoAuthTorrentBaseSettings _settings; private readonly NoAuthTorrentBaseSettings _settings;

View file

@ -355,7 +355,7 @@ public class TolokaParser : IParseIndexerResponse
private readonly TolokaSettings _settings; private readonly TolokaSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private readonly TolokaTitleParser _titleParser = new (); private readonly TolokaTitleParser _titleParser = new();
public TolokaParser(TolokaSettings settings, IndexerCapabilitiesCategories categories) public TolokaParser(TolokaSettings settings, IndexerCapabilitiesCategories categories)
{ {
@ -437,30 +437,30 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
public class TolokaTitleParser public class TolokaTitleParser
{ {
private static readonly List<Regex> FindTagsInTitlesRegexList = new () private static readonly List<Regex> FindTagsInTitlesRegexList = new()
{ {
new Regex(@"\((?>\((?<c>)|[^()]+|\)(?<-c>))*(?(c)(?!))\)"), new Regex(@"\((?>\((?<c>)|[^()]+|\)(?<-c>))*(?(c)(?!))\)"),
new Regex(@"\[(?>\[(?<c>)|[^\[\]]+|\](?<-c>))*(?(c)(?!))\]") new Regex(@"\[(?>\[(?<c>)|[^\[\]]+|\](?<-c>))*(?(c)(?!))\]")
}; };
private readonly Regex _tvTitleCommaRegex = new (@"\s(\d+),(\d+)", RegexOptions.Compiled); private readonly Regex _tvTitleCommaRegex = new(@"\s(\d+),(\d+)", RegexOptions.Compiled);
private readonly Regex _tvTitleCyrillicXRegex = new (@"([\s-])Х+([\)\]])", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleCyrillicXRegex = new(@"([\s-])Х+([\)\]])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleMultipleSeasonsRegex = new (@"(?:Сезон|Seasons?)\s*[:]*\s+(\d+-\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleMultipleSeasonsRegex = new(@"(?:Сезон|Seasons?)\s*[:]*\s+(\d+-\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleUkrSeasonEpisodeOfRegex = new (@"Сезон\s*[:]*\s+(\d+).+(?:Серії|Серія|Серій|Епізод)+\s*[:]*\s+(\d+(?:-\d+)?)\s*з\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleUkrSeasonEpisodeOfRegex = new(@"Сезон\s*[:]*\s+(\d+).+(?:Серії|Серія|Серій|Епізод)+\s*[:]*\s+(\d+(?:-\d+)?)\s*з\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleUkrSeasonEpisodeRegex = new (@"Сезон\s*[:]*\s+(\d+).+(?:Серії|Серія|Серій|Епізод)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleUkrSeasonEpisodeRegex = new(@"Сезон\s*[:]*\s+(\d+).+(?:Серії|Серія|Серій|Епізод)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleUkrSeasonRegex = new (@"Сезон\s*[:]*\s+(\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleUkrSeasonRegex = new(@"Сезон\s*[:]*\s+(\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleUkrEpisodeOfRegex = new (@"(?:Серії|Серія|Серій|Епізод)+\s*[:]*\s+(\d+(?:-\d+)?)\s*з\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleUkrEpisodeOfRegex = new(@"(?:Серії|Серія|Серій|Епізод)+\s*[:]*\s+(\d+(?:-\d+)?)\s*з\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleUkrEpisodeRegex = new (@"(?:Серії|Серія|Серій|Епізод)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleUkrEpisodeRegex = new(@"(?:Серії|Серія|Серій|Епізод)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleEngSeasonEpisodeOfRegex = new (@"Season\s*[:]*\s+(\d+).+(?:Episodes?)+\s*[:]*\s+(\d+(?:-\d+)?)\s*of\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleEngSeasonEpisodeOfRegex = new(@"Season\s*[:]*\s+(\d+).+(?:Episodes?)+\s*[:]*\s+(\d+(?:-\d+)?)\s*of\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleEngSeasonEpisodeRegex = new (@"Season\s*[:]*\s+(\d+).+(?:Episodes?)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleEngSeasonEpisodeRegex = new(@"Season\s*[:]*\s+(\d+).+(?:Episodes?)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleEngSeasonRegex = new (@"Season\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleEngSeasonRegex = new(@"Season\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleEngEpisodeOfRegex = new (@"(?:Episodes?)+\s*[:]*\s+(\d+(?:-\d+)?)\s*of\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleEngEpisodeOfRegex = new(@"(?:Episodes?)+\s*[:]*\s+(\d+(?:-\d+)?)\s*of\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _tvTitleEngEpisodeRegex = new (@"(?:Episodes?)+\s*[:]+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _tvTitleEngEpisodeRegex = new(@"(?:Episodes?)+\s*[:]+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Regex _stripCyrillicRegex = new (@"(\([\p{IsCyrillic}\W]+\))|(^[\p{IsCyrillic}\W\d]+\/ )|([\p{IsCyrillic} \-]+,+)|([\p{IsCyrillic}]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly Regex _stripCyrillicRegex = new(@"(\([\p{IsCyrillic}\W]+\))|(^[\p{IsCyrillic}\W\d]+\/ )|([\p{IsCyrillic} \-]+,+)|([\p{IsCyrillic}]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
public string Parse(string title, ICollection<IndexerCategory> categories, bool stripCyrillicLetters = true) public string Parse(string title, ICollection<IndexerCategory> categories, bool stripCyrillicLetters = true)
{ {

View file

@ -12,7 +12,7 @@ namespace NzbDrone.Core.Indexers.Definitions.TorrentPotato
{ {
public class TorrentPotatoParser : IParseIndexerResponse public class TorrentPotatoParser : IParseIndexerResponse
{ {
private static readonly Regex RegexGuid = new (@"^magnet:\?xt=urn:btih:([a-f0-9]+)", RegexOptions.Compiled); private static readonly Regex RegexGuid = new(@"^magnet:\?xt=urn:btih:([a-f0-9]+)", RegexOptions.Compiled);
public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse) public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
{ {

View file

@ -19,7 +19,7 @@ public TorrentPotatoSettingsValidator()
public class TorrentPotatoSettings : ITorrentIndexerSettings public class TorrentPotatoSettings : ITorrentIndexerSettings
{ {
private static readonly TorrentPotatoSettingsValidator Validator = new (); private static readonly TorrentPotatoSettingsValidator Validator = new();
[FieldDefinition(0, Label = "API URL", HelpText = "URL to TorrentPotato API")] [FieldDefinition(0, Label = "API URL", HelpText = "URL to TorrentPotato API")]
public string BaseUrl { get; set; } public string BaseUrl { get; set; }
@ -31,10 +31,10 @@ public class TorrentPotatoSettings : ITorrentIndexerSettings
public string Passkey { get; set; } public string Passkey { get; set; }
[FieldDefinition(20)] [FieldDefinition(20)]
public IndexerBaseSettings BaseSettings { get; set; } = new (); public IndexerBaseSettings BaseSettings { get; set; } = new();
[FieldDefinition(21)] [FieldDefinition(21)]
public IndexerTorrentBaseSettings TorrentBaseSettings { get; set; } = new (); public IndexerTorrentBaseSettings TorrentBaseSettings { get; set; } = new();
public virtual NzbDroneValidationResult Validate() public virtual NzbDroneValidationResult Validate()
{ {

View file

@ -17,7 +17,7 @@ public TorrentRssIndexerSettingsValidator()
public class TorrentRssIndexerSettings : ITorrentIndexerSettings public class TorrentRssIndexerSettings : ITorrentIndexerSettings
{ {
private static readonly TorrentRssIndexerSettingsValidator Validator = new (); private static readonly TorrentRssIndexerSettingsValidator Validator = new();
public TorrentRssIndexerSettings() public TorrentRssIndexerSettings()
{ {
@ -38,10 +38,10 @@ public TorrentRssIndexerSettings()
public double? DefaultReleaseSize { get; set; } public double? DefaultReleaseSize { get; set; }
[FieldDefinition(20)] [FieldDefinition(20)]
public IndexerBaseSettings BaseSettings { get; set; } = new (); public IndexerBaseSettings BaseSettings { get; set; } = new();
[FieldDefinition(21)] [FieldDefinition(21)]
public IndexerTorrentBaseSettings TorrentBaseSettings { get; set; } = new (); public IndexerTorrentBaseSettings TorrentBaseSettings { get; set; } = new();
public NzbDroneValidationResult Validate() public NzbDroneValidationResult Validate()
{ {

View file

@ -328,7 +328,7 @@ public TorrentSyndikatSettingsValidator()
public class TorrentSyndikatSettings : NoAuthTorrentBaseSettings public class TorrentSyndikatSettings : NoAuthTorrentBaseSettings
{ {
private static readonly TorrentSyndikatSettingsValidator Validator = new (); private static readonly TorrentSyndikatSettingsValidator Validator = new();
public TorrentSyndikatSettings() public TorrentSyndikatSettings()
{ {

View file

@ -34,10 +34,10 @@ public TorznabSettingsValidator()
public class TorznabSettings : NewznabSettings, ITorrentIndexerSettings public class TorznabSettings : NewznabSettings, ITorrentIndexerSettings
{ {
private static readonly TorznabSettingsValidator Validator = new (); private static readonly TorznabSettingsValidator Validator = new();
[FieldDefinition(3)] [FieldDefinition(3)]
public IndexerTorrentBaseSettings TorrentBaseSettings { get; set; } = new (); public IndexerTorrentBaseSettings TorrentBaseSettings { get; set; } = new();
public override NzbDroneValidationResult Validate() public override NzbDroneValidationResult Validate()
{ {

View file

@ -15,7 +15,7 @@ public Unit3dSettingsValidator()
public class Unit3dSettings : NoAuthTorrentBaseSettings public class Unit3dSettings : NoAuthTorrentBaseSettings
{ {
private static readonly Unit3dSettingsValidator Validator = new (); private static readonly Unit3dSettingsValidator Validator = new();
[FieldDefinition(2, Label = "ApiKey", HelpText = "Site API Key generated in My Security", Privacy = PrivacyLevel.ApiKey)] [FieldDefinition(2, Label = "ApiKey", HelpText = "Site API Key generated in My Security", Privacy = PrivacyLevel.ApiKey)]
public string ApiKey { get; set; } public string ApiKey { get; set; }

View file

@ -290,7 +290,7 @@ public class XSpeedsParser : IParseIndexerResponse
private readonly XSpeedsSettings _settings; private readonly XSpeedsSettings _settings;
private readonly IndexerCapabilitiesCategories _categories; private readonly IndexerCapabilitiesCategories _categories;
private readonly Regex _dateAddedRegex = new (@"\d{2}-\d{2}-\d{4} \d{2}:\d{2}", RegexOptions.Compiled); private readonly Regex _dateAddedRegex = new(@"\d{2}-\d{2}-\d{4} \d{2}:\d{2}", RegexOptions.Compiled);
public XSpeedsParser(XSpeedsSettings settings, IndexerCapabilitiesCategories categories) public XSpeedsParser(XSpeedsSettings settings, IndexerCapabilitiesCategories categories)
{ {

View file

@ -10,7 +10,7 @@ public class XthorSettingsValidator : NoAuthSettingsValidator<XthorSettings>
public class XthorSettings : NoAuthTorrentBaseSettings public class XthorSettings : NoAuthTorrentBaseSettings
{ {
private static readonly XthorSettingsValidator Validator = new (); private static readonly XthorSettingsValidator Validator = new();
public XthorSettings() public XthorSettings()
{ {

View file

@ -29,6 +29,6 @@ public class IndexerDefinition : ProviderDefinition
public int AppProfileId { get; set; } public int AppProfileId { get; set; }
public LazyLoaded<AppSyncProfile> AppProfile { get; set; } public LazyLoaded<AppSyncProfile> AppProfile { get; set; }
public List<SettingsField> ExtraFields { get; set; } = new (); public List<SettingsField> ExtraFields { get; set; } = new();
} }
} }

View file

@ -62,12 +62,12 @@ public override bool Equals(object obj)
return !Equals(left, right); return !Equals(left, right);
} }
public static IndexerFlag Internal => new ("internal", "Uploader is an internal release group"); public static IndexerFlag Internal => new("internal", "Uploader is an internal release group");
public static IndexerFlag Exclusive => new ("exclusive", "An exclusive release that must not be uploaded anywhere else"); public static IndexerFlag Exclusive => new("exclusive", "An exclusive release that must not be uploaded anywhere else");
public static IndexerFlag FreeLeech => new ("freeleech", "Download doesn't count toward ratio"); public static IndexerFlag FreeLeech => new("freeleech", "Download doesn't count toward ratio");
public static IndexerFlag NeutralLeech => new ("neutralleech", "Download and upload doesn't count toward ratio"); public static IndexerFlag NeutralLeech => new("neutralleech", "Download and upload doesn't count toward ratio");
public static IndexerFlag HalfLeech => new ("halfleech", "Release counts 50% to ratio"); public static IndexerFlag HalfLeech => new("halfleech", "Release counts 50% to ratio");
public static IndexerFlag Scene => new ("scene", "Uploader follows scene rules"); public static IndexerFlag Scene => new("scene", "Uploader follows scene rules");
public static IndexerFlag DoubleUpload => new ("doubleupload", "Seeding counts double for release"); public static IndexerFlag DoubleUpload => new("doubleupload", "Seeding counts double for release");
} }
} }

View file

@ -8,7 +8,7 @@ namespace NzbDrone.Core.Indexers
{ {
public static class MagnetLinkBuilder public static class MagnetLinkBuilder
{ {
private static readonly List<string> Trackers = new () private static readonly List<string> Trackers = new()
{ {
"http://tracker.opentrackr.org:1337/announce", "http://tracker.opentrackr.org:1337/announce",
"udp://tracker.auctor.tv:6969/announce", "udp://tracker.auctor.tv:6969/announce",

View file

@ -5,90 +5,90 @@ namespace NzbDrone.Core.Indexers
{ {
public static class NewznabStandardCategory public static class NewznabStandardCategory
{ {
public static readonly IndexerCategory ZedOther = new (0000, "Other"); public static readonly IndexerCategory ZedOther = new(0000, "Other");
public static readonly IndexerCategory ZedOtherMisc = new (0010, "Other/Misc"); public static readonly IndexerCategory ZedOtherMisc = new(0010, "Other/Misc");
public static readonly IndexerCategory ZedOtherHashed = new (0020, "Other/Hashed"); public static readonly IndexerCategory ZedOtherHashed = new(0020, "Other/Hashed");
public static readonly IndexerCategory Console = new (1000, "Console"); public static readonly IndexerCategory Console = new(1000, "Console");
public static readonly IndexerCategory ConsoleNDS = new (1010, "Console/NDS"); public static readonly IndexerCategory ConsoleNDS = new(1010, "Console/NDS");
public static readonly IndexerCategory ConsolePSP = new (1020, "Console/PSP"); public static readonly IndexerCategory ConsolePSP = new(1020, "Console/PSP");
public static readonly IndexerCategory ConsoleWii = new (1030, "Console/Wii"); public static readonly IndexerCategory ConsoleWii = new(1030, "Console/Wii");
public static readonly IndexerCategory ConsoleXBox = new (1040, "Console/XBox"); public static readonly IndexerCategory ConsoleXBox = new(1040, "Console/XBox");
public static readonly IndexerCategory ConsoleXBox360 = new (1050, "Console/XBox 360"); public static readonly IndexerCategory ConsoleXBox360 = new(1050, "Console/XBox 360");
public static readonly IndexerCategory ConsoleWiiware = new (1060, "Console/Wiiware"); public static readonly IndexerCategory ConsoleWiiware = new(1060, "Console/Wiiware");
public static readonly IndexerCategory ConsoleXBox360DLC = new (1070, "Console/XBox 360 DLC"); public static readonly IndexerCategory ConsoleXBox360DLC = new(1070, "Console/XBox 360 DLC");
public static readonly IndexerCategory ConsolePS3 = new (1080, "Console/PS3"); public static readonly IndexerCategory ConsolePS3 = new(1080, "Console/PS3");
public static readonly IndexerCategory ConsoleOther = new (1090, "Console/Other"); public static readonly IndexerCategory ConsoleOther = new(1090, "Console/Other");
public static readonly IndexerCategory Console3DS = new (1110, "Console/3DS"); public static readonly IndexerCategory Console3DS = new(1110, "Console/3DS");
public static readonly IndexerCategory ConsolePSVita = new (1120, "Console/PS Vita"); public static readonly IndexerCategory ConsolePSVita = new(1120, "Console/PS Vita");
public static readonly IndexerCategory ConsoleWiiU = new (1130, "Console/WiiU"); public static readonly IndexerCategory ConsoleWiiU = new(1130, "Console/WiiU");
public static readonly IndexerCategory ConsoleXBoxOne = new (1140, "Console/XBox One"); public static readonly IndexerCategory ConsoleXBoxOne = new(1140, "Console/XBox One");
public static readonly IndexerCategory ConsolePS4 = new (1180, "Console/PS4"); public static readonly IndexerCategory ConsolePS4 = new(1180, "Console/PS4");
public static readonly IndexerCategory Movies = new (2000, "Movies"); public static readonly IndexerCategory Movies = new(2000, "Movies");
public static readonly IndexerCategory MoviesForeign = new (2010, "Movies/Foreign"); public static readonly IndexerCategory MoviesForeign = new(2010, "Movies/Foreign");
public static readonly IndexerCategory MoviesOther = new (2020, "Movies/Other"); public static readonly IndexerCategory MoviesOther = new(2020, "Movies/Other");
public static readonly IndexerCategory MoviesSD = new (2030, "Movies/SD"); public static readonly IndexerCategory MoviesSD = new(2030, "Movies/SD");
public static readonly IndexerCategory MoviesHD = new (2040, "Movies/HD"); public static readonly IndexerCategory MoviesHD = new(2040, "Movies/HD");
public static readonly IndexerCategory MoviesUHD = new (2045, "Movies/UHD"); public static readonly IndexerCategory MoviesUHD = new(2045, "Movies/UHD");
public static readonly IndexerCategory MoviesBluRay = new (2050, "Movies/BluRay"); public static readonly IndexerCategory MoviesBluRay = new(2050, "Movies/BluRay");
public static readonly IndexerCategory Movies3D = new (2060, "Movies/3D"); public static readonly IndexerCategory Movies3D = new(2060, "Movies/3D");
public static readonly IndexerCategory MoviesDVD = new (2070, "Movies/DVD"); public static readonly IndexerCategory MoviesDVD = new(2070, "Movies/DVD");
public static readonly IndexerCategory MoviesWEBDL = new (2080, "Movies/WEB-DL"); public static readonly IndexerCategory MoviesWEBDL = new(2080, "Movies/WEB-DL");
public static readonly IndexerCategory Moviesx265 = new (2090, "Movies/x265"); public static readonly IndexerCategory Moviesx265 = new(2090, "Movies/x265");
public static readonly IndexerCategory Audio = new (3000, "Audio"); public static readonly IndexerCategory Audio = new(3000, "Audio");
public static readonly IndexerCategory AudioMP3 = new (3010, "Audio/MP3"); public static readonly IndexerCategory AudioMP3 = new(3010, "Audio/MP3");
public static readonly IndexerCategory AudioVideo = new (3020, "Audio/Video"); public static readonly IndexerCategory AudioVideo = new(3020, "Audio/Video");
public static readonly IndexerCategory AudioAudiobook = new (3030, "Audio/Audiobook"); public static readonly IndexerCategory AudioAudiobook = new(3030, "Audio/Audiobook");
public static readonly IndexerCategory AudioLossless = new (3040, "Audio/Lossless"); public static readonly IndexerCategory AudioLossless = new(3040, "Audio/Lossless");
public static readonly IndexerCategory AudioOther = new (3050, "Audio/Other"); public static readonly IndexerCategory AudioOther = new(3050, "Audio/Other");
public static readonly IndexerCategory AudioForeign = new (3060, "Audio/Foreign"); public static readonly IndexerCategory AudioForeign = new(3060, "Audio/Foreign");
public static readonly IndexerCategory PC = new (4000, "PC"); public static readonly IndexerCategory PC = new(4000, "PC");
public static readonly IndexerCategory PC0day = new (4010, "PC/0day"); public static readonly IndexerCategory PC0day = new(4010, "PC/0day");
public static readonly IndexerCategory PCISO = new (4020, "PC/ISO"); public static readonly IndexerCategory PCISO = new(4020, "PC/ISO");
public static readonly IndexerCategory PCMac = new (4030, "PC/Mac"); public static readonly IndexerCategory PCMac = new(4030, "PC/Mac");
public static readonly IndexerCategory PCMobileOther = new (4040, "PC/Mobile-Other"); public static readonly IndexerCategory PCMobileOther = new(4040, "PC/Mobile-Other");
public static readonly IndexerCategory PCGames = new (4050, "PC/Games"); public static readonly IndexerCategory PCGames = new(4050, "PC/Games");
public static readonly IndexerCategory PCMobileiOS = new (4060, "PC/Mobile-iOS"); public static readonly IndexerCategory PCMobileiOS = new(4060, "PC/Mobile-iOS");
public static readonly IndexerCategory PCMobileAndroid = new (4070, "PC/Mobile-Android"); public static readonly IndexerCategory PCMobileAndroid = new(4070, "PC/Mobile-Android");
public static readonly IndexerCategory TV = new (5000, "TV"); public static readonly IndexerCategory TV = new(5000, "TV");
public static readonly IndexerCategory TVWEBDL = new (5010, "TV/WEB-DL"); public static readonly IndexerCategory TVWEBDL = new(5010, "TV/WEB-DL");
public static readonly IndexerCategory TVForeign = new (5020, "TV/Foreign"); public static readonly IndexerCategory TVForeign = new(5020, "TV/Foreign");
public static readonly IndexerCategory TVSD = new (5030, "TV/SD"); public static readonly IndexerCategory TVSD = new(5030, "TV/SD");
public static readonly IndexerCategory TVHD = new (5040, "TV/HD"); public static readonly IndexerCategory TVHD = new(5040, "TV/HD");
public static readonly IndexerCategory TVUHD = new (5045, "TV/UHD"); public static readonly IndexerCategory TVUHD = new(5045, "TV/UHD");
public static readonly IndexerCategory TVOther = new (5050, "TV/Other"); public static readonly IndexerCategory TVOther = new(5050, "TV/Other");
public static readonly IndexerCategory TVSport = new (5060, "TV/Sport"); public static readonly IndexerCategory TVSport = new(5060, "TV/Sport");
public static readonly IndexerCategory TVAnime = new (5070, "TV/Anime"); public static readonly IndexerCategory TVAnime = new(5070, "TV/Anime");
public static readonly IndexerCategory TVDocumentary = new (5080, "TV/Documentary"); public static readonly IndexerCategory TVDocumentary = new(5080, "TV/Documentary");
public static readonly IndexerCategory TVx265 = new (5090, "TV/x265"); public static readonly IndexerCategory TVx265 = new(5090, "TV/x265");
public static readonly IndexerCategory XXX = new (6000, "XXX"); public static readonly IndexerCategory XXX = new(6000, "XXX");
public static readonly IndexerCategory XXXDVD = new (6010, "XXX/DVD"); public static readonly IndexerCategory XXXDVD = new(6010, "XXX/DVD");
public static readonly IndexerCategory XXXWMV = new (6020, "XXX/WMV"); public static readonly IndexerCategory XXXWMV = new(6020, "XXX/WMV");
public static readonly IndexerCategory XXXXviD = new (6030, "XXX/XviD"); public static readonly IndexerCategory XXXXviD = new(6030, "XXX/XviD");
public static readonly IndexerCategory XXXx264 = new (6040, "XXX/x264"); public static readonly IndexerCategory XXXx264 = new(6040, "XXX/x264");
public static readonly IndexerCategory XXXUHD = new (6045, "XXX/UHD"); public static readonly IndexerCategory XXXUHD = new(6045, "XXX/UHD");
public static readonly IndexerCategory XXXPack = new (6050, "XXX/Pack"); public static readonly IndexerCategory XXXPack = new(6050, "XXX/Pack");
public static readonly IndexerCategory XXXImageSet = new (6060, "XXX/ImageSet"); public static readonly IndexerCategory XXXImageSet = new(6060, "XXX/ImageSet");
public static readonly IndexerCategory XXXOther = new (6070, "XXX/Other"); public static readonly IndexerCategory XXXOther = new(6070, "XXX/Other");
public static readonly IndexerCategory XXXSD = new (6080, "XXX/SD"); public static readonly IndexerCategory XXXSD = new(6080, "XXX/SD");
public static readonly IndexerCategory XXXWEBDL = new (6090, "XXX/WEB-DL"); public static readonly IndexerCategory XXXWEBDL = new(6090, "XXX/WEB-DL");
public static readonly IndexerCategory Books = new (7000, "Books"); public static readonly IndexerCategory Books = new(7000, "Books");
public static readonly IndexerCategory BooksMags = new (7010, "Books/Mags"); public static readonly IndexerCategory BooksMags = new(7010, "Books/Mags");
public static readonly IndexerCategory BooksEBook = new (7020, "Books/EBook"); public static readonly IndexerCategory BooksEBook = new(7020, "Books/EBook");
public static readonly IndexerCategory BooksComics = new (7030, "Books/Comics"); public static readonly IndexerCategory BooksComics = new(7030, "Books/Comics");
public static readonly IndexerCategory BooksTechnical = new (7040, "Books/Technical"); public static readonly IndexerCategory BooksTechnical = new(7040, "Books/Technical");
public static readonly IndexerCategory BooksOther = new (7050, "Books/Other"); public static readonly IndexerCategory BooksOther = new(7050, "Books/Other");
public static readonly IndexerCategory BooksForeign = new (7060, "Books/Foreign"); public static readonly IndexerCategory BooksForeign = new(7060, "Books/Foreign");
public static readonly IndexerCategory Other = new (8000, "Other"); public static readonly IndexerCategory Other = new(8000, "Other");
public static readonly IndexerCategory OtherMisc = new (8010, "Other/Misc"); public static readonly IndexerCategory OtherMisc = new(8010, "Other/Misc");
public static readonly IndexerCategory OtherHashed = new (8020, "Other/Hashed"); public static readonly IndexerCategory OtherHashed = new(8020, "Other/Hashed");
public static readonly IndexerCategory[] ParentCats = public static readonly IndexerCategory[] ParentCats =
{ {

View file

@ -15,7 +15,7 @@ public CookieBaseSettingsValidator()
public class CookieTorrentBaseSettings : NoAuthTorrentBaseSettings public class CookieTorrentBaseSettings : NoAuthTorrentBaseSettings
{ {
private static readonly CookieBaseSettingsValidator<CookieTorrentBaseSettings> Validator = new (); private static readonly CookieBaseSettingsValidator<CookieTorrentBaseSettings> Validator = new();
public CookieTorrentBaseSettings() public CookieTorrentBaseSettings()
{ {

View file

@ -16,16 +16,16 @@ public NoAuthSettingsValidator()
public class NoAuthTorrentBaseSettings : ITorrentIndexerSettings public class NoAuthTorrentBaseSettings : ITorrentIndexerSettings
{ {
private static readonly NoAuthSettingsValidator<NoAuthTorrentBaseSettings> Validator = new (); private static readonly NoAuthSettingsValidator<NoAuthTorrentBaseSettings> Validator = new();
[FieldDefinition(1, Label = "IndexerSettingsBaseUrl", Type = FieldType.Select, SelectOptionsProviderAction = "getUrls", HelpText = "IndexerSettingsBaseUrlHelpText")] [FieldDefinition(1, Label = "IndexerSettingsBaseUrl", Type = FieldType.Select, SelectOptionsProviderAction = "getUrls", HelpText = "IndexerSettingsBaseUrlHelpText")]
public string BaseUrl { get; set; } public string BaseUrl { get; set; }
[FieldDefinition(20)] [FieldDefinition(20)]
public IndexerBaseSettings BaseSettings { get; set; } = new (); public IndexerBaseSettings BaseSettings { get; set; } = new();
[FieldDefinition(21)] [FieldDefinition(21)]
public IndexerTorrentBaseSettings TorrentBaseSettings { get; set; } = new (); public IndexerTorrentBaseSettings TorrentBaseSettings { get; set; } = new();
public virtual NzbDroneValidationResult Validate() public virtual NzbDroneValidationResult Validate()
{ {

View file

@ -16,7 +16,7 @@ public UserPassBaseSettingsValidator()
public class UserPassTorrentBaseSettings : NoAuthTorrentBaseSettings public class UserPassTorrentBaseSettings : NoAuthTorrentBaseSettings
{ {
private static readonly UserPassBaseSettingsValidator<UserPassTorrentBaseSettings> Validator = new (); private static readonly UserPassBaseSettingsValidator<UserPassTorrentBaseSettings> Validator = new();
public UserPassTorrentBaseSettings() public UserPassTorrentBaseSettings()
{ {

View file

@ -106,7 +106,8 @@ public void PublishEvent<TEvent>(TEvent @event)
_taskFactory.StartNew(() => _taskFactory.StartNew(() =>
{ {
handlerLocal.HandleAsync(@event); handlerLocal.HandleAsync(@event);
}, TaskCreationOptions.PreferFairness) },
TaskCreationOptions.PreferFairness)
.LogExceptions(); .LogExceptions();
} }
@ -119,7 +120,8 @@ public void PublishEvent<TEvent>(TEvent @event)
_logger.Trace("{0} ~> {1}", eventName, handlerLocal.GetType().Name); _logger.Trace("{0} ~> {1}", eventName, handlerLocal.GetType().Name);
handlerLocal.HandleAsync(@event); handlerLocal.HandleAsync(@event);
_logger.Trace("{0} <~ {1}", eventName, handlerLocal.GetType().Name); _logger.Trace("{0} <~ {1}", eventName, handlerLocal.GetType().Name);
}, TaskCreationOptions.PreferFairness) },
TaskCreationOptions.PreferFairness)
.LogExceptions(); .LogExceptions();
} }
} }

View file

@ -37,7 +37,7 @@ public AppriseSettingsValidator()
public class AppriseSettings : IProviderConfig public class AppriseSettings : IProviderConfig
{ {
private static readonly AppriseSettingsValidator Validator = new (); private static readonly AppriseSettingsValidator Validator = new();
public AppriseSettings() public AppriseSettings()
{ {

View file

@ -39,7 +39,7 @@ public CustomScript(IConfigFileProvider configFileProvider,
public override string Link => "https://wiki.servarr.com/prowlarr/settings#connections"; public override string Link => "https://wiki.servarr.com/prowlarr/settings#connections";
public override ProviderMessage Message => new ("Testing will execute the script with the EventType set to Test, ensure your script handles this correctly", ProviderMessageType.Warning); public override ProviderMessage Message => new("Testing will execute the script with the EventType set to Test, ensure your script handles this correctly", ProviderMessageType.Warning);
public override void OnGrab(GrabMessage message) public override void OnGrab(GrabMessage message)
{ {

View file

@ -135,12 +135,12 @@ public override void OnApplicationUpdate(ApplicationUpdateMessage updateMessage)
Color = (int)DiscordColors.Standard, Color = (int)DiscordColors.Standard,
Fields = new List<DiscordField> Fields = new List<DiscordField>
{ {
new () new()
{ {
Name = "Previous Version", Name = "Previous Version",
Value = updateMessage.PreviousVersion.ToString() Value = updateMessage.PreviousVersion.ToString()
}, },
new () new()
{ {
Name = "New Version", Name = "New Version",
Value = updateMessage.NewVersion.ToString() Value = updateMessage.NewVersion.ToString()

View file

@ -30,7 +30,7 @@ public DiscordSettings()
}; };
} }
private static readonly DiscordSettingsValidator Validator = new (); private static readonly DiscordSettingsValidator Validator = new();
[FieldDefinition(0, Label = "Webhook URL", HelpText = "Discord channel webhook url")] [FieldDefinition(0, Label = "Webhook URL", HelpText = "Discord channel webhook url")]
public string WebHookUrl { get; set; } public string WebHookUrl { get; set; }

View file

@ -16,7 +16,7 @@ public PushcutSettingsValidator()
public class PushcutSettings : IProviderConfig public class PushcutSettings : IProviderConfig
{ {
private static readonly PushcutSettingsValidator Validator = new (); private static readonly PushcutSettingsValidator Validator = new();
[FieldDefinition(0, Label = "Notification name", Type = FieldType.Textbox, HelpText = "Notification name from Notifications tab of the Pushcut app.")] [FieldDefinition(0, Label = "Notification name", Type = FieldType.Textbox, HelpText = "Notification name from Notifications tab of the Pushcut app.")]
public string NotificationName { get; set; } public string NotificationName { get; set; }

View file

@ -18,7 +18,7 @@ public SignalSettingsValidator()
public class SignalSettings : IProviderConfig public class SignalSettings : IProviderConfig
{ {
private static readonly SignalSettingsValidator Validator = new (); private static readonly SignalSettingsValidator Validator = new();
[FieldDefinition(0, Label = "Host", Type = FieldType.Textbox, HelpText = "localhost")] [FieldDefinition(0, Label = "Host", Type = FieldType.Textbox, HelpText = "localhost")]
public string Host { get; set; } public string Host { get; set; }

View file

@ -8,7 +8,7 @@ namespace NzbDrone.Core.Parser
{ {
public static class ParseUtil public static class ParseUtil
{ {
private static readonly Regex ImdbIdRegex = new (@"^(?:tt)?(\d{1,8})$", RegexOptions.Compiled); private static readonly Regex ImdbIdRegex = new(@"^(?:tt)?(\d{1,8})$", RegexOptions.Compiled);
public static string NormalizeMultiSpaces(string s) => public static string NormalizeMultiSpaces(string s) =>
new Regex(@"\s+").Replace(s.Trim(), " "); new Regex(@"\s+").Replace(s.Trim(), " ");

View file

@ -5,7 +5,7 @@ namespace NzbDrone.Core.Parser
{ {
public static class TvCategoryFromQualityParser public static class TvCategoryFromQualityParser
{ {
private static readonly Regex SourceRegex = new (@"\b(?: private static readonly Regex SourceRegex = new(@"\b(?:
(?<bluray>BluRay|Blu-Ray|HDDVD|BD)| (?<bluray>BluRay|Blu-Ray|HDDVD|BD)|
(?<webdl>WEB[-_. ]DL|WEBDL|WebRip|iTunesHD|WebHD)| (?<webdl>WEB[-_. ]DL|WEBDL|WebRip|iTunesHD|WebHD)|
(?<hdtv>HDTV)| (?<hdtv>HDTV)|
@ -19,16 +19,16 @@ public static class TvCategoryFromQualityParser
)\b", )\b",
RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace); RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
private static readonly Regex RawHdRegex = new (@"\b(?<rawhd>TrollHD|RawHD|1080i[-_. ]HDTV|Raw[-_. ]HD|MPEG[-_. ]?2)\b", private static readonly Regex RawHdRegex = new(@"\b(?<rawhd>TrollHD|RawHD|1080i[-_. ]HDTV|Raw[-_. ]HD|MPEG[-_. ]?2)\b",
RegexOptions.Compiled | RegexOptions.IgnoreCase); RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex ResolutionRegex = new (@"\b(?:(?<q480p>480p|640x480|848x480)|(?<q576p>576p)|(?<q720p>720p|1280x720)|(?<q1080p>1080p|1920x1080)|(?<q2160p>2160p))\b", private static readonly Regex ResolutionRegex = new(@"\b(?:(?<q480p>480p|640x480|848x480)|(?<q576p>576p)|(?<q720p>720p|1280x720)|(?<q1080p>1080p|1920x1080)|(?<q2160p>2160p))\b",
RegexOptions.Compiled | RegexOptions.IgnoreCase); RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex CodecRegex = new (@"\b(?:(?<x264>x264)|(?<h264>h264)|(?<xvidhd>XvidHD)|(?<xvid>Xvid)|(?<divx>divx))\b", private static readonly Regex CodecRegex = new(@"\b(?:(?<x264>x264)|(?<h264>h264)|(?<xvidhd>XvidHD)|(?<xvid>Xvid)|(?<divx>divx))\b",
RegexOptions.Compiled | RegexOptions.IgnoreCase); RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex HighDefPdtvRegex = new (@"hr[-_. ]ws", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex HighDefPdtvRegex = new(@"hr[-_. ]ws", RegexOptions.Compiled | RegexOptions.IgnoreCase);
public static IndexerCategory ParseTvShowQuality(string tvShowFileName) public static IndexerCategory ParseTvShowQuality(string tvShowFileName)
{ {

View file

@ -260,7 +260,7 @@ private static IConfiguration GetConfiguration(StartupContext context)
{ {
return new ConfigurationBuilder() return new ConfigurationBuilder()
.AddXmlFile(configPath, optional: true, reloadOnChange: false) .AddXmlFile(configPath, optional: true, reloadOnChange: false)
.AddInMemoryCollection(new List<KeyValuePair<string, string>> { new ("dataProtectionFolder", appFolder.GetDataProtectionPath()) }) .AddInMemoryCollection(new List<KeyValuePair<string, string>> { new("dataProtectionFolder", appFolder.GetDataProtectionPath()) })
.AddEnvironmentVariables() .AddEnvironmentVariables()
.Build(); .Build();
} }

View file

@ -23,7 +23,7 @@ public abstract class IntegrationTest : IntegrationTestBase
protected int Port { get; private set; } protected int Port { get; private set; }
protected PostgresOptions PostgresOptions { get; set; } = new (); protected PostgresOptions PostgresOptions { get; set; } = new();
protected override string RootUrl => $"http://localhost:{Port}/"; protected override string RootUrl => $"http://localhost:{Port}/";

View file

@ -6,7 +6,7 @@ namespace NzbDrone.Mono.Disk
{ {
public static class FindDriveType public static class FindDriveType
{ {
private static readonly Dictionary<string, DriveType> DriveTypeMap = new () private static readonly Dictionary<string, DriveType> DriveTypeMap = new()
{ {
{ "afpfs", DriveType.Network }, { "afpfs", DriveType.Network },
{ "apfs", DriveType.Fixed }, { "apfs", DriveType.Fixed },

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