Files
PowerToys/src/modules/launcher/Plugins/Microsoft.Plugin.Uri/UriHelper/ExtendedUriParser.cs

113 lines
4.5 KiB
C#
Raw Normal View History

// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
2021-07-05 16:26:31 +02:00
using System.Linq;
using System.Text.RegularExpressions;
using Microsoft.Plugin.Uri.Interfaces;
namespace Microsoft.Plugin.Uri.UriHelper
{
public class ExtendedUriParser : IUriParser
{
// When updating this method, also update the local method IsUri() in Community.PowerToys.Run.Plugin.WebSearch.Main.Query
[PTRun][URL]Fix web link with ports support (#19809) * [PT Run] Fix web link with ports support (#14260) * URL in the format of `domain:port` now directs to default browser * Add tests to verify web link with ports scenario * Fix test case and scenario where mismatching schema and port for IPv6 does not result in correct output * [PT Run][Tests] Change and add more UriParser Tests * Specifically of note is line 56, where [IPv6]:80 diverts to https instead of http. * [PT Run][Tests] Add UriParser tests * Add more tests targeting port handling * [PT Run] Fix http handling * This also fixes oddity with IPv4 and IPv6 handling * [PT Run] Add second results depending on condition * Test: update all test to reflect updated functions & add a little more tests * Update function to show two results when URI is in the format of `domain:port` (situation where it can also be `schema:path`) * Update regex style to follow previous code * [PT Run] Change tests and filter localhost from certain results * Add tests for 127.0.0.1, localhost, and ::1 * Move test around into more logical arrangement * Filter localhost out from showing double results * [PT Run] Fix spelling on comments * [PT Run] Add some words to expect.txt * [PT Toys] Clarify comment regarding [::] Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Run] Remove tests regarding tel protocol * [PT Run] Clarify UriParser parameter * [PT Run] Add UriParser tests for tel protocol * Current code has a regression bug where tel:xxxx, if xxxx is more than 65536 it will break. Will fix in follow up commit. * [PT Run] Refactor ExtendedUriParser and its tests * Remove `isWebUri` from ExtendedUriParser, keeping only webUri and systemUri * Tel protocol regression bug still exists * [PT Run] Fix wrong icon when webUri result * [PT Run] Fix regression bug for tel protocol * Tel protocol will sometimes bug out when tel:xxxx if xxxxx is more than 65535, as UriBuilder will throw error thinking the port number has been exceeded * [PT Toy] Fix tel test * [PT Run] Changes to tests * Add test for application uri to include ports, for all non-protocol, http and https variants * Rearrange some more test to make more logical sense, and add comments * [PT Run] Simplify code * Move webUri and systemUri to be global, as per htcfreek's recommendation * Add comment to empty catch * Change null to default * [PT Toy] Update test name Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Toy] Change result prompt when empty string * [PT Toy] Fix typo in comment * [PT Toy] Simplify line * [PT Toy] Change result prompt when empty string
2022-08-12 00:04:39 +08:00
public bool TryParse(string input, out System.Uri webUri, out System.Uri systemUri)
{
[PTRun][URL]Fix web link with ports support (#19809) * [PT Run] Fix web link with ports support (#14260) * URL in the format of `domain:port` now directs to default browser * Add tests to verify web link with ports scenario * Fix test case and scenario where mismatching schema and port for IPv6 does not result in correct output * [PT Run][Tests] Change and add more UriParser Tests * Specifically of note is line 56, where [IPv6]:80 diverts to https instead of http. * [PT Run][Tests] Add UriParser tests * Add more tests targeting port handling * [PT Run] Fix http handling * This also fixes oddity with IPv4 and IPv6 handling * [PT Run] Add second results depending on condition * Test: update all test to reflect updated functions & add a little more tests * Update function to show two results when URI is in the format of `domain:port` (situation where it can also be `schema:path`) * Update regex style to follow previous code * [PT Run] Change tests and filter localhost from certain results * Add tests for 127.0.0.1, localhost, and ::1 * Move test around into more logical arrangement * Filter localhost out from showing double results * [PT Run] Fix spelling on comments * [PT Run] Add some words to expect.txt * [PT Toys] Clarify comment regarding [::] Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Run] Remove tests regarding tel protocol * [PT Run] Clarify UriParser parameter * [PT Run] Add UriParser tests for tel protocol * Current code has a regression bug where tel:xxxx, if xxxx is more than 65536 it will break. Will fix in follow up commit. * [PT Run] Refactor ExtendedUriParser and its tests * Remove `isWebUri` from ExtendedUriParser, keeping only webUri and systemUri * Tel protocol regression bug still exists * [PT Run] Fix wrong icon when webUri result * [PT Run] Fix regression bug for tel protocol * Tel protocol will sometimes bug out when tel:xxxx if xxxxx is more than 65535, as UriBuilder will throw error thinking the port number has been exceeded * [PT Toy] Fix tel test * [PT Run] Changes to tests * Add test for application uri to include ports, for all non-protocol, http and https variants * Rearrange some more test to make more logical sense, and add comments * [PT Run] Simplify code * Move webUri and systemUri to be global, as per htcfreek's recommendation * Add comment to empty catch * Change null to default * [PT Toy] Update test name Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Toy] Change result prompt when empty string * [PT Toy] Fix typo in comment * [PT Toy] Simplify line * [PT Toy] Change result prompt when empty string
2022-08-12 00:04:39 +08:00
webUri = default;
systemUri = default;
if (string.IsNullOrEmpty(input))
{
return false;
}
// Handling URL with only scheme, typically mailto or application uri.
// Do nothing, return the result without urlBuilder
[PTRun][URL]Fix web link with ports support (#19809) * [PT Run] Fix web link with ports support (#14260) * URL in the format of `domain:port` now directs to default browser * Add tests to verify web link with ports scenario * Fix test case and scenario where mismatching schema and port for IPv6 does not result in correct output * [PT Run][Tests] Change and add more UriParser Tests * Specifically of note is line 56, where [IPv6]:80 diverts to https instead of http. * [PT Run][Tests] Add UriParser tests * Add more tests targeting port handling * [PT Run] Fix http handling * This also fixes oddity with IPv4 and IPv6 handling * [PT Run] Add second results depending on condition * Test: update all test to reflect updated functions & add a little more tests * Update function to show two results when URI is in the format of `domain:port` (situation where it can also be `schema:path`) * Update regex style to follow previous code * [PT Run] Change tests and filter localhost from certain results * Add tests for 127.0.0.1, localhost, and ::1 * Move test around into more logical arrangement * Filter localhost out from showing double results * [PT Run] Fix spelling on comments * [PT Run] Add some words to expect.txt * [PT Toys] Clarify comment regarding [::] Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Run] Remove tests regarding tel protocol * [PT Run] Clarify UriParser parameter * [PT Run] Add UriParser tests for tel protocol * Current code has a regression bug where tel:xxxx, if xxxx is more than 65536 it will break. Will fix in follow up commit. * [PT Run] Refactor ExtendedUriParser and its tests * Remove `isWebUri` from ExtendedUriParser, keeping only webUri and systemUri * Tel protocol regression bug still exists * [PT Run] Fix wrong icon when webUri result * [PT Run] Fix regression bug for tel protocol * Tel protocol will sometimes bug out when tel:xxxx if xxxxx is more than 65535, as UriBuilder will throw error thinking the port number has been exceeded * [PT Toy] Fix tel test * [PT Run] Changes to tests * Add test for application uri to include ports, for all non-protocol, http and https variants * Rearrange some more test to make more logical sense, and add comments * [PT Run] Simplify code * Move webUri and systemUri to be global, as per htcfreek's recommendation * Add comment to empty catch * Change null to default * [PT Toy] Update test name Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Toy] Change result prompt when empty string * [PT Toy] Fix typo in comment * [PT Toy] Simplify line * [PT Toy] Change result prompt when empty string
2022-08-12 00:04:39 +08:00
// And check if scheme match RFC3986 (issue #15035)
const string schemeRegex = @"^([a-z][a-z0-9+\-.]*):";
if (input.EndsWith(":", StringComparison.OrdinalIgnoreCase)
&& !input.StartsWith("http", StringComparison.OrdinalIgnoreCase)
&& !input.Contains('/', StringComparison.OrdinalIgnoreCase)
&& !input.All(char.IsDigit)
&& Regex.IsMatch(input, schemeRegex))
{
[PTRun][URL]Fix web link with ports support (#19809) * [PT Run] Fix web link with ports support (#14260) * URL in the format of `domain:port` now directs to default browser * Add tests to verify web link with ports scenario * Fix test case and scenario where mismatching schema and port for IPv6 does not result in correct output * [PT Run][Tests] Change and add more UriParser Tests * Specifically of note is line 56, where [IPv6]:80 diverts to https instead of http. * [PT Run][Tests] Add UriParser tests * Add more tests targeting port handling * [PT Run] Fix http handling * This also fixes oddity with IPv4 and IPv6 handling * [PT Run] Add second results depending on condition * Test: update all test to reflect updated functions & add a little more tests * Update function to show two results when URI is in the format of `domain:port` (situation where it can also be `schema:path`) * Update regex style to follow previous code * [PT Run] Change tests and filter localhost from certain results * Add tests for 127.0.0.1, localhost, and ::1 * Move test around into more logical arrangement * Filter localhost out from showing double results * [PT Run] Fix spelling on comments * [PT Run] Add some words to expect.txt * [PT Toys] Clarify comment regarding [::] Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Run] Remove tests regarding tel protocol * [PT Run] Clarify UriParser parameter * [PT Run] Add UriParser tests for tel protocol * Current code has a regression bug where tel:xxxx, if xxxx is more than 65536 it will break. Will fix in follow up commit. * [PT Run] Refactor ExtendedUriParser and its tests * Remove `isWebUri` from ExtendedUriParser, keeping only webUri and systemUri * Tel protocol regression bug still exists * [PT Run] Fix wrong icon when webUri result * [PT Run] Fix regression bug for tel protocol * Tel protocol will sometimes bug out when tel:xxxx if xxxxx is more than 65535, as UriBuilder will throw error thinking the port number has been exceeded * [PT Toy] Fix tel test * [PT Run] Changes to tests * Add test for application uri to include ports, for all non-protocol, http and https variants * Rearrange some more test to make more logical sense, and add comments * [PT Run] Simplify code * Move webUri and systemUri to be global, as per htcfreek's recommendation * Add comment to empty catch * Change null to default * [PT Toy] Update test name Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Toy] Change result prompt when empty string * [PT Toy] Fix typo in comment * [PT Toy] Simplify line * [PT Toy] Change result prompt when empty string
2022-08-12 00:04:39 +08:00
systemUri = new System.Uri(input);
return true;
}
// Handle common cases UriBuilder does not handle
// Using CurrentCulture since this is a user typed string
if (input.EndsWith(":", StringComparison.CurrentCulture)
|| input.EndsWith(".", StringComparison.CurrentCulture)
2021-07-05 16:26:31 +02:00
|| input.EndsWith(":/", StringComparison.CurrentCulture)
|| input.EndsWith("://", StringComparison.CurrentCulture)
2021-07-05 16:26:31 +02:00
|| input.All(char.IsDigit))
{
return false;
}
try
{
[PTRun][URL]Fix web link with ports support (#19809) * [PT Run] Fix web link with ports support (#14260) * URL in the format of `domain:port` now directs to default browser * Add tests to verify web link with ports scenario * Fix test case and scenario where mismatching schema and port for IPv6 does not result in correct output * [PT Run][Tests] Change and add more UriParser Tests * Specifically of note is line 56, where [IPv6]:80 diverts to https instead of http. * [PT Run][Tests] Add UriParser tests * Add more tests targeting port handling * [PT Run] Fix http handling * This also fixes oddity with IPv4 and IPv6 handling * [PT Run] Add second results depending on condition * Test: update all test to reflect updated functions & add a little more tests * Update function to show two results when URI is in the format of `domain:port` (situation where it can also be `schema:path`) * Update regex style to follow previous code * [PT Run] Change tests and filter localhost from certain results * Add tests for 127.0.0.1, localhost, and ::1 * Move test around into more logical arrangement * Filter localhost out from showing double results * [PT Run] Fix spelling on comments * [PT Run] Add some words to expect.txt * [PT Toys] Clarify comment regarding [::] Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Run] Remove tests regarding tel protocol * [PT Run] Clarify UriParser parameter * [PT Run] Add UriParser tests for tel protocol * Current code has a regression bug where tel:xxxx, if xxxx is more than 65536 it will break. Will fix in follow up commit. * [PT Run] Refactor ExtendedUriParser and its tests * Remove `isWebUri` from ExtendedUriParser, keeping only webUri and systemUri * Tel protocol regression bug still exists * [PT Run] Fix wrong icon when webUri result * [PT Run] Fix regression bug for tel protocol * Tel protocol will sometimes bug out when tel:xxxx if xxxxx is more than 65535, as UriBuilder will throw error thinking the port number has been exceeded * [PT Toy] Fix tel test * [PT Run] Changes to tests * Add test for application uri to include ports, for all non-protocol, http and https variants * Rearrange some more test to make more logical sense, and add comments * [PT Run] Simplify code * Move webUri and systemUri to be global, as per htcfreek's recommendation * Add comment to empty catch * Change null to default * [PT Toy] Update test name Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Toy] Change result prompt when empty string * [PT Toy] Fix typo in comment * [PT Toy] Simplify line * [PT Toy] Change result prompt when empty string
2022-08-12 00:04:39 +08:00
string isDomainPortRegex = @"^[\w\.]+:\d+";
string isIPv6PortRegex = @"^\[([\w:]+:+)+[\w]+\]:\d+";
var urlBuilder = new UriBuilder(input);
[PTRun][URL]Fix web link with ports support (#19809) * [PT Run] Fix web link with ports support (#14260) * URL in the format of `domain:port` now directs to default browser * Add tests to verify web link with ports scenario * Fix test case and scenario where mismatching schema and port for IPv6 does not result in correct output * [PT Run][Tests] Change and add more UriParser Tests * Specifically of note is line 56, where [IPv6]:80 diverts to https instead of http. * [PT Run][Tests] Add UriParser tests * Add more tests targeting port handling * [PT Run] Fix http handling * This also fixes oddity with IPv4 and IPv6 handling * [PT Run] Add second results depending on condition * Test: update all test to reflect updated functions & add a little more tests * Update function to show two results when URI is in the format of `domain:port` (situation where it can also be `schema:path`) * Update regex style to follow previous code * [PT Run] Change tests and filter localhost from certain results * Add tests for 127.0.0.1, localhost, and ::1 * Move test around into more logical arrangement * Filter localhost out from showing double results * [PT Run] Fix spelling on comments * [PT Run] Add some words to expect.txt * [PT Toys] Clarify comment regarding [::] Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Run] Remove tests regarding tel protocol * [PT Run] Clarify UriParser parameter * [PT Run] Add UriParser tests for tel protocol * Current code has a regression bug where tel:xxxx, if xxxx is more than 65536 it will break. Will fix in follow up commit. * [PT Run] Refactor ExtendedUriParser and its tests * Remove `isWebUri` from ExtendedUriParser, keeping only webUri and systemUri * Tel protocol regression bug still exists * [PT Run] Fix wrong icon when webUri result * [PT Run] Fix regression bug for tel protocol * Tel protocol will sometimes bug out when tel:xxxx if xxxxx is more than 65535, as UriBuilder will throw error thinking the port number has been exceeded * [PT Toy] Fix tel test * [PT Run] Changes to tests * Add test for application uri to include ports, for all non-protocol, http and https variants * Rearrange some more test to make more logical sense, and add comments * [PT Run] Simplify code * Move webUri and systemUri to be global, as per htcfreek's recommendation * Add comment to empty catch * Change null to default * [PT Toy] Update test name Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Toy] Change result prompt when empty string * [PT Toy] Fix typo in comment * [PT Toy] Simplify line * [PT Toy] Change result prompt when empty string
2022-08-12 00:04:39 +08:00
urlBuilder.Port = urlBuilder.Uri.IsDefaultPort ? -1 : urlBuilder.Port;
if (input.StartsWith("HTTP://", StringComparison.OrdinalIgnoreCase))
{
urlBuilder.Scheme = System.Uri.UriSchemeHttp;
[PTRun][URL]Fix web link with ports support (#19809) * [PT Run] Fix web link with ports support (#14260) * URL in the format of `domain:port` now directs to default browser * Add tests to verify web link with ports scenario * Fix test case and scenario where mismatching schema and port for IPv6 does not result in correct output * [PT Run][Tests] Change and add more UriParser Tests * Specifically of note is line 56, where [IPv6]:80 diverts to https instead of http. * [PT Run][Tests] Add UriParser tests * Add more tests targeting port handling * [PT Run] Fix http handling * This also fixes oddity with IPv4 and IPv6 handling * [PT Run] Add second results depending on condition * Test: update all test to reflect updated functions & add a little more tests * Update function to show two results when URI is in the format of `domain:port` (situation where it can also be `schema:path`) * Update regex style to follow previous code * [PT Run] Change tests and filter localhost from certain results * Add tests for 127.0.0.1, localhost, and ::1 * Move test around into more logical arrangement * Filter localhost out from showing double results * [PT Run] Fix spelling on comments * [PT Run] Add some words to expect.txt * [PT Toys] Clarify comment regarding [::] Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Run] Remove tests regarding tel protocol * [PT Run] Clarify UriParser parameter * [PT Run] Add UriParser tests for tel protocol * Current code has a regression bug where tel:xxxx, if xxxx is more than 65536 it will break. Will fix in follow up commit. * [PT Run] Refactor ExtendedUriParser and its tests * Remove `isWebUri` from ExtendedUriParser, keeping only webUri and systemUri * Tel protocol regression bug still exists * [PT Run] Fix wrong icon when webUri result * [PT Run] Fix regression bug for tel protocol * Tel protocol will sometimes bug out when tel:xxxx if xxxxx is more than 65535, as UriBuilder will throw error thinking the port number has been exceeded * [PT Toy] Fix tel test * [PT Run] Changes to tests * Add test for application uri to include ports, for all non-protocol, http and https variants * Rearrange some more test to make more logical sense, and add comments * [PT Run] Simplify code * Move webUri and systemUri to be global, as per htcfreek's recommendation * Add comment to empty catch * Change null to default * [PT Toy] Update test name Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Toy] Change result prompt when empty string * [PT Toy] Fix typo in comment * [PT Toy] Simplify line * [PT Toy] Change result prompt when empty string
2022-08-12 00:04:39 +08:00
}
else if (Regex.IsMatch(input, isDomainPortRegex) ||
Regex.IsMatch(input, isIPv6PortRegex))
{
var secondUrlBuilder = urlBuilder;
try
{
urlBuilder = new UriBuilder("https://" + input);
if (urlBuilder.Port == 80)
{
urlBuilder.Scheme = System.Uri.UriSchemeHttp;
}
}
catch (UriFormatException)
{
// This handles the situation in tel:xxxx and others
// When xxxx > 65535, it will throw UriFormatException
// The catch ensures it will at least still try to return a systemUri
}
string singleLabelRegex = @"[\.:]+|^http$|^https$|^localhost$";
systemUri = Regex.IsMatch(urlBuilder.Host, singleLabelRegex) ? null : secondUrlBuilder.Uri;
}
else if (input.Contains(':', StringComparison.OrdinalIgnoreCase) &&
!input.StartsWith("http", StringComparison.OrdinalIgnoreCase) &&
!input.Contains('[', StringComparison.OrdinalIgnoreCase))
{
// Do nothing, leave unchanged
[PTRun][URL]Fix web link with ports support (#19809) * [PT Run] Fix web link with ports support (#14260) * URL in the format of `domain:port` now directs to default browser * Add tests to verify web link with ports scenario * Fix test case and scenario where mismatching schema and port for IPv6 does not result in correct output * [PT Run][Tests] Change and add more UriParser Tests * Specifically of note is line 56, where [IPv6]:80 diverts to https instead of http. * [PT Run][Tests] Add UriParser tests * Add more tests targeting port handling * [PT Run] Fix http handling * This also fixes oddity with IPv4 and IPv6 handling * [PT Run] Add second results depending on condition * Test: update all test to reflect updated functions & add a little more tests * Update function to show two results when URI is in the format of `domain:port` (situation where it can also be `schema:path`) * Update regex style to follow previous code * [PT Run] Change tests and filter localhost from certain results * Add tests for 127.0.0.1, localhost, and ::1 * Move test around into more logical arrangement * Filter localhost out from showing double results * [PT Run] Fix spelling on comments * [PT Run] Add some words to expect.txt * [PT Toys] Clarify comment regarding [::] Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Run] Remove tests regarding tel protocol * [PT Run] Clarify UriParser parameter * [PT Run] Add UriParser tests for tel protocol * Current code has a regression bug where tel:xxxx, if xxxx is more than 65536 it will break. Will fix in follow up commit. * [PT Run] Refactor ExtendedUriParser and its tests * Remove `isWebUri` from ExtendedUriParser, keeping only webUri and systemUri * Tel protocol regression bug still exists * [PT Run] Fix wrong icon when webUri result * [PT Run] Fix regression bug for tel protocol * Tel protocol will sometimes bug out when tel:xxxx if xxxxx is more than 65535, as UriBuilder will throw error thinking the port number has been exceeded * [PT Toy] Fix tel test * [PT Run] Changes to tests * Add test for application uri to include ports, for all non-protocol, http and https variants * Rearrange some more test to make more logical sense, and add comments * [PT Run] Simplify code * Move webUri and systemUri to be global, as per htcfreek's recommendation * Add comment to empty catch * Change null to default * [PT Toy] Update test name Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Toy] Change result prompt when empty string * [PT Toy] Fix typo in comment * [PT Toy] Simplify line * [PT Toy] Change result prompt when empty string
2022-08-12 00:04:39 +08:00
systemUri = urlBuilder.Uri;
}
else
{
urlBuilder.Scheme = System.Uri.UriSchemeHttps;
}
[PTRun][URL]Fix web link with ports support (#19809) * [PT Run] Fix web link with ports support (#14260) * URL in the format of `domain:port` now directs to default browser * Add tests to verify web link with ports scenario * Fix test case and scenario where mismatching schema and port for IPv6 does not result in correct output * [PT Run][Tests] Change and add more UriParser Tests * Specifically of note is line 56, where [IPv6]:80 diverts to https instead of http. * [PT Run][Tests] Add UriParser tests * Add more tests targeting port handling * [PT Run] Fix http handling * This also fixes oddity with IPv4 and IPv6 handling * [PT Run] Add second results depending on condition * Test: update all test to reflect updated functions & add a little more tests * Update function to show two results when URI is in the format of `domain:port` (situation where it can also be `schema:path`) * Update regex style to follow previous code * [PT Run] Change tests and filter localhost from certain results * Add tests for 127.0.0.1, localhost, and ::1 * Move test around into more logical arrangement * Filter localhost out from showing double results * [PT Run] Fix spelling on comments * [PT Run] Add some words to expect.txt * [PT Toys] Clarify comment regarding [::] Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Run] Remove tests regarding tel protocol * [PT Run] Clarify UriParser parameter * [PT Run] Add UriParser tests for tel protocol * Current code has a regression bug where tel:xxxx, if xxxx is more than 65536 it will break. Will fix in follow up commit. * [PT Run] Refactor ExtendedUriParser and its tests * Remove `isWebUri` from ExtendedUriParser, keeping only webUri and systemUri * Tel protocol regression bug still exists * [PT Run] Fix wrong icon when webUri result * [PT Run] Fix regression bug for tel protocol * Tel protocol will sometimes bug out when tel:xxxx if xxxxx is more than 65535, as UriBuilder will throw error thinking the port number has been exceeded * [PT Toy] Fix tel test * [PT Run] Changes to tests * Add test for application uri to include ports, for all non-protocol, http and https variants * Rearrange some more test to make more logical sense, and add comments * [PT Run] Simplify code * Move webUri and systemUri to be global, as per htcfreek's recommendation * Add comment to empty catch * Change null to default * [PT Toy] Update test name Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * [PT Toy] Change result prompt when empty string * [PT Toy] Fix typo in comment * [PT Toy] Simplify line * [PT Toy] Change result prompt when empty string
2022-08-12 00:04:39 +08:00
if (urlBuilder.Scheme.Equals(System.Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) ||
urlBuilder.Scheme.Equals(System.Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase))
{
webUri = urlBuilder.Uri;
}
return true;
}
catch (UriFormatException)
{
return false;
}
}
}
}