diff options
author | Kegsay <kegan@matrix.org> | 2020-07-07 12:51:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-07 12:51:55 +0100 |
commit | 99ea1f9b4875e9458e640daa3358c3e9ad4fe065 (patch) | |
tree | fab2f5ccf12241cdfa4323525590957276e23c8c /roomserver/api | |
parent | d7a8bbff72194ea41d33aba49bfa3caf9a40e721 (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.go | 14 |
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 +} |