about summary refs log tree commit diff
path: root/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses
diff options
context:
space:
mode:
Diffstat (limited to 'LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses')
-rw-r--r--LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/EventReportListResult.cs6
-rw-r--r--LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/RoomListResult.cs52
-rw-r--r--LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/SynapseAdminRoomStateResult.cs2
3 files changed, 56 insertions, 4 deletions
diff --git a/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/EventReportListResult.cs b/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/EventReportListResult.cs

index 10fc039..0f3ee56 100644 --- a/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/EventReportListResult.cs +++ b/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/EventReportListResult.cs
@@ -97,10 +97,10 @@ public class SynapseAdminEventReportListResult : SynapseNextTokenTotalCollection [JsonPropertyName("unsigned")] public JsonObject? Unsigned { get; set; } - // Extra... copied from StateEventResponse + // Extra... copied from MatrixEventResponse [JsonIgnore] - public Type MappedType => StateEvent.GetStateEventType(Type); + public Type MappedType => MatrixEvent.GetEventType(Type); [JsonIgnore] public bool IsLegacyType => MappedType.GetCustomAttributes<MatrixEventAttribute>().FirstOrDefault(x => x.EventName == Type)?.Legacy ?? false; @@ -128,7 +128,7 @@ public class SynapseAdminEventReportListResult : SynapseNextTokenTotalCollection // return null; // } try { - var mappedType = StateEvent.GetStateEventType(Type); + var mappedType = MatrixEvent.GetEventType(Type); if (mappedType == typeof(UnknownEventContent)) Console.WriteLine($"Warning: unknown event type '{Type}'"); var deserialisedContent = (EventContent)RawContent.Deserialize(mappedType, TypedContentSerializerOptions)!; diff --git a/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/RoomListResult.cs b/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/RoomListResult.cs
index d84c89b..7006c07 100644 --- a/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/RoomListResult.cs +++ b/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/RoomListResult.cs
@@ -1,4 +1,5 @@ using System.Text.Json.Serialization; +using LibMatrix.EventTypes.Spec.State.RoomInfo; namespace LibMatrix.Homeservers.ImplementationDetails.Synapse.Models.Responses; @@ -60,5 +61,56 @@ public class SynapseAdminRoomListResult { [JsonPropertyName("state_events")] public int StateEvents { get; set; } + + [JsonPropertyName("gay.rory.synapse_admin_extensions.tombstone")] + public MatrixEventResponse? TombstoneEvent { get; set; } + + [JsonPropertyName("gay.rory.synapse_admin_extensions.create")] + public MatrixEventResponse? CreateEvent { get; set; } + + [JsonPropertyName("gay.rory.synapse_admin_extensions.topic")] + public MatrixEventResponse? TopicEvent { get; set; } + + public async Task<MatrixEventResponse?> GetCreateEventAsync(AuthenticatedHomeserverSynapse hs) { + if (CreateEvent != null) return CreateEvent; + + try { + var events = (await hs.Admin.GetRoomStateAsync(RoomId, RoomCreateEventContent.EventId)); + CreateEvent = events.Events.SingleOrDefault(x => x.StateKey == ""); + } + catch (Exception e) { + Console.WriteLine($"Failed to fetch room create event for {RoomId}: {e}"); + } + + return null; + } + + public async Task<MatrixEventResponse?> GetTombstoneEventAsync(AuthenticatedHomeserverSynapse hs) { + if (TombstoneEvent != null) return TombstoneEvent; + + try { + var events = (await hs.Admin.GetRoomStateAsync(RoomId, RoomTombstoneEventContent.EventId)); + TombstoneEvent = events.Events.SingleOrDefault(x => x.StateKey == ""); + } + catch (Exception e) { + Console.WriteLine($"Failed to fetch room tombstone event for {RoomId}: {e}"); + } + + return null; + } + + public async Task<MatrixEventResponse?> GetTopicEventAsync(AuthenticatedHomeserverSynapse hs) { + if (TopicEvent != null) return TopicEvent; + + try { + var events = await hs.Admin.GetRoomStateAsync(RoomId, RoomTopicEventContent.EventId); + TopicEvent = events.Events.SingleOrDefault(x => x.StateKey == ""); + } + catch (Exception e) { + Console.WriteLine($"Failed to fetch room topic event for {RoomId}: {e}"); + } + + return null; + } } } \ No newline at end of file diff --git a/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/SynapseAdminRoomStateResult.cs b/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/SynapseAdminRoomStateResult.cs
index ae36d4e..d9d5f1a 100644 --- a/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/SynapseAdminRoomStateResult.cs +++ b/LibMatrix/Homeservers/ImplementationDetails/Synapse/Models/Responses/SynapseAdminRoomStateResult.cs
@@ -4,5 +4,5 @@ namespace LibMatrix.Homeservers.ImplementationDetails.Synapse.Models.Responses; public class SynapseAdminRoomStateResult { [JsonPropertyName("state")] - public required List<StateEventResponse> Events { get; set; } + public required List<MatrixEventResponse> Events { get; set; } } \ No newline at end of file