diff --git a/vendor/manifest b/vendor/manifest index 95c4b6f8..425cc8f1 100644 --- a/vendor/manifest +++ b/vendor/manifest @@ -98,7 +98,7 @@ { "importpath": "github.com/matrix-org/gomatrixserverlib", "repository": "https://github.com/matrix-org/gomatrixserverlib", - "revision": "30652b26ec2e83b97c941eb1c293bf7d67340f74", + "revision": "768a8767051a4aca7f5e41f912954ae04d5f1efb", "branch": "master" }, { diff --git a/vendor/src/github.com/matrix-org/gomatrixserverlib/event.go b/vendor/src/github.com/matrix-org/gomatrixserverlib/event.go index 94de3518..e8c2de0f 100644 --- a/vendor/src/github.com/matrix-org/gomatrixserverlib/event.go +++ b/vendor/src/github.com/matrix-org/gomatrixserverlib/event.go @@ -252,10 +252,41 @@ func (e Event) Redact() Event { // This is unreachable for events created with EventBuilder.Build or NewEventFromUntrustedJSON panic(fmt.Errorf("gomatrixserverlib: invalid event %v", err)) } - return Event{ + result := Event{ redacted: true, eventJSON: eventJSON, } + if err = json.Unmarshal(eventJSON, &result.fields); err != nil { + // This is unreachable for events created with EventBuilder.Build or NewEventFromUntrustedJSON + panic(fmt.Errorf("gomatrixserverlib: invalid event %v", err)) + } + return result +} + +// SetUnsigned sets the unsigned key of the event. +// Returns a copy of the event with the "unsigned" key set. +func (e Event) SetUnsigned(unsigned interface{}) (Event, error) { + var eventAsMap map[string]rawJSON + var err error + if err = json.Unmarshal(e.eventJSON, &eventAsMap); err != nil { + return Event{}, err + } + unsignedJSON, err := json.Marshal(unsigned) + if err != nil { + return Event{}, err + } + eventAsMap["unsigned"] = unsignedJSON + eventJSON, err := json.Marshal(eventAsMap) + if err != nil { + return Event{}, err + } + if eventJSON, err = CanonicalJSON(eventJSON); err != nil { + return Event{}, err + } + result := e + result.eventJSON = eventJSON + result.fields.Unsigned = unsignedJSON + return result, nil } // EventReference returns an EventReference for the event.