chore(core): split up interfaces/helpers/models

This commit is contained in:
rjindael 2023-07-29 15:26:09 -07:00
parent 1e693cabc2
commit 5f927ad66f
No known key found for this signature in database
GPG Key ID: D069369C906CCF31
7 changed files with 59 additions and 29 deletions

View File

@ -43,6 +43,6 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\Kiseki.Launcher\*.cs" /> <Compile Include="..\Kiseki.Launcher\**\*.cs" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -9,37 +9,37 @@ namespace Kiseki.Launcher
public class Controller public class Controller
{ {
private readonly string BaseURL; private readonly string BaseURL;
private readonly string JoinScriptURL; private IDictionary<string, string> Arguments = new Dictionary<string, string>();
private readonly string Ticket;
public event EventHandler<string>? PageHeadingChanged; public event EventHandler<string>? PageHeadingChanged;
public event EventHandler<int>? ProgressBarChanged; public event EventHandler<int>? ProgressBarChanged;
public event EventHandler<ProgressBarState>? ProgressBarStateChanged; public event EventHandler<ProgressBarState>? ProgressBarStateChanged;
public event EventHandler? Launched; 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 (args.Length > 0)
if (Arguments.Length != 0 || Arguments[0] != "launch")
{ {
Environment.Exit(0); // TODO: handle these more gracefully
}
if (!Helpers.IsBase64String(Arguments[0])) if (!Helpers.Base64.IsBase64String(args[0]))
{ {
Environment.Exit(0); Environment.Exit(0);
} }
string payload = Helpers.ConvertBase64ToString(Arguments[0]); string payload = Helpers.Base64.ConvertBase64ToString(args[0]);
if (payload.Split("|").Length != 2) // joinscripturl, ticket; TODO: this will also include launchmode (ide/play) if (payload.Split("|").Length != 2) // joinscripturl, ticket; TODO: this will also include launchmode (ide/play) & other stuff
{ {
Environment.Exit(0); Environment.Exit(0);
} }
JoinScriptURL = payload.Split("|")[0]; Arguments["JoinScriptURL"] = payload.Split("|")[0];
Ticket = payload.Split("|")[1]; Arguments["Ticket"] = payload.Split("|")[1];
}
} }
public async void Start() public async void Start()

View File

@ -1,8 +1,8 @@
using System.Text; using System.Text;
namespace Kiseki.Launcher namespace Kiseki.Launcher.Helpers
{ {
public static class Helpers public static class Base64
{ {
// https://stackoverflow.com/a/54143400 // https://stackoverflow.com/a/54143400
public static bool IsBase64String(string base64) public static bool IsBase64String(string base64)

View File

@ -0,0 +1,21 @@
using System.Text.Json;
namespace Kiseki.Launcher.Helpers
{
public static class Http
{
public static async Task<T?> GetJson<T>(string url)
{
string json = await Controller.HttpClient.GetStringAsync(url);
try
{
return JsonSerializer.Deserialize<T>(json);
}
catch
{
return default;
}
}
}
}

View File

@ -0,0 +1,8 @@
namespace Kiseki.Launcher
{
public interface ILauncher
{
void Register();
void Unregister();
}
}

View File

@ -1,12 +1,6 @@
namespace Kiseki.Launcher namespace Kiseki.Launcher
{ {
interface ILauncher public interface IProtocol
{
void Register();
void Unregister();
}
interface IProtocol
{ {
void Register(string key, string name, string handler); void Register(string key, string name, string handler);
void Unregister(string key); void Unregister(string key);

View File

@ -0,0 +1,7 @@
namespace Kiseki.Launcher.Models
{
public class HealthCheck
{
public string Response { get; set; }
}
}