diff --git a/LinkCrawler/LinkCrawler.Tests/UtilsTests/HelpersTests/ValidUrlParserTests.cs b/LinkCrawler/LinkCrawler.Tests/UtilsTests/HelpersTests/ValidUrlParserTests.cs index b19c52f..18b4a80 100644 --- a/LinkCrawler/LinkCrawler.Tests/UtilsTests/HelpersTests/ValidUrlParserTests.cs +++ b/LinkCrawler/LinkCrawler.Tests/UtilsTests/HelpersTests/ValidUrlParserTests.cs @@ -46,5 +46,26 @@ public void Parse_UrlOnlyRelativePath_True() Assert.That(parsed, Is.EqualTo(validUrl)); } + + [Test] + public void Parse_UrlOnlyLocalPath_True() + { + var relativeUrl = "home"; + string parsed; + var result = ValidUrlParser.Parse(relativeUrl, out parsed); + Assert.That(result, Is.True); + var validUrl = string.Format("{0}/{1}", ValidUrlParser.BaseUrl, relativeUrl); + + Assert.That(parsed, Is.EqualTo(validUrl)); + } + + [Test] + public void Parse_UrlOnlyEmailPath_False() + { + var relativeUrl = "mailto:name@email.com"; + string parsed; + var result = ValidUrlParser.Parse(relativeUrl, out parsed); + Assert.That(result, Is.False); + } } } diff --git a/LinkCrawler/LinkCrawler/Utils/Parsers/ValidUrlParser.cs b/LinkCrawler/LinkCrawler/Utils/Parsers/ValidUrlParser.cs index 54d9097..79a0bb2 100644 --- a/LinkCrawler/LinkCrawler/Utils/Parsers/ValidUrlParser.cs +++ b/LinkCrawler/LinkCrawler/Utils/Parsers/ValidUrlParser.cs @@ -25,9 +25,15 @@ public bool Parse(string url, out string validUrl) Uri parsedUri; - if (Regex.IsNotMatch(url) + if (Regex.IsNotMatch(url) || !Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out parsedUri)) - return false; + { + if (!(url.Contains("@"))) + { + return Parse(string.Concat(BaseUrl, "/", url), out validUrl); + } + return false; + } if (parsedUri.IsAbsoluteUri) { @@ -48,5 +54,7 @@ public bool Parse(string url, out string validUrl) } return false; } + + } }