File tree Expand file tree Collapse file tree 2 files changed +9
-2
lines changed
main/kotlin/io/element/android/libraries/matrix/api/core
test/kotlin/io/element/android/libraries/matrix/api/core Expand file tree Collapse file tree 2 files changed +9
-2
lines changed Original file line number Diff line number Diff line change @@ -28,11 +28,15 @@ object MatrixPatterns {
28
28
private const val MATRIX_USER_IDENTIFIER_REGEX = " ^@\\ S*?$DOMAIN_REGEX $"
29
29
private val PATTERN_CONTAIN_MATRIX_USER_IDENTIFIER = MATRIX_USER_IDENTIFIER_REGEX .toRegex()
30
30
31
- // regex pattern to match room ids.
31
+ // !localpart:domain" used in most room versions prior to MSC4291
32
32
// Note: roomId can be arbitrary strings, including space and new line char
33
33
private const val MATRIX_ROOM_IDENTIFIER_REGEX = " ^!.+$DOMAIN_REGEX $"
34
34
private val PATTERN_CONTAIN_MATRIX_ROOM_IDENTIFIER = MATRIX_ROOM_IDENTIFIER_REGEX .toRegex(RegexOption .DOT_MATCHES_ALL )
35
35
36
+ // "!event_id_base_64" used in room versions post MSC4291
37
+ private const val MATRIX_ROOM_IDENTIFIER_DOMAINLESS_REGEX = " !$BASE_64_URL_SAFE_ALPHABET "
38
+ private val PATTERN_CONTAIN_MATRIX_ROOM_IDENTIFIER_DOMAINLESS = MATRIX_ROOM_IDENTIFIER_DOMAINLESS_REGEX .toRegex()
39
+
36
40
// regex pattern to match room aliases.
37
41
private const val MATRIX_ROOM_ALIAS_REGEX = " ^#\\ S+$DOMAIN_REGEX $"
38
42
private val PATTERN_CONTAIN_MATRIX_ALIAS = MATRIX_ROOM_ALIAS_REGEX .toRegex(RegexOption .IGNORE_CASE )
@@ -82,7 +86,8 @@ object MatrixPatterns {
82
86
fun isRoomId (str : String? ): Boolean {
83
87
return str != null &&
84
88
str.length <= MAX_IDENTIFIER_LENGTH &&
85
- str matches PATTERN_CONTAIN_MATRIX_ROOM_IDENTIFIER
89
+ (str matches PATTERN_CONTAIN_MATRIX_ROOM_IDENTIFIER_DOMAINLESS ||
90
+ str matches PATTERN_CONTAIN_MATRIX_ROOM_IDENTIFIER )
86
91
}
87
92
88
93
/* *
Original file line number Diff line number Diff line change @@ -94,7 +94,9 @@ class MatrixPatternsTest {
94
94
assertThat(MatrixPatterns .isRoomId(" #room:server.com" )).isFalse()
95
95
assertThat(MatrixPatterns .isRoomId(" \$ room:server.com" )).isFalse()
96
96
assertThat(MatrixPatterns .isRoomId(" !${longLocalPart} a:server.com" )).isFalse()
97
+ assertThat(MatrixPatterns .isRoomId(" !9BozuV4TBw6rfRW@rMEgZ5v-jNk1D6FA8Hd1OsWqT9k" )).isFalse()
97
98
99
+ assertThat(MatrixPatterns .isRoomId(" !9BozuV4TBw6rfRW3rMEgZ5v-jNk1D6FA8Hd1OsWqT9k" )).isTrue()
98
100
assertThat(MatrixPatterns .isRoomId(" !room:server.com" )).isTrue()
99
101
assertThat(MatrixPatterns .isRoomId(" !$longLocalPart :server.com" )).isTrue()
100
102
assertThat(MatrixPatterns .isRoomId(" !#test/room\n version <u>11</u>, with @🐈️:maunium.net" )).isTrue()
You can’t perform that action at this time.
0 commit comments