about summary refs log tree commit diff
path: root/LibMatrix.Federation/AuthenticatedFederationClient.cs
diff options
context:
space:
mode:
Diffstat (limited to 'LibMatrix.Federation/AuthenticatedFederationClient.cs')
-rw-r--r--LibMatrix.Federation/AuthenticatedFederationClient.cs26
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