From c7d2dabbc3e1fa40dbb58a809226d126e83083ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannik=20H=C3=B6flich?= Date: Sun, 5 Dec 2021 16:31:32 +0100 Subject: [PATCH] changed the usage of loadUrl at CreateWindowAsync: adds protocol, host and port. You can also insert the port with {port} --- ElectronNET.API/WindowManager.cs | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/ElectronNET.API/WindowManager.cs b/ElectronNET.API/WindowManager.cs index 4ac85da..b9c1b38 100644 --- a/ElectronNET.API/WindowManager.cs +++ b/ElectronNET.API/WindowManager.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace ElectronNET.API @@ -79,7 +80,7 @@ namespace ElectronNET.API /// /// The load URL. /// - public async Task CreateWindowAsync(string loadUrl = "http://localhost") + public async Task CreateWindowAsync(string loadUrl = "http://localhost:{port}") { return await CreateWindowAsync(new BrowserWindowOptions(), loadUrl); } @@ -90,10 +91,9 @@ namespace ElectronNET.API /// The options. /// The load URL. /// - public Task CreateWindowAsync(BrowserWindowOptions options, string loadUrl = "http://localhost") + public Task CreateWindowAsync(BrowserWindowOptions options, string loadUrl = "http://localhost:{port}") { var taskCompletionSource = new TaskCompletionSource(); - BridgeConnector.Socket.On("BrowserWindowCreated", (id) => { BridgeConnector.Socket.Off("BrowserWindowCreated"); @@ -119,10 +119,7 @@ namespace ElectronNET.API } }); - if (loadUrl.ToUpper() == "HTTP://LOCALHOST") - { - loadUrl = $"{loadUrl}:{BridgeSettings.WebPort}"; - } + loadUrl = ParseLoadUrl(loadUrl); // Workaround Windows 10 / Electron Bug // https://github.com/electron/electron/issues/4045 @@ -159,6 +156,22 @@ namespace ElectronNET.API return taskCompletionSource.Task; } + private string ParseLoadUrl(string loadUrl) + { + var match = Regex.Match(loadUrl, @"(ht|f)tp(s?)\:\/\/([a-z]+\.)+[a-z]+"); + if (!match.Success || match.Index != 0) + { + match = Regex.Match(loadUrl, @"([a-z]+\.)+[a-z]+"); + if (!match.Success || match.Index != 0) + loadUrl = "localhost:{port}" + loadUrl; + loadUrl = "http://" + loadUrl; + } + + loadUrl = Regex.Replace(loadUrl, @"\{(P|p)(O|o)(R|r)(T|t)\}", BridgeSettings.WebPort); + + return loadUrl; + } + private bool isWindows10() { return RuntimeInformation.OSDescription.Contains("Windows 10");