aboutsummaryrefslogtreecommitdiff
path: root/roomserver/api
diff options
context:
space:
mode:
authorKegsay <kegan@matrix.org>2020-07-07 12:51:55 +0100
committerGitHub <noreply@github.com>2020-07-07 12:51:55 +0100
commit99ea1f9b4875e9458e640daa3358c3e9ad4fe065 (patch)
treefab2f5ccf12241cdfa4323525590957276e23c8c /roomserver/api
parentd7a8bbff72194ea41d33aba49bfa3caf9a40e721 (diff)
Emit redacted_event from the roomserver when redactions are validated (#1186)
* Emit redacted_event from the roomserver when redactions are validated - Consume them in the currentstateserver and act accordingly. - Add integration test for the roomserver to check that injecting `m.room.redaction` events result in `redacted_event` being emitted. * Linting * Ignore events that redact themselves
Diffstat (limited to 'roomserver/api')
-rw-r--r--roomserver/api/output.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/roomserver/api/output.go b/roomserver/api/output.go
index 2bbd97af..b25353ae 100644
--- a/roomserver/api/output.go
+++ b/roomserver/api/output.go
@@ -28,6 +28,8 @@ const (
OutputTypeNewInviteEvent OutputType = "new_invite_event"
// OutputTypeRetireInviteEvent indicates that the event is an OutputRetireInviteEvent
OutputTypeRetireInviteEvent OutputType = "retire_invite_event"
+ // OutputTypeRedactedEvent indicates that the event is an OutputRedactedEvent
+ OutputTypeRedactedEvent OutputType = "redacted_event"
)
// An OutputEvent is an entry in the roomserver output kafka log.
@@ -41,6 +43,8 @@ type OutputEvent struct {
NewInviteEvent *OutputNewInviteEvent `json:"new_invite_event,omitempty"`
// The content of event with type OutputTypeRetireInviteEvent
RetireInviteEvent *OutputRetireInviteEvent `json:"retire_invite_event,omitempty"`
+ // The content of event with type OutputTypeRedactedEvent
+ RedactedEvent *OutputRedactedEvent `json:"redacted_event,omitempty"`
}
// An OutputNewRoomEvent is written when the roomserver receives a new event.
@@ -165,3 +169,13 @@ type OutputRetireInviteEvent struct {
// "leave" or "ban".
Membership string
}
+
+// An OutputRedactedEvent is written whenever a redaction has been /validated/.
+// Downstream components MUST redact the given event ID if they have stored the
+// event JSON. It is guaranteed that this event ID has been seen before.
+type OutputRedactedEvent struct {
+ // The event ID that was redacted
+ RedactedEventID string
+ // The value of `unsigned.redacted_because` - the redaction event itself
+ RedactedBecause gomatrixserverlib.HeaderedEvent
+}