about summary refs log tree commit diff
path: root/MatrixUtils.Web/Pages/Dev
diff options
context:
space:
mode:
Diffstat (limited to 'MatrixUtils.Web/Pages/Dev')
-rw-r--r--MatrixUtils.Web/Pages/Dev/WellKnownRes.razor67
1 files changed, 51 insertions, 16 deletions
diff --git a/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor b/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor

index 36fa247..9dc9556 100644 --- a/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor +++ b/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor
@@ -1,6 +1,7 @@ @page "/Dev/WellKnownRes" @using ArcaneLibs.Extensions -@using LibMatrix.Services.WellKnownResolvers +@using LibMatrix.Services.WellKnownResolver +@using LibMatrix.Services.WellKnownResolver.WellKnownResolvers @inject HomeserverResolverService legacyResolver @inject WellKnownResolverService rewriteResolver @inject ClientWellKnownResolver rewriteClientResolver @@ -9,18 +10,39 @@ <span>Room ID: <FancyTextBox @bind-Value="@RoomId"/><LinkButton OnClick="@Execute">Execute</LinkButton></span> +<span>Stats:</span><br/> +<span>Server count: @entries.Count</span><br/> +<span>Client server resolution rate (N/O/T): @entries.Count(x => x.HasClientWellKnown)/@entries.Count(x => !string.IsNullOrWhiteSpace(x.LegacyResolutionResult?.Client))/@entries.Count</span> +<br/> +<span>Server server resolution rate (N/T): @entries.Count(x => x.HasServerWellKnown)/@entries.Count</span><br/> +<span>Support resolution rate (N/T): @entries.Count(x => x.HasSupportWellKnown)/@entries.Count</span><br/> <table class="table-bordered"> <thead> <td>Homeserver</td> - <td>Legacy client URL</td> - <td>Rewrite client URL</td> + <td>Client API</td> + <td>Server API</td> + <td>Has support record</td> </thead> @foreach (var entry in entries) { - <tr style="background-color: @GetColor(entry)"> + <tr> <td>@entry.Homeserver</td> - <td>@(entry.LegacyClientUrl ?? "null")</td> - <td>@(entry.RewriteClientUrl ?? "null")</td> + <td style="background-color: @GetClientColor(entry)"> + <span>L: @entry.LegacyResolutionResult?.Client</span><br/> + <span>R: @entry.WellKnownResolutionResult?.ClientWellKnown?.Content?.Homeserver.BaseUrl</span> + </td> + <td style="background-color: @GetServerColor(entry)"> + <span>L: @entry.LegacyResolutionResult?.Server</span><br/> + <span>R: @entry.WellKnownResolutionResult?.ServerWellKnown?.Content?.Homeserver</span> + </td> + <td>@(entry.HasSupportWellKnown ? "Y" : "X")</td> + </tr> + <tr> + <td colspan="6"> + <details> + <pre>@(entry.WellKnownResolutionResult?.ToJson() ?? "null")</pre> + </details> + </td> </tr> } </table> @@ -44,8 +66,12 @@ private class TableEntry { public required string Homeserver { get; set; } - public string? LegacyClientUrl { get; set; } - public string? RewriteClientUrl { get; set; } + public HomeserverResolverService.WellKnownUris? LegacyResolutionResult { get; set; } + public WellKnownResolverService.WellKnownRecords? WellKnownResolutionResult { get; set; } + + public bool HasClientWellKnown => WellKnownResolutionResult?.ClientWellKnown is { Content.Homeserver.BaseUrl: { Length: > 0 } }; + public bool HasServerWellKnown => WellKnownResolutionResult?.ServerWellKnown is { Content.Homeserver.Length: > 0 }; + public bool HasSupportWellKnown => WellKnownResolutionResult?.SupportWellKnown?.Content is not null and not { SupportPage: null, Contacts: null or { Count: 0 } }; } private async Task Execute() { @@ -55,7 +81,7 @@ foreach (var homeserver in homeservers) { var e = new TableEntry() { Homeserver = homeserver }; _ = TryResolveLegacy(e); - _ = TryResolveRewrite(e); + _ = TryFullResolveRewrite(e); entries.Add(e); } @@ -65,23 +91,32 @@ private async Task TryResolveLegacy(TableEntry entry) { try { - entry.LegacyClientUrl = (await legacyResolver.ResolveHomeserverFromWellKnown(entry.Homeserver, enableServer: false)).Client; + var cTask = legacyResolver.ResolveHomeserverFromWellKnown(entry.Homeserver, enableServer: false); + var sTask = legacyResolver.ResolveHomeserverFromWellKnown(entry.Homeserver, enableClient: false); + entry.LegacyResolutionResult = (await cTask); + entry.LegacyResolutionResult.Server = (await sTask).Server; StateHasChanged(); } catch { } } - private async Task TryResolveRewrite(TableEntry entry) { + private async Task TryFullResolveRewrite(TableEntry entry) { try { - entry.RewriteClientUrl = (await rewriteClientResolver.TryResolveClientWellKnown(entry.Homeserver)).WellKnown.Homeserver.BaseUrl; + entry.WellKnownResolutionResult = await rewriteResolver.TryResolveWellKnownRecords(entry.Homeserver); StateHasChanged(); } catch { } } - - private string GetColor(TableEntry entry) { - if (entry.LegacyClientUrl == entry.RewriteClientUrl && entry.RewriteClientUrl == null) return "#333333"; - if (entry.LegacyClientUrl == entry.RewriteClientUrl?.TrimEnd('/')) return "#008800"; + + private string GetClientColor(TableEntry entry) { + if (entry.LegacyResolutionResult?.Client == entry.WellKnownResolutionResult?.ClientWellKnown?.Content?.Homeserver?.BaseUrl && entry.WellKnownResolutionResult?.ClientWellKnown?.Content?.Homeserver?.BaseUrl == null) return "#333333"; + if (entry.LegacyResolutionResult?.Client == entry.WellKnownResolutionResult?.ClientWellKnown?.Content?.Homeserver?.BaseUrl?.TrimEnd('/')) return "#008800"; + return "#ff0000"; + } + + private string GetServerColor(TableEntry entry) { + if (entry.LegacyResolutionResult?.Server == entry.WellKnownResolutionResult?.ServerWellKnown?.Content?.Homeserver && entry.WellKnownResolutionResult?.ServerWellKnown?.Content?.Homeserver == null) return "#333333"; + if (entry.LegacyResolutionResult?.Server == entry.WellKnownResolutionResult?.ServerWellKnown?.Content?.Homeserver.TrimEnd('/')) return "#008800"; return "#ff0000"; }