about summary refs log tree commit diff
path: root/MatrixRoomUtils.Core/AuthenticatedHomeServer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MatrixRoomUtils.Core/AuthenticatedHomeServer.cs')
-rw-r--r--MatrixRoomUtils.Core/AuthenticatedHomeServer.cs44
1 files changed, 28 insertions, 16 deletions
diff --git a/MatrixRoomUtils.Core/AuthenticatedHomeServer.cs b/MatrixRoomUtils.Core/AuthenticatedHomeServer.cs
index dd9aa25..031b6b6 100644
--- a/MatrixRoomUtils.Core/AuthenticatedHomeServer.cs
+++ b/MatrixRoomUtils.Core/AuthenticatedHomeServer.cs
@@ -1,8 +1,10 @@
 using System.Net.Http.Headers;
 using System.Net.Http.Json;
 using System.Text.Json;
+using MatrixRoomUtils.Core.Extensions;
+using MatrixRoomUtils.Core.Interfaces;
 
-namespace MatrixRoomUtils;
+namespace MatrixRoomUtils.Core;
 
 public class AuthenticatedHomeServer : IHomeServer
 {
@@ -15,18 +17,20 @@ public class AuthenticatedHomeServer : IHomeServer
         AccessToken = accessToken;
         HomeServerDomain = canonicalHomeServerDomain;
         _httpClient = new HttpClient();
-        
-        var rhsfwt = ResolveHomeserverFromWellKnown(canonicalHomeServerDomain);
-        rhsfwt.ContinueWith(_ =>
-        {
-            FullHomeServerDomain = rhsfwt.Result;
-            _httpClient.Dispose();
-            _httpClient = new HttpClient {BaseAddress = new Uri(FullHomeServerDomain)};
-            _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AccessToken);
-            Console.WriteLine("[AHS] Finished setting up http client :)");
-        });
     }
 
+    public async Task<AuthenticatedHomeServer> Configure()
+    {
+        FullHomeServerDomain = await ResolveHomeserverFromWellKnown(HomeServerDomain);
+        _httpClient.Dispose();
+        _httpClient = new HttpClient { BaseAddress = new Uri(FullHomeServerDomain) };
+        _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AccessToken);
+        Console.WriteLine("[AHS] Finished setting up http client");
+
+        return this;
+    }
+    
+
     public async Task<Room> GetRoom(string roomId)
     {
         return new Room(_httpClient, roomId);
@@ -35,19 +39,27 @@ public class AuthenticatedHomeServer : IHomeServer
     public async Task<List<Room>> GetJoinedRooms()
     {
         var rooms = new List<Room>();
-        var _rooms = await _httpClient.GetAsync("/_matrix/client/v3/joined_rooms");
-        if (!_rooms.IsSuccessStatusCode)
+        var roomQuery = await _httpClient.GetAsync("/_matrix/client/v3/joined_rooms");
+        if (!roomQuery.IsSuccessStatusCode)
         {
-            Console.WriteLine($"Failed to get rooms: {await _rooms.Content.ReadAsStringAsync()}");
-            throw new InvalidDataException($"Failed to get rooms: {await _rooms.Content.ReadAsStringAsync()}");
+            Console.WriteLine($"Failed to get rooms: {await roomQuery.Content.ReadAsStringAsync()}");
+            throw new InvalidDataException($"Failed to get rooms: {await roomQuery.Content.ReadAsStringAsync()}");
         }
+        
 
-        var roomsJson = await _rooms.Content.ReadFromJsonAsync<JsonElement>();
+        var roomsJson = await roomQuery.Content.ReadFromJsonAsync<JsonElement>();
         foreach (var room in roomsJson.GetProperty("joined_rooms").EnumerateArray())
         {
             rooms.Add(new Room(_httpClient, room.GetString()));
         }
+        
+        Console.WriteLine($"Fetched {rooms.Count} rooms");
 
         return rooms;
     }
+
+    public async Task<string> ResolveMediaUri(string mxc)
+    {
+        return mxc.Replace("mxc://", $"{FullHomeServerDomain}/_matrix/media/r0/download/");
+    }
 }
\ No newline at end of file