about summary refs log tree commit diff
path: root/LibMatrix/Homeservers/FederationClient.cs
blob: 310fa930316c589f806278d8e2a023f0e35bca7b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using LibMatrix.Extensions;
using LibMatrix.Responses.Federation;
using LibMatrix.Services;

namespace LibMatrix.Homeservers;

public class FederationClient {
    public FederationClient(string federationEndpoint, string? proxy = null) {
        HttpClient = new MatrixHttpClient {
            BaseAddress = new Uri(proxy?.TrimEnd('/') ?? federationEndpoint.TrimEnd('/')),
            // Timeout = TimeSpan.FromSeconds(120) // TODO: Re-implement this
        };
    }

    public MatrixHttpClient HttpClient { get; set; }
    public HomeserverResolverService.WellKnownUris WellKnownUris { get; set; }

    public async Task<ServerVersionResponse> GetServerVersionAsync() => await HttpClient.GetFromJsonAsync<ServerVersionResponse>("/_matrix/federation/v1/version");
    public async Task<SignedObject<ServerKeysResponse>> GetServerKeysAsync() => await HttpClient.GetFromJsonAsync<SignedObject<ServerKeysResponse>>("/_matrix/key/v2/server");
}