diff --git a/src/NzbDrone.Common/Http/HttpUri.cs b/src/NzbDrone.Common/Http/HttpUri.cs index 2277ed60d..6ddb4eb69 100644 --- a/src/NzbDrone.Common/Http/HttpUri.cs +++ b/src/NzbDrone.Common/Http/HttpUri.cs @@ -6,13 +6,14 @@ namespace NzbDrone.Common.Http { - public class HttpUri : IEquatable + public partial class HttpUri : IEquatable { - private static readonly Regex RegexUri = new Regex(@"^(?:(?[a-z]+):)?(?://(?[-_A-Z0-9.]+|\[[[A-F0-9:]+\])(?::(?[0-9]{1,5}))?)?(?(?:(?:(?<=^)|/+)[^/?#\r\n]+)+/*|/+)?(?:\?(?[^#\r\n]*))?(?:\#(?.*))?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); - private readonly string _uri; public string FullUri => _uri; + [GeneratedRegex(@"^(?:(?[a-z]+):)?(?://(?[-_A-Z0-9.]+|\[[[A-F0-9:]+\])(?::(?[0-9]{1,5}))?)?(?(?:(?:(?<=^)|/+)[^/?#\r\n]+)+/*|/+)?(?:\?(?[^#\r\n]*))?(?:\#(?.*))?$", RegexOptions.IgnoreCase | RegexOptions.Compiled)] + private static partial Regex UriRegex(); + public HttpUri(string uri) { _uri = uri ?? string.Empty; @@ -70,9 +71,9 @@ public HttpUri(string scheme, string host, int? port, string path, string query, private void Parse() { - var parseSuccess = Uri.TryCreate(_uri, UriKind.RelativeOrAbsolute, out var uri); + var parseSuccess = Uri.TryCreate(_uri, UriKind.RelativeOrAbsolute, out _); - var match = RegexUri.Match(_uri); + var match = UriRegex().Match(_uri); var scheme = match.Groups["scheme"]; var host = match.Groups["host"];