From def33cc092ae2c6defcc218b108b7c99cbfb8581 Mon Sep 17 00:00:00 2001 From: TheArcaneBrony Date: Sun, 2 Jul 2023 01:01:09 +0200 Subject: Prefetch room info --- MatrixRoomUtils.Core/AuthenticatedHomeServer.cs | 1 + MatrixRoomUtils.Core/CreateEvent.cs | 20 --------- MatrixRoomUtils.Core/Interfaces/IHomeServer.cs | 18 ++------ .../Responses/CreateRoomRequest.cs | 3 +- MatrixRoomUtils.Core/RoomTypes/GenericRoom.cs | 20 ++++----- .../Services/HomeserverResolverService.cs | 2 +- MatrixRoomUtils.Core/StateEvent.cs | 6 +-- .../Common/MjolnirShortcodeEventData.cs | 2 +- .../StateEventTypes/Common/RoomEmotesEventData.cs | 2 +- .../Spec/CanonicalAliasEventData.cs | 2 +- .../StateEventTypes/Spec/GuestAccessData.cs | 16 -------- .../StateEventTypes/Spec/GuestAccessEventData.cs | 16 ++++++++ .../StateEventTypes/Spec/HistoryVisibilityData.cs | 11 ----- .../Spec/HistoryVisibilityEventData.cs | 11 +++++ .../StateEventTypes/Spec/JoinRulesEventData.cs | 2 +- .../StateEventTypes/Spec/MessageEventData.cs | 17 -------- .../Spec/PolicyRuleStateEventData.cs | 2 +- .../StateEventTypes/Spec/PowerLevelEvent.cs | 48 ---------------------- .../StateEventTypes/Spec/PowerLevelEventData.cs | 48 ++++++++++++++++++++++ .../StateEventTypes/Spec/PresenceStateEventData.cs | 2 +- .../StateEventTypes/Spec/ProfileResponse.cs | 13 ------ .../Spec/ProfileResponseEventData.cs | 14 +++++++ .../StateEventTypes/Spec/RoomAliasEventData.cs | 2 +- .../StateEventTypes/Spec/RoomAvatarEventData.cs | 2 +- .../StateEventTypes/Spec/RoomCreateEventData.cs | 2 +- .../Spec/RoomEncryptionEventData.cs | 2 +- .../StateEventTypes/Spec/RoomMemberEventData.cs | 2 +- .../StateEventTypes/Spec/RoomMessageEventData.cs | 19 +++++++++ .../StateEventTypes/Spec/RoomNameEventData.cs | 2 +- .../StateEventTypes/Spec/RoomPinnedEventData.cs | 2 +- .../StateEventTypes/Spec/RoomTopicEventData.cs | 2 +- .../StateEventTypes/Spec/RoomTypingEventData.cs | 2 +- .../StateEventTypes/Spec/ServerACLData.cs | 2 +- .../StateEventTypes/Spec/SpaceChildEventData.cs | 2 +- 34 files changed, 143 insertions(+), 174 deletions(-) delete mode 100644 MatrixRoomUtils.Core/CreateEvent.cs delete mode 100644 MatrixRoomUtils.Core/StateEventTypes/Spec/GuestAccessData.cs create mode 100644 MatrixRoomUtils.Core/StateEventTypes/Spec/GuestAccessEventData.cs delete mode 100644 MatrixRoomUtils.Core/StateEventTypes/Spec/HistoryVisibilityData.cs create mode 100644 MatrixRoomUtils.Core/StateEventTypes/Spec/HistoryVisibilityEventData.cs delete mode 100644 MatrixRoomUtils.Core/StateEventTypes/Spec/MessageEventData.cs delete mode 100644 MatrixRoomUtils.Core/StateEventTypes/Spec/PowerLevelEvent.cs create mode 100644 MatrixRoomUtils.Core/StateEventTypes/Spec/PowerLevelEventData.cs delete mode 100644 MatrixRoomUtils.Core/StateEventTypes/Spec/ProfileResponse.cs create mode 100644 MatrixRoomUtils.Core/StateEventTypes/Spec/ProfileResponseEventData.cs create mode 100644 MatrixRoomUtils.Core/StateEventTypes/Spec/RoomMessageEventData.cs (limited to 'MatrixRoomUtils.Core') diff --git a/MatrixRoomUtils.Core/AuthenticatedHomeServer.cs b/MatrixRoomUtils.Core/AuthenticatedHomeServer.cs index 09da766..fbbb99f 100644 --- a/MatrixRoomUtils.Core/AuthenticatedHomeServer.cs +++ b/MatrixRoomUtils.Core/AuthenticatedHomeServer.cs @@ -9,6 +9,7 @@ using MatrixRoomUtils.Core.Helpers; using MatrixRoomUtils.Core.Interfaces; using MatrixRoomUtils.Core.Responses; using MatrixRoomUtils.Core.Responses.Admin; +using MatrixRoomUtils.Core.RoomTypes; using MatrixRoomUtils.Core.Services; namespace MatrixRoomUtils.Core; diff --git a/MatrixRoomUtils.Core/CreateEvent.cs b/MatrixRoomUtils.Core/CreateEvent.cs deleted file mode 100644 index a7022c5..0000000 --- a/MatrixRoomUtils.Core/CreateEvent.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Text.Json.Serialization; - -namespace MatrixRoomUtils.Core; - -public class CreateEvent { - [JsonPropertyName("creator")] - public string Creator { get; set; } - - [JsonPropertyName("room_version")] - public string RoomVersion { get; set; } - - [JsonPropertyName("type")] - public string? Type { get; set; } - - [JsonPropertyName("predecessor")] - public object? Predecessor { get; set; } - - [JsonPropertyName("m.federate")] - public bool Federate { get; set; } -} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/Interfaces/IHomeServer.cs b/MatrixRoomUtils.Core/Interfaces/IHomeServer.cs index 4ee2a3e..d41a6cd 100644 --- a/MatrixRoomUtils.Core/Interfaces/IHomeServer.cs +++ b/MatrixRoomUtils.Core/Interfaces/IHomeServer.cs @@ -2,6 +2,7 @@ using System.Net.Http.Json; using System.Text.Json; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.StateEventTypes; +using MatrixRoomUtils.Core.StateEventTypes.Spec; namespace MatrixRoomUtils.Core.Interfaces; @@ -12,27 +13,16 @@ public class IHomeServer { protected internal MatrixHttpClient _httpClient { get; set; } = new(); - public async Task GetProfile(string mxid, bool debounce = false, bool cache = true) { - // if (cache) { - // if (debounce) await Task.Delay(Random.Shared.Next(100, 500)); - // if (_profileCache.ContainsKey(mxid)) { - // while (_profileCache[mxid] == null) { - // Console.WriteLine($"Waiting for profile cache for {mxid}, currently {_profileCache[mxid]?.ToJson() ?? "null"} within {_profileCache.Count} profiles..."); - // await Task.Delay(Random.Shared.Next(50, 500)); - // } - // - // return _profileCache[mxid]; - // } - // } + public async Task GetProfile(string mxid) { if(mxid is null) throw new ArgumentNullException(nameof(mxid)); if (_profileCache.ContainsKey(mxid)) { if (_profileCache[mxid] is SemaphoreSlim s) await s.WaitAsync(); - if (_profileCache[mxid] is ProfileResponse p) return p; + if (_profileCache[mxid] is ProfileResponseEventData p) return p; } _profileCache[mxid] = new SemaphoreSlim(1); var resp = await _httpClient.GetAsync($"/_matrix/client/v3/profile/{mxid}"); - var data = await resp.Content.ReadFromJsonAsync(); + var data = await resp.Content.ReadFromJsonAsync(); if (!resp.IsSuccessStatusCode) Console.WriteLine("Profile: " + data); _profileCache[mxid] = data; diff --git a/MatrixRoomUtils.Core/Responses/CreateRoomRequest.cs b/MatrixRoomUtils.Core/Responses/CreateRoomRequest.cs index 8719b5a..334c05c 100644 --- a/MatrixRoomUtils.Core/Responses/CreateRoomRequest.cs +++ b/MatrixRoomUtils.Core/Responses/CreateRoomRequest.cs @@ -3,6 +3,7 @@ using System.Text.Json.Serialization; using System.Text.RegularExpressions; using MatrixRoomUtils.Core.Interfaces; using MatrixRoomUtils.Core.StateEventTypes; +using MatrixRoomUtils.Core.StateEventTypes.Spec; namespace MatrixRoomUtils.Core.Responses; @@ -28,7 +29,7 @@ public class CreateRoomRequest { public string Visibility { get; set; } = null!; [JsonPropertyName("power_level_content_override")] - public PowerLevelEvent PowerLevelContentOverride { get; set; } = null!; + public PowerLevelEventData PowerLevelContentOverride { get; set; } = null!; [JsonPropertyName("creation_content")] public JsonObject CreationContent { get; set; } = new(); diff --git a/MatrixRoomUtils.Core/RoomTypes/GenericRoom.cs b/MatrixRoomUtils.Core/RoomTypes/GenericRoom.cs index 879ae6b..db4d4ce 100644 --- a/MatrixRoomUtils.Core/RoomTypes/GenericRoom.cs +++ b/MatrixRoomUtils.Core/RoomTypes/GenericRoom.cs @@ -3,11 +3,9 @@ using System.Text.Json; using System.Web; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Responses; -using MatrixRoomUtils.Core.RoomTypes; -using MatrixRoomUtils.Core.StateEventTypes; -using Microsoft.Extensions.Logging; +using MatrixRoomUtils.Core.StateEventTypes.Spec; -namespace MatrixRoomUtils.Core; +namespace MatrixRoomUtils.Core.RoomTypes; public class GenericRoom { internal readonly AuthenticatedHomeServer _homeServer; @@ -111,14 +109,14 @@ public class GenericRoom { public async Task GetJoinRuleAsync() => await GetStateAsync("m.room.join_rules"); - public async Task GetHistoryVisibilityAsync() => - await GetStateAsync("m.room.history_visibility"); + public async Task GetHistoryVisibilityAsync() => + await GetStateAsync("m.room.history_visibility"); - public async Task GetGuestAccessAsync() => - await GetStateAsync("m.room.guest_access"); + public async Task GetGuestAccessAsync() => + await GetStateAsync("m.room.guest_access"); - public async Task GetCreateEventAsync() => - await GetStateAsync("m.room.create"); + public async Task GetCreateEventAsync() => + await GetStateAsync("m.room.create"); public async Task GetRoomType() { var res = await GetStateAsync("m.room.create"); @@ -149,7 +147,7 @@ public class GenericRoom { await (await _httpClient.PostAsJsonAsync($"/_matrix/client/v3/rooms/{RoomId}/state/{eventType}", content)) .Content.ReadFromJsonAsync(); - public async Task SendMessageEventAsync(string eventType, MessageEventData content) { + public async Task SendMessageEventAsync(string eventType, RoomMessageEventData content) { var res = await _httpClient.PutAsJsonAsync( $"/_matrix/client/v3/rooms/{RoomId}/send/{eventType}/" + Guid.NewGuid(), content); var resu = await res.Content.ReadFromJsonAsync(); diff --git a/MatrixRoomUtils.Core/Services/HomeserverResolverService.cs b/MatrixRoomUtils.Core/Services/HomeserverResolverService.cs index 526a261..e4d8063 100644 --- a/MatrixRoomUtils.Core/Services/HomeserverResolverService.cs +++ b/MatrixRoomUtils.Core/Services/HomeserverResolverService.cs @@ -6,7 +6,7 @@ using Microsoft.Extensions.Logging; namespace MatrixRoomUtils.Core.Services; public class HomeserverResolverService { - private readonly MatrixHttpClient _httpClient = new MatrixHttpClient(); + private readonly MatrixHttpClient _httpClient = new(); private readonly ILogger _logger; private static Dictionary _wellKnownCache = new(); diff --git a/MatrixRoomUtils.Core/StateEvent.cs b/MatrixRoomUtils.Core/StateEvent.cs index 18b4632..901a194 100644 --- a/MatrixRoomUtils.Core/StateEvent.cs +++ b/MatrixRoomUtils.Core/StateEvent.cs @@ -53,10 +53,6 @@ public class StateEvent { } } - public T1 GetContent() where T1 : IStateEventType { - return RawContent.Deserialize(); - } - [JsonIgnore] public Type GetType { get { @@ -81,7 +77,7 @@ public class StateEvent { RawContent.ToJson()); Console.WriteLine($"Saved to unknown_state_events/{Type}/{stateEventResponse.EventId}.json"); } - else if (RawContent.FindExtraJsonObjectFields(type)) { + else if (RawContent is not null && RawContent.FindExtraJsonObjectFields(type)) { Directory.CreateDirectory($"unknown_state_events/{Type}"); File.WriteAllText($"unknown_state_events/{Type}/{stateEventResponse.EventId}.json", RawContent.ToJson()); diff --git a/MatrixRoomUtils.Core/StateEventTypes/Common/MjolnirShortcodeEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Common/MjolnirShortcodeEventData.cs index efc946d..66dcdb9 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Common/MjolnirShortcodeEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Common/MjolnirShortcodeEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Common; [MatrixEvent(EventName = "org.matrix.mjolnir.shortcode")] public class MjolnirShortcodeEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Common/RoomEmotesEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Common/RoomEmotesEventData.cs index 4a75b98..633998c 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Common/RoomEmotesEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Common/RoomEmotesEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Common; [MatrixEvent(EventName = "im.ponies.room_emotes")] public class RoomEmotesEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/CanonicalAliasEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/CanonicalAliasEventData.cs index 4d6f9c3..354f99d 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/CanonicalAliasEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/CanonicalAliasEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.canonical_alias")] public class CanonicalAliasEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/GuestAccessData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/GuestAccessData.cs deleted file mode 100644 index 1727ce9..0000000 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/GuestAccessData.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Text.Json.Serialization; -using MatrixRoomUtils.Core.Extensions; -using MatrixRoomUtils.Core.Interfaces; - -namespace MatrixRoomUtils.Core.StateEventTypes; - -[MatrixEvent(EventName = "m.room.guest_access")] -public class GuestAccessData : IStateEventType { - [JsonPropertyName("guest_access")] - public string GuestAccess { get; set; } - - public bool IsGuestAccessEnabled { - get => GuestAccess == "can_join"; - set => GuestAccess = value ? "can_join" : "forbidden"; - } -} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/GuestAccessEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/GuestAccessEventData.cs new file mode 100644 index 0000000..c5b92ad --- /dev/null +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/GuestAccessEventData.cs @@ -0,0 +1,16 @@ +using System.Text.Json.Serialization; +using MatrixRoomUtils.Core.Extensions; +using MatrixRoomUtils.Core.Interfaces; + +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; + +[MatrixEvent(EventName = "m.room.guest_access")] +public class GuestAccessEventData : IStateEventType { + [JsonPropertyName("guest_access")] + public string GuestAccess { get; set; } + + public bool IsGuestAccessEnabled { + get => GuestAccess == "can_join"; + set => GuestAccess = value ? "can_join" : "forbidden"; + } +} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/HistoryVisibilityData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/HistoryVisibilityData.cs deleted file mode 100644 index 2bae838..0000000 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/HistoryVisibilityData.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Text.Json.Serialization; -using MatrixRoomUtils.Core.Extensions; -using MatrixRoomUtils.Core.Interfaces; - -namespace MatrixRoomUtils.Core.StateEventTypes; - -[MatrixEvent(EventName = "m.room.history_visibility")] -public class HistoryVisibilityData : IStateEventType { - [JsonPropertyName("history_visibility")] - public string HistoryVisibility { get; set; } -} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/HistoryVisibilityEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/HistoryVisibilityEventData.cs new file mode 100644 index 0000000..e0785b9 --- /dev/null +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/HistoryVisibilityEventData.cs @@ -0,0 +1,11 @@ +using System.Text.Json.Serialization; +using MatrixRoomUtils.Core.Extensions; +using MatrixRoomUtils.Core.Interfaces; + +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; + +[MatrixEvent(EventName = "m.room.history_visibility")] +public class HistoryVisibilityEventData : IStateEventType { + [JsonPropertyName("history_visibility")] + public string HistoryVisibility { get; set; } +} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/JoinRulesEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/JoinRulesEventData.cs index 590835b..f5410dc 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/JoinRulesEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/JoinRulesEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.join_rules")] public class JoinRulesEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/MessageEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/MessageEventData.cs deleted file mode 100644 index bc1c52b..0000000 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/MessageEventData.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Text.Json.Serialization; -using MatrixRoomUtils.Core.Extensions; -using MatrixRoomUtils.Core.Interfaces; - -[MatrixEvent(EventName = "m.room.message")] -public class MessageEventData : IStateEventType { - [JsonPropertyName("body")] - public string Body { get; set; } - [JsonPropertyName("msgtype")] - public string MessageType { get; set; } = "m.notice"; - - [JsonPropertyName("formatted_body")] - public string FormattedBody { get; set; } - - [JsonPropertyName("format")] - public string Format { get; set; } -} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/PolicyRuleStateEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/PolicyRuleStateEventData.cs index debbef0..ef94cff 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/PolicyRuleStateEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/PolicyRuleStateEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.policy.rule.user")] [MatrixEvent(EventName = "m.policy.rule.server")] diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/PowerLevelEvent.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/PowerLevelEvent.cs deleted file mode 100644 index c6100bb..0000000 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/PowerLevelEvent.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System.Text.Json.Serialization; -using MatrixRoomUtils.Core.Extensions; -using MatrixRoomUtils.Core.Interfaces; - -namespace MatrixRoomUtils.Core.StateEventTypes; - -[MatrixEvent(EventName = "m.room.power_levels")] -public class PowerLevelEvent : IStateEventType { - [JsonPropertyName("ban")] - public int Ban { get; set; } // = 50; - - [JsonPropertyName("events_default")] - public int EventsDefault { get; set; } // = 0; - - [JsonPropertyName("events")] - public Dictionary Events { get; set; } // = null!; - - [JsonPropertyName("invite")] - public int Invite { get; set; } // = 50; - - [JsonPropertyName("kick")] - public int Kick { get; set; } // = 50; - - [JsonPropertyName("notifications")] - public NotificationsPL NotificationsPl { get; set; } // = null!; - - [JsonPropertyName("redact")] - public int Redact { get; set; } // = 50; - - [JsonPropertyName("state_default")] - public int StateDefault { get; set; } // = 50; - - [JsonPropertyName("users")] - public Dictionary Users { get; set; } // = null!; - - [JsonPropertyName("users_default")] - public int UsersDefault { get; set; } // = 0; - - [Obsolete("Historical was a key related to MSC2716, a spec change on backfill that was dropped!", true)] - [JsonIgnore] - [JsonPropertyName("historical")] - public int Historical { get; set; } // = 50; - - public class NotificationsPL { - [JsonPropertyName("room")] - public int Room { get; set; } = 50; - } -} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/PowerLevelEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/PowerLevelEventData.cs new file mode 100644 index 0000000..6846db4 --- /dev/null +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/PowerLevelEventData.cs @@ -0,0 +1,48 @@ +using System.Text.Json.Serialization; +using MatrixRoomUtils.Core.Extensions; +using MatrixRoomUtils.Core.Interfaces; + +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; + +[MatrixEvent(EventName = "m.room.power_levels")] +public class PowerLevelEventData : IStateEventType { + [JsonPropertyName("ban")] + public int Ban { get; set; } // = 50; + + [JsonPropertyName("events_default")] + public int EventsDefault { get; set; } // = 0; + + [JsonPropertyName("events")] + public Dictionary Events { get; set; } // = null!; + + [JsonPropertyName("invite")] + public int Invite { get; set; } // = 50; + + [JsonPropertyName("kick")] + public int Kick { get; set; } // = 50; + + [JsonPropertyName("notifications")] + public NotificationsPL NotificationsPl { get; set; } // = null!; + + [JsonPropertyName("redact")] + public int Redact { get; set; } // = 50; + + [JsonPropertyName("state_default")] + public int StateDefault { get; set; } // = 50; + + [JsonPropertyName("users")] + public Dictionary Users { get; set; } // = null!; + + [JsonPropertyName("users_default")] + public int UsersDefault { get; set; } // = 0; + + [Obsolete("Historical was a key related to MSC2716, a spec change on backfill that was dropped!", true)] + [JsonIgnore] + [JsonPropertyName("historical")] + public int Historical { get; set; } // = 50; + + public class NotificationsPL { + [JsonPropertyName("room")] + public int Room { get; set; } = 50; + } +} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/PresenceStateEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/PresenceStateEventData.cs index a17b6f9..c5eb2ea 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/PresenceStateEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/PresenceStateEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.presence")] public class PresenceStateEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/ProfileResponse.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/ProfileResponse.cs deleted file mode 100644 index d36ef74..0000000 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/ProfileResponse.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Text.Json.Serialization; -using MatrixRoomUtils.Core.Extensions; - -namespace MatrixRoomUtils.Core.StateEventTypes; - -[MatrixEvent(EventName = "m.room.member")] -public class ProfileResponse { - [JsonPropertyName("avatar_url")] - public string? AvatarUrl { get; set; } = ""; - - [JsonPropertyName("displayname")] - public string? DisplayName { get; set; } = ""; -} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/ProfileResponseEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/ProfileResponseEventData.cs new file mode 100644 index 0000000..4596de9 --- /dev/null +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/ProfileResponseEventData.cs @@ -0,0 +1,14 @@ +using System.Text.Json.Serialization; +using MatrixRoomUtils.Core.Extensions; +using MatrixRoomUtils.Core.Interfaces; + +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; + +[MatrixEvent(EventName = "m.room.member")] +public class ProfileResponseEventData : IStateEventType { + [JsonPropertyName("avatar_url")] + public string? AvatarUrl { get; set; } = ""; + + [JsonPropertyName("displayname")] + public string? DisplayName { get; set; } = ""; +} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomAliasEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomAliasEventData.cs index 5141ed2..611e8a2 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomAliasEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomAliasEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.alias")] public class RoomAliasEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomAvatarEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomAvatarEventData.cs index 03ce16b..bab297b 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomAvatarEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomAvatarEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.avatar")] public class RoomAvatarEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomCreateEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomCreateEventData.cs index 2e4bb5a..8b85d69 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomCreateEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomCreateEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.create")] public class RoomCreateEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomEncryptionEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomEncryptionEventData.cs index 8d0576d..c473082 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomEncryptionEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomEncryptionEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.encryption")] public class RoomEncryptionEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomMemberEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomMemberEventData.cs index 50d9dd2..a543a2f 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomMemberEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomMemberEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.member")] public class RoomMemberEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomMessageEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomMessageEventData.cs new file mode 100644 index 0000000..2c56b88 --- /dev/null +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomMessageEventData.cs @@ -0,0 +1,19 @@ +using System.Text.Json.Serialization; +using MatrixRoomUtils.Core.Extensions; +using MatrixRoomUtils.Core.Interfaces; + +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; + +[MatrixEvent(EventName = "m.room.message")] +public class RoomMessageEventData : IStateEventType { + [JsonPropertyName("body")] + public string Body { get; set; } + [JsonPropertyName("msgtype")] + public string MessageType { get; set; } = "m.notice"; + + [JsonPropertyName("formatted_body")] + public string FormattedBody { get; set; } + + [JsonPropertyName("format")] + public string Format { get; set; } +} \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomNameEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomNameEventData.cs index 642b5f9..e5b7d59 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomNameEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomNameEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.name")] public class RoomNameEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomPinnedEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomPinnedEventData.cs index 05c0048..d84e962 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomPinnedEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomPinnedEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.pinned_events")] public class RoomPinnedEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomTopicEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomTopicEventData.cs index cc5b35b..cdd62a1 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomTopicEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomTopicEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.topic")] [MatrixEvent(EventName = "org.matrix.msc3765.topic", Legacy = true)] diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomTypingEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomTypingEventData.cs index eac4af2..017a117 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomTypingEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/RoomTypingEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.typing")] public class RoomTypingEventData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/ServerACLData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/ServerACLData.cs index 41bf0a8..1d56e9c 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/ServerACLData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/ServerACLData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.room.server_acl")] public class ServerACLData : IStateEventType { diff --git a/MatrixRoomUtils.Core/StateEventTypes/Spec/SpaceChildEventData.cs b/MatrixRoomUtils.Core/StateEventTypes/Spec/SpaceChildEventData.cs index f65cd5b..bb62d92 100644 --- a/MatrixRoomUtils.Core/StateEventTypes/Spec/SpaceChildEventData.cs +++ b/MatrixRoomUtils.Core/StateEventTypes/Spec/SpaceChildEventData.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces; -namespace MatrixRoomUtils.Core.StateEventTypes; +namespace MatrixRoomUtils.Core.StateEventTypes.Spec; [MatrixEvent(EventName = "m.space.child")] public class SpaceChildEventData : IStateEventType { -- cgit 1.5.1