about summary refs log tree commit diff
path: root/LibMatrix.Federation/AuthenticatedFederationClient.cs
blob: 15dc88fa840a8c4918c3318245ffe99cec527529 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using LibMatrix.Abstractions;
using LibMatrix.Federation.Extensions;
using LibMatrix.Homeservers;

namespace LibMatrix.Federation;

public class AuthenticatedFederationClient(string federationEndpoint, AuthenticatedFederationClient.AuthenticatedFederationConfiguration config, string? proxy = null) : FederationClient(federationEndpoint, proxy) {
    
    public class AuthenticatedFederationConfiguration {
        public required VersionedHomeserverPrivateKey PrivateKey { get; set; } 
        public required string OriginServerName { get; set; }
    }
    
    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;
    }
    
}