summary refs log tree commit diff
path: root/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Program.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-12-14 23:18:35 +0100
committerRory& <root@rory.gay>2025-12-14 23:18:35 +0100
commit4534d4dbf5f5071fa71c5dec4444bf4b2bbd040c (patch)
tree614304bd951f09a73155a9bd9ee192cf946e854a /extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Program.cs
parentNo longer generate security_jwtSecret, switch webauthn to modern tokens, dont (diff)
downloadserver-ts-4534d4dbf5f5071fa71c5dec4444bf4b2bbd040c.tar.xz
admin api packaging
Diffstat (limited to 'extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Program.cs')
-rw-r--r--extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Program.cs59
1 files changed, 59 insertions, 0 deletions
diff --git a/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Program.cs b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Program.cs
new file mode 100644

index 00000000..d28066da --- /dev/null +++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Program.cs
@@ -0,0 +1,59 @@ +using System.Net; +using System.Runtime.CompilerServices; +using System.Text.Json; +using System.Text.Json.Serialization; +using Blazored.LocalStorage; +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using Spacebar.AdminApi.TestClient; +using Spacebar.AdminApi.TestClient.Services; + +var builder = WebAssemblyHostBuilder.CreateDefault(args); +builder.RootComponents.Add<App>("#app"); +builder.RootComponents.Add<HeadOutlet>("head::after"); + +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + +try { + builder.Configuration.AddJsonStream(await new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }.GetStreamAsync("/appsettings.json")); +#if DEBUG + builder.Configuration.AddJsonStream(await new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }.GetStreamAsync("/appsettings.Development.json")); +#endif +} +catch (HttpRequestException e) { + if (e.StatusCode == HttpStatusCode.NotFound) + Console.WriteLine("Could not load appsettings, server returned 404."); + else + Console.WriteLine("Could not load appsettings: " + e); +} +catch (Exception e) { + Console.WriteLine("Could not load appsettings: " + e); +} + +builder.Logging.AddConfiguration( + builder.Configuration.GetSection("Logging")); + +builder.Services.AddBlazoredLocalStorageAsSingleton(config => { + config.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase; + config.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; + config.JsonSerializerOptions.IgnoreReadOnlyProperties = true; + config.JsonSerializerOptions.PropertyNameCaseInsensitive = true; + config.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; + config.JsonSerializerOptions.ReadCommentHandling = JsonCommentHandling.Skip; + config.JsonSerializerOptions.WriteIndented = false; +}); + +// temporarily build the service provider to read config +{ + await using var sp = builder.Services.BuildServiceProvider(); + var localStorage = sp.GetRequiredService<ILocalStorageService>(); + var config = await localStorage.GetItemAsync<Config>("sb_admin_tc_config"); + if (config == null) { + config = new Config(); + await localStorage.SetItemAsync("sb_admin_tc_config", config); + } + builder.Services.AddSingleton(config); +} + + +await builder.Build().RunAsync(); \ No newline at end of file