about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs5
-rw-r--r--LibMatrix/Homeservers/RemoteHomeServer.cs15
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; }