diff --git a/Kiseki.Launcher.Windows/Kiseki.Launcher.Windows.csproj b/Kiseki.Launcher.Windows/Kiseki.Launcher.Windows.csproj index 8d114f3..f0d573b 100644 --- a/Kiseki.Launcher.Windows/Kiseki.Launcher.Windows.csproj +++ b/Kiseki.Launcher.Windows/Kiseki.Launcher.Windows.csproj @@ -43,6 +43,6 @@ - + \ No newline at end of file diff --git a/Kiseki.Launcher/Controller.cs b/Kiseki.Launcher/Controller.cs index acf6260..aaab6b3 100644 --- a/Kiseki.Launcher/Controller.cs +++ b/Kiseki.Launcher/Controller.cs @@ -9,37 +9,37 @@ namespace Kiseki.Launcher public class Controller { private readonly string BaseURL; - private readonly string JoinScriptURL; - private readonly string Ticket; + private IDictionary Arguments = new Dictionary(); public event EventHandler? PageHeadingChanged; public event EventHandler? ProgressBarChanged; public event EventHandler? ProgressBarStateChanged; public event EventHandler? Launched; - public Controller(string BaseURL, string[] Arguments) + public static readonly HttpClient HttpClient = new(); + + public Controller(string baseURL, string[] args) { - this.BaseURL = BaseURL; + BaseURL = baseURL; - // TODO: handle these more gracefully - if (Arguments.Length != 0 || Arguments[0] != "launch") + if (args.Length > 0) { - Environment.Exit(0); - } + // TODO: handle these more gracefully - if (!Helpers.IsBase64String(Arguments[0])) - { - Environment.Exit(0); - } + if (!Helpers.Base64.IsBase64String(args[0])) + { + Environment.Exit(0); + } - string payload = Helpers.ConvertBase64ToString(Arguments[0]); - if (payload.Split("|").Length != 2) // joinscripturl, ticket; TODO: this will also include launchmode (ide/play) - { - Environment.Exit(0); - } + string payload = Helpers.Base64.ConvertBase64ToString(args[0]); + if (payload.Split("|").Length != 2) // joinscripturl, ticket; TODO: this will also include launchmode (ide/play) & other stuff + { + Environment.Exit(0); + } - JoinScriptURL = payload.Split("|")[0]; - Ticket = payload.Split("|")[1]; + Arguments["JoinScriptURL"] = payload.Split("|")[0]; + Arguments["Ticket"] = payload.Split("|")[1]; + } } public async void Start() diff --git a/Kiseki.Launcher/Helpers.cs b/Kiseki.Launcher/Helpers/Base64.cs similarity index 89% rename from Kiseki.Launcher/Helpers.cs rename to Kiseki.Launcher/Helpers/Base64.cs index 12887b0..0a15efd 100644 --- a/Kiseki.Launcher/Helpers.cs +++ b/Kiseki.Launcher/Helpers/Base64.cs @@ -1,8 +1,8 @@ using System.Text; -namespace Kiseki.Launcher +namespace Kiseki.Launcher.Helpers { - public static class Helpers + public static class Base64 { // https://stackoverflow.com/a/54143400 public static bool IsBase64String(string base64) diff --git a/Kiseki.Launcher/Helpers/Http.cs b/Kiseki.Launcher/Helpers/Http.cs new file mode 100644 index 0000000..b9842d7 --- /dev/null +++ b/Kiseki.Launcher/Helpers/Http.cs @@ -0,0 +1,21 @@ +using System.Text.Json; + +namespace Kiseki.Launcher.Helpers +{ + public static class Http + { + public static async Task GetJson(string url) + { + string json = await Controller.HttpClient.GetStringAsync(url); + + try + { + return JsonSerializer.Deserialize(json); + } + catch + { + return default; + } + } + } +} \ No newline at end of file diff --git a/Kiseki.Launcher/Interfaces/ILauncher.cs b/Kiseki.Launcher/Interfaces/ILauncher.cs new file mode 100644 index 0000000..a7a15b1 --- /dev/null +++ b/Kiseki.Launcher/Interfaces/ILauncher.cs @@ -0,0 +1,8 @@ +namespace Kiseki.Launcher +{ + public interface ILauncher + { + void Register(); + void Unregister(); + } +} \ No newline at end of file diff --git a/Kiseki.Launcher/Interfaces.cs b/Kiseki.Launcher/Interfaces/IProtocol.cs similarity index 54% rename from Kiseki.Launcher/Interfaces.cs rename to Kiseki.Launcher/Interfaces/IProtocol.cs index 2fd07c4..a21ed2a 100644 --- a/Kiseki.Launcher/Interfaces.cs +++ b/Kiseki.Launcher/Interfaces/IProtocol.cs @@ -1,12 +1,6 @@ namespace Kiseki.Launcher { - interface ILauncher - { - void Register(); - void Unregister(); - } - - interface IProtocol + public interface IProtocol { void Register(string key, string name, string handler); void Unregister(string key); diff --git a/Kiseki.Launcher/Models/HealthCheck.cs b/Kiseki.Launcher/Models/HealthCheck.cs new file mode 100644 index 0000000..6abf719 --- /dev/null +++ b/Kiseki.Launcher/Models/HealthCheck.cs @@ -0,0 +1,7 @@ +namespace Kiseki.Launcher.Models +{ + public class HealthCheck + { + public string Response { get; set; } + } +} \ No newline at end of file