diff --git a/event.go b/event.go index 9d605abf..147c912d 100644 --- a/event.go +++ b/event.go @@ -65,8 +65,10 @@ const ( ) func checkID(id, kind string, sigil byte) (err error) { - if _, err = domainFromID(id); err != nil { - return + if kind == "room" { + if _, err = spec.ParseAndValidateRoomID(id); err != nil { + return + } } if id[0] != sigil { err = fmt.Errorf( diff --git a/spec/roomid.go b/spec/roomid.go index 332db30f..a2f8340e 100644 --- a/spec/roomid.go +++ b/spec/roomid.go @@ -20,7 +20,7 @@ type RoomID struct { } func NewRoomID(id string) (*RoomID, error) { - return parseAndValidateRoomID(id) + return ParseAndValidateRoomID(id) } // Returns the full roomID string including leading sigil @@ -41,7 +41,7 @@ func (room RoomID) Domain() ServerName { return ServerName(room.domain) } -func parseAndValidateRoomID(id string) (*RoomID, error) { +func ParseAndValidateRoomID(id string) (*RoomID, error) { idLength := len(id) if idLength < 4 { // 4 since minimum roomID includes an !, :, non-empty opaque ID, non-empty domain return nil, fmt.Errorf("length %d is too short to be valid", idLength)