about summary refs log tree commit diff
path: root/LibMatrix/Services/WellKnownResolvers/SupportWellKnownResolver.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--LibMatrix/Services/WellKnownResolvers/SupportWellKnownResolver.cs54
1 files changed, 0 insertions, 54 deletions
diff --git a/LibMatrix/Services/WellKnownResolvers/SupportWellKnownResolver.cs b/LibMatrix/Services/WellKnownResolvers/SupportWellKnownResolver.cs
deleted file mode 100644

index 1d7567a..0000000 --- a/LibMatrix/Services/WellKnownResolvers/SupportWellKnownResolver.cs +++ /dev/null
@@ -1,54 +0,0 @@ -using System.Text.Json.Serialization; -using ArcaneLibs.Collections; -using LibMatrix.Extensions; -using Microsoft.Extensions.Logging; - -namespace LibMatrix.Services.WellKnownResolvers; - -public class SupportWellKnownResolver(ILogger<SupportWellKnownResolver> logger) { - private static readonly SemaphoreCache<WellKnownResolverService.WellKnownResolutionResult<SupportWellKnown>> ClientWellKnownCache = new() { - StoreNulls = false - }; - - private static readonly MatrixHttpClient HttpClient = new(); - - public Task<WellKnownResolverService.WellKnownResolutionResult<SupportWellKnown>> TryResolveClientWellKnown(string homeserver) { - return ClientWellKnownCache.TryGetOrAdd(homeserver, async () => { - logger.LogTrace($"Resolving client well-known: {homeserver}"); - if ((await TryGetClientWellKnownFromHttps(homeserver)) is { } clientWellKnown) - return new() { - Source = WellKnownResolverService.WellKnownSource.Https, - WellKnown = clientWellKnown - }; - return default!; - }); - } - - private async Task<SupportWellKnown?> TryGetClientWellKnownFromHttps(string homeserver) { - try { - return await HttpClient.TryGetFromJsonAsync<SupportWellKnown>($"https://{homeserver}/.well-known/matrix/support"); - } - catch { - return null; - } - } - - public struct SupportWellKnown { - [JsonPropertyName("contacts")] - public List<WellKnownContact>? Contacts { get; set; } - - [JsonPropertyName("support_page")] - public Uri? SupportPage { get; set; } - - public class WellKnownContact { - [JsonPropertyName("email_address")] - public string? EmailAddress { get; set; } - - [JsonPropertyName("matrix_id")] - public string? MatrixId { get; set; } - - [JsonPropertyName("role")] - public required string Role { get; set; } - } - } -} \ No newline at end of file