1 files changed, 15 insertions, 11 deletions
diff --git a/LibMatrix.Federation/AuthenticatedFederationClient.cs b/LibMatrix.Federation/AuthenticatedFederationClient.cs
index 6f8d44b..15dc88f 100644
--- a/LibMatrix.Federation/AuthenticatedFederationClient.cs
+++ b/LibMatrix.Federation/AuthenticatedFederationClient.cs
@@ -1,20 +1,24 @@
-using LibMatrix.Homeservers;
+using LibMatrix.Abstractions;
+using LibMatrix.Federation.Extensions;
+using LibMatrix.Homeservers;
namespace LibMatrix.Federation;
-public class AuthenticatedFederationClient : FederationClient {
+public class AuthenticatedFederationClient(string federationEndpoint, AuthenticatedFederationClient.AuthenticatedFederationConfiguration config, string? proxy = null) : FederationClient(federationEndpoint, proxy) {
public class AuthenticatedFederationConfiguration {
-
- }
- public AuthenticatedFederationClient(string federationEndpoint, AuthenticatedFederationConfiguration config, string? proxy = null) : base(federationEndpoint, proxy)
- {
-
+ public required VersionedHomeserverPrivateKey PrivateKey { get; set; }
+ public required string OriginServerName { get; set; }
}
- // public async Task<UserDeviceListResponse> GetUserDevicesAsync(string userId) {
- // var response = await GetAsync<UserDeviceListResponse>($"/_matrix/federation/v1/user/devices/{userId}", accessToken);
- // return response;
- // }
+ public async Task<UserDeviceListResponse> GetUserDevicesAsync(string userId) {
+ var response = await HttpClient.SendAsync(new XMatrixAuthorizationScheme.XMatrixRequestSignature() {
+ OriginServerName = config.OriginServerName,
+ DestinationServerName = userId.Split(':', 2)[1],
+ Method = "GET",
+ Uri = $"/_matrix/federation/v1/user/devices/{userId}",
+ }.ToSignedHttpRequestMessage(config.PrivateKey));
+ return response;
+ }
}
\ No newline at end of file
|