Merge pull request #5040 from element-hq/feature/fga/relax_room_id_regex_pattern
misc (room id) : add room id regex pattern to match new versions
This commit is contained in:
@@ -28,11 +28,15 @@ object MatrixPatterns {
|
||||
private const val MATRIX_USER_IDENTIFIER_REGEX = "^@\\S*?$DOMAIN_REGEX$"
|
||||
private val PATTERN_CONTAIN_MATRIX_USER_IDENTIFIER = MATRIX_USER_IDENTIFIER_REGEX.toRegex()
|
||||
|
||||
// regex pattern to match room ids.
|
||||
// !localpart:domain" used in most room versions prior to MSC4291
|
||||
// Note: roomId can be arbitrary strings, including space and new line char
|
||||
private const val MATRIX_ROOM_IDENTIFIER_REGEX = "^!.+$DOMAIN_REGEX$"
|
||||
private val PATTERN_CONTAIN_MATRIX_ROOM_IDENTIFIER = MATRIX_ROOM_IDENTIFIER_REGEX.toRegex(RegexOption.DOT_MATCHES_ALL)
|
||||
|
||||
// "!event_id_base_64" used in room versions post MSC4291
|
||||
private const val MATRIX_ROOM_IDENTIFIER_DOMAINLESS_REGEX = "!$BASE_64_URL_SAFE_ALPHABET"
|
||||
private val PATTERN_CONTAIN_MATRIX_ROOM_IDENTIFIER_DOMAINLESS = MATRIX_ROOM_IDENTIFIER_DOMAINLESS_REGEX.toRegex()
|
||||
|
||||
// regex pattern to match room aliases.
|
||||
private const val MATRIX_ROOM_ALIAS_REGEX = "^#\\S+$DOMAIN_REGEX$"
|
||||
private val PATTERN_CONTAIN_MATRIX_ALIAS = MATRIX_ROOM_ALIAS_REGEX.toRegex(RegexOption.IGNORE_CASE)
|
||||
@@ -82,7 +86,8 @@ object MatrixPatterns {
|
||||
fun isRoomId(str: String?): Boolean {
|
||||
return str != null &&
|
||||
str.length <= MAX_IDENTIFIER_LENGTH &&
|
||||
str matches PATTERN_CONTAIN_MATRIX_ROOM_IDENTIFIER
|
||||
(str matches PATTERN_CONTAIN_MATRIX_ROOM_IDENTIFIER_DOMAINLESS ||
|
||||
str matches PATTERN_CONTAIN_MATRIX_ROOM_IDENTIFIER)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -94,7 +94,9 @@ class MatrixPatternsTest {
|
||||
assertThat(MatrixPatterns.isRoomId("#room:server.com")).isFalse()
|
||||
assertThat(MatrixPatterns.isRoomId("\$room:server.com")).isFalse()
|
||||
assertThat(MatrixPatterns.isRoomId("!${longLocalPart}a:server.com")).isFalse()
|
||||
assertThat(MatrixPatterns.isRoomId("!9BozuV4TBw6rfRW@rMEgZ5v-jNk1D6FA8Hd1OsWqT9k")).isFalse()
|
||||
|
||||
assertThat(MatrixPatterns.isRoomId("!9BozuV4TBw6rfRW3rMEgZ5v-jNk1D6FA8Hd1OsWqT9k")).isTrue()
|
||||
assertThat(MatrixPatterns.isRoomId("!room:server.com")).isTrue()
|
||||
assertThat(MatrixPatterns.isRoomId("!$longLocalPart:server.com")).isTrue()
|
||||
assertThat(MatrixPatterns.isRoomId("!#test/room\nversion <u>11</u>, with @🐈️:maunium.net")).isTrue()
|
||||
|
||||
Reference in New Issue
Block a user