From 91a724598b4eda1fe4c8b8ca67ca134b95937de6 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Tue, 2 Jul 2019 17:57:21 -0500 Subject: [PATCH] validate is valid syntax of a URL --- src/FilterLists.Agent/Extensions/UriExtensions.cs | 10 ++++++++++ src/FilterLists.Agent/Features/Urls/ValidateUrls.cs | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/src/FilterLists.Agent/Extensions/UriExtensions.cs b/src/FilterLists.Agent/Extensions/UriExtensions.cs index 0dd88cb42..d0eee94bd 100644 --- a/src/FilterLists.Agent/Extensions/UriExtensions.cs +++ b/src/FilterLists.Agent/Extensions/UriExtensions.cs @@ -9,5 +9,15 @@ public static string GetExtension(this Uri uri) { return Path.GetExtension(uri.AbsolutePath); } + + public static bool IsValidUrl(this Uri uri) + { + var uriString = uri.OriginalString; + if (!Uri.IsWellFormedUriString(uriString, UriKind.Absolute)) + return false; + if (!Uri.TryCreate(uriString, UriKind.Absolute, out var tmp)) + return false; + return tmp.Scheme == Uri.UriSchemeHttp || tmp.Scheme == Uri.UriSchemeHttps; + } } } \ No newline at end of file diff --git a/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs b/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs index f40913985..73358b024 100644 --- a/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs +++ b/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs @@ -5,6 +5,7 @@ using System.Threading; using System.Threading.Tasks; using System.Threading.Tasks.Dataflow; +using FilterLists.Agent.Extensions; using FilterLists.Agent.Features.Urls.Models.ValidationResults; using FilterLists.Agent.Infrastructure.Clients; using MediatR; @@ -60,6 +61,13 @@ private TransformBlock BuildValidator(CancellationToke async u => { var result = new UrlValidationResult(u); + if (!u.IsValidUrl()) + { + result.SetBroken(); + _logger.LogError($"{u.AbsoluteUri}) is not a valid URL."); + return result; + } + try { var response = await _httpClient.GetAsync(u, cancellationToken);