From cb92b267f46113f3c0a6138729ac584be6ae9399 Mon Sep 17 00:00:00 2001 From: "Emma [it/its]@Rory&" Date: Mon, 15 Jan 2024 02:11:36 +0100 Subject: Abstract FederationClient from RemoteHomeserver --- LibMatrix/Homeservers/RemoteHomeServer.cs | 41 +++++++++++-------------------- 1 file changed, 14 insertions(+), 27 deletions(-) (limited to 'LibMatrix/Homeservers/RemoteHomeServer.cs') diff --git a/LibMatrix/Homeservers/RemoteHomeServer.cs b/LibMatrix/Homeservers/RemoteHomeServer.cs index 3423f54..f47dc4d 100644 --- a/LibMatrix/Homeservers/RemoteHomeServer.cs +++ b/LibMatrix/Homeservers/RemoteHomeServer.cs @@ -1,4 +1,5 @@ using System.Net.Http.Json; +using System.Runtime.CompilerServices; using System.Text.Json; using System.Text.Json.Serialization; using System.Web; @@ -21,22 +22,26 @@ public class RemoteHomeserver(string baseUrl) { } public static async Task Create(string baseUrl, string? proxy = null) { + if (string.IsNullOrWhiteSpace(proxy)) + proxy = null; var homeserver = new RemoteHomeserver(baseUrl); homeserver.WellKnownUris = await new HomeserverResolverService().ResolveHomeserverFromWellKnown(baseUrl); + if(string.IsNullOrWhiteSpace(homeserver.WellKnownUris.Client)) + Console.WriteLine($"Failed to resolve homeserver client URI for {baseUrl}"); + if(string.IsNullOrWhiteSpace(homeserver.WellKnownUris.Server)) + Console.WriteLine($"Failed to resolve homeserver server URI for {baseUrl}"); + + Console.WriteLine(homeserver.WellKnownUris.ToJson(ignoreNull:false)); + homeserver.ClientHttpClient = new() { - BaseAddress = new Uri(proxy ?? homeserver.WellKnownUris.Client ?? throw new InvalidOperationException("Failed to resolve homeserver")), + BaseAddress = new Uri(proxy ?? homeserver.WellKnownUris.Client ?? throw new InvalidOperationException($"Failed to resolve homeserver client URI for {baseUrl}")), Timeout = TimeSpan.FromSeconds(120) }; - if (!string.IsNullOrWhiteSpace(homeserver.WellKnownUris.Server)) - homeserver.ServerHttpClient = new() { - BaseAddress = new Uri(proxy ?? homeserver.WellKnownUris.Server ?? throw new InvalidOperationException("Failed to resolve homeserver")), - Timeout = TimeSpan.FromSeconds(120) - }; + + homeserver.FederationClient = await FederationClient.TryCreate(baseUrl, proxy); if (proxy is not null) { homeserver.ClientHttpClient.DefaultRequestHeaders.Add("MXAE_UPSTREAM", baseUrl); - if (!string.IsNullOrWhiteSpace(homeserver.WellKnownUris.Server)) - homeserver.ServerHttpClient.DefaultRequestHeaders.Add("MXAE_UPSTREAM", baseUrl); } return homeserver; @@ -46,7 +51,7 @@ public class RemoteHomeserver(string baseUrl) { public string BaseUrl { get; } = baseUrl; public MatrixHttpClient ClientHttpClient { get; set; } = null!; - public MatrixHttpClient ServerHttpClient { get; set; } = null!; + public FederationClient? FederationClient { get; set; } public HomeserverResolverService.WellKnownUris WellKnownUris { get; set; } = null!; public async Task GetProfileAsync(string mxid, bool useCache = false) { @@ -117,10 +122,6 @@ public class RemoteHomeserver(string baseUrl) { #endregion - public async Task GetServerVersionAsync() { - return await ServerHttpClient.GetFromJsonAsync("/_matrix/federation/v1/version"); - } - public string? ResolveMediaUri(string? mxcUri) { if (mxcUri is null) return null; if (mxcUri.StartsWith("https://")) return mxcUri; @@ -128,20 +129,6 @@ public class RemoteHomeserver(string baseUrl) { } } -public class ServerVersionResponse { - [JsonPropertyName("server")] - public required ServerInfo Server { get; set; } - - // ReSharper disable once ClassNeverInstantiated.Global - public class ServerInfo { - [JsonPropertyName("name")] - public string Name { get; set; } - - [JsonPropertyName("version")] - public string Version { get; set; } - } -} - public class AliasResult { [JsonPropertyName("room_id")] public string RoomId { get; set; } = null!; -- cgit 1.4.1