2 files changed, 20 insertions, 0 deletions
diff --git a/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs b/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs
index 916780e..b453d87 100644
--- a/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs
+++ b/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs
@@ -669,5 +669,10 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver {
public required List<string> Aliases { get; set; }
}
+ public async Task<HttpResponseMessage> SetRoomDirectoryVisibilityAsync(string roomId, RoomDirectoryVisibilityResponse.VisibilityValue visibility)
+ => await ClientHttpClient.PostAsJsonAsync($"/_matrix/client/v3/directory/list/room/{HttpUtility.UrlEncode(roomId)}", new RoomDirectoryVisibilityResponse {
+ Visibility = visibility
+ });
+
#endregion
}
\ No newline at end of file
diff --git a/LibMatrix/Homeservers/RemoteHomeServer.cs b/LibMatrix/Homeservers/RemoteHomeServer.cs
index 7c55d57..a14e674 100644
--- a/LibMatrix/Homeservers/RemoteHomeServer.cs
+++ b/LibMatrix/Homeservers/RemoteHomeServer.cs
@@ -83,6 +83,10 @@ public class RemoteHomeserver {
} while (limit > 0 && limit-- > 0);
}
+ public async Task<RoomDirectoryVisibilityResponse> GetRoomDirectoryVisibilityAsync(string roomId)
+ => await (await ClientHttpClient.GetAsync($"/_matrix/client/v3/directory/list/room/{HttpUtility.UrlEncode(roomId)}")).Content
+ .ReadFromJsonAsync<RoomDirectoryVisibilityResponse>() ?? throw new InvalidOperationException();
+
#region Authentication
public async Task<LoginResponse> LoginAsync(string username, string password, string? deviceName = null) {
@@ -120,6 +124,17 @@ public class RemoteHomeserver {
public UserInteractiveAuthClient Auth;
}
+public class RoomDirectoryVisibilityResponse {
+ [JsonPropertyName("visibility")]
+ public VisibilityValue Visibility { get; set; }
+
+ [JsonConverter(typeof(JsonStringEnumConverter))]
+ public enum VisibilityValue {
+ [JsonStringEnumMemberName("public")] Public,
+ [JsonStringEnumMemberName("private")] Private
+ }
+}
+
public class PublicRoomDirectoryResult {
[JsonPropertyName("chunk")]
public List<PublicRoomListItem> Chunk { get; set; }
|