dendrite/roomserver/internal/helpers/sanity.go
2020-09-24 10:14:19 +01:00

29 lines
836 B
Go

package helpers
import (
"encoding/json"
"fmt"
"github.com/matrix-org/gomatrixserverlib"
)
// SanityCheckEvent looks for any obvious problems with the event before
// we bother to continue processing it any further.
func SanityCheckEvent(event *gomatrixserverlib.Event) error {
switch event.Type() {
case gomatrixserverlib.MRoomCreate:
var content gomatrixserverlib.CreateContent
if err := json.Unmarshal(event.Content(), &content); err != nil {
return fmt.Errorf("Failed to unmarshal content of create event %q", event.EventID())
}
// Check that the room version is supported.
if content.RoomVersion != nil {
if _, err := content.RoomVersion.EventFormat(); err != nil {
return fmt.Errorf("Room version %q is unsupported in create event %q", *content.RoomVersion, event.EventID())
}
}
}
return nil
}