diff --git a/LibMatrix/Services/HomeserverProviderService.cs b/LibMatrix/Services/HomeserverProviderService.cs
index a674549..36bc828 100644
--- a/LibMatrix/Services/HomeserverProviderService.cs
+++ b/LibMatrix/Services/HomeserverProviderService.cs
@@ -1,6 +1,5 @@
using System.Net.Http.Json;
using ArcaneLibs.Collections;
-using ArcaneLibs.Extensions;
using LibMatrix.Homeservers;
using LibMatrix.Responses;
using Microsoft.Extensions.Logging;
@@ -8,9 +7,9 @@ using Microsoft.Extensions.Logging;
namespace LibMatrix.Services;
public class HomeserverProviderService(ILogger<HomeserverProviderService> logger, HomeserverResolverService hsResolver) {
- private static SemaphoreCache<AuthenticatedHomeserverGeneric> AuthenticatedHomeserverCache = new();
- private static SemaphoreCache<RemoteHomeserver> RemoteHomeserverCache = new();
- private static SemaphoreCache<FederationClient> FederationClientCache = new();
+ private static readonly SemaphoreCache<AuthenticatedHomeserverGeneric> AuthenticatedHomeserverCache = new();
+ private static readonly SemaphoreCache<RemoteHomeserver> RemoteHomeserverCache = new();
+ private static readonly SemaphoreCache<FederationClient> FederationClientCache = new();
public async Task<AuthenticatedHomeserverGeneric> GetAuthenticatedWithToken(string homeserver, string accessToken, string? proxy = null, string? impersonatedMxid = null,
bool useGeneric = false, bool enableClient = true, bool enableServer = true) {
@@ -25,7 +24,7 @@ public class HomeserverProviderService(ILogger<HomeserverProviderService> logger
if (!useGeneric) {
var clientVersionsTask = rhs.GetClientVersionsAsync();
var serverVersionTask = rhs.FederationClient?.GetServerVersionAsync() ?? Task.FromResult<ServerVersionResponse?>(null)!;
- ClientVersionsResponse? clientVersions = new();
+ ClientVersionsResponse clientVersions = new();
try {
clientVersions = await clientVersionsTask;
}
@@ -48,6 +47,8 @@ public class HomeserverProviderService(ILogger<HomeserverProviderService> logger
else {
if (serverVersion is { Server.Name: "Synapse" })
hs = new AuthenticatedHomeserverSynapse(homeserver, wellKnownUris, proxy, accessToken);
+ else if (serverVersion is { Server.Name: "LibMatrix.HomeserverEmulator"})
+ hs = new AuthenticatedHomeserverHSE(homeserver, wellKnownUris, proxy, accessToken);
}
}
catch (Exception e) {
@@ -67,7 +68,7 @@ public class HomeserverProviderService(ILogger<HomeserverProviderService> logger
});
}
- public async Task<RemoteHomeserver> GetRemoteHomeserver(string homeserver, string? proxy = null, bool useCache = true, bool enableServer = true) =>
+ public async Task<RemoteHomeserver> GetRemoteHomeserver(string homeserver, string? proxy = null, bool useCache = true, bool enableServer = false) =>
useCache
? await RemoteHomeserverCache.GetOrAdd($"{homeserver}{proxy}",
async () => { return new RemoteHomeserver(homeserver, await hsResolver.ResolveHomeserverFromWellKnown(homeserver, enableServer: enableServer), proxy); })
|