chore: Update to matrix v1.2

This commit is contained in:
Nicolas Werner 2022-03-16 16:31:02 +01:00
parent 2fa6561f36
commit d6bb91f7e1
8 changed files with 1829 additions and 767 deletions

4
.gitignore vendored
View File

@ -13,6 +13,10 @@ test/.test_coverage.dart
coverage/
coverage_badge.svg
# codegen related
*.bak
*.bakmacoscompat
# IntelliJ related
*.iml
*.ipr

View File

@ -89,17 +89,17 @@ class FakeMatrixApi extends MockClient {
statusCode = 405;
}
} else if (method == 'PUT' &&
action.contains('/client/r0/sendToDevice/')) {
action.contains('/client/v3/sendToDevice/')) {
res = {};
} else if (method == 'GET' &&
action.contains('/client/r0/rooms/') &&
action.contains('/client/v3/rooms/') &&
action.contains('/state/m.room.member/')) {
res = {'displayname': ''};
} else if (method == 'PUT' &&
action.contains(
'/client/r0/rooms/!1234%3AfakeServer.notExisting/send/')) {
'/client/v3/rooms/!1234%3AfakeServer.notExisting/send/')) {
res = {'event_id': '\$event${FakeMatrixApi.eventCounter++}'};
} else if (action.contains('/client/r0/sync')) {
} else if (action.contains('/client/v3/sync')) {
res = {
'next_batch': DateTime.now().millisecondsSinceEpoch.toString
};
@ -752,11 +752,11 @@ class FakeMatrixApi extends MockClient {
'errcode': 'M_FORBIDDEN',
'error': 'Blabla',
},
'/media/r0/preview_url?url=https%3A%2F%2Fmatrix.org&ts=10': (var req) => {
'/media/v3/preview_url?url=https%3A%2F%2Fmatrix.org&ts=10': (var req) => {
'og:image': 'mxc://example.com/ascERGshawAWawugaAcauga',
'matrix:image:size': 102400
},
'/media/r0/config': (var req) => {'m.upload.size': 50000000},
'/media/v3/config': (var req) => {'m.upload.size': 50000000},
'/.well-known/matrix/client': (var req) => {
'm.homeserver': {
'base_url': 'https://fakeserver.notexisting',
@ -768,7 +768,7 @@ class FakeMatrixApi extends MockClient {
'app_url': 'https://custom.app.fakeserver.notexisting'
}
},
'/client/r0/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags':
'/client/v3/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags':
(var req) => {
'tags': {
'm.favourite': {'order': 0.1},
@ -776,7 +776,7 @@ class FakeMatrixApi extends MockClient {
'u.Customers': {}
}
},
'/client/r0/events?from=1234&timeout=10&room_id=%211234': (var req) => {
'/client/v3/events?from=1234&timeout=10&room_id=%211234': (var req) => {
'start': 's3456_9_0',
'end': 's3457_9_0',
'chunk': [
@ -796,35 +796,35 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/thirdparty/location?alias=1234': (var req) => [
'/client/v3/thirdparty/location?alias=1234': (var req) => [
{
'alias': '#freenode_#matrix:matrix.org',
'protocol': 'irc',
'fields': {'network': 'freenode', 'channel': '#matrix'}
}
],
'/client/r0/thirdparty/location/irc': (var req) => [
'/client/v3/thirdparty/location/irc': (var req) => [
{
'alias': '#freenode_#matrix:matrix.org',
'protocol': 'irc',
'fields': {'network': 'freenode', 'channel': '#matrix'}
}
],
'/client/r0/thirdparty/user/irc': (var req) => [
'/client/v3/thirdparty/user/irc': (var req) => [
{
'userid': '@_gitter_jim:matrix.org',
'protocol': 'gitter',
'fields': {'user': 'jim'}
}
],
'/client/r0/thirdparty/user?userid=1234': (var req) => [
'/client/v3/thirdparty/user?userid=1234': (var req) => [
{
'userid': '@_gitter_jim:matrix.org',
'protocol': 'gitter',
'fields': {'user': 'jim'}
}
],
'/client/r0/thirdparty/protocol/irc': (var req) => {
'/client/v3/thirdparty/protocol/irc': (var req) => {
'user_fields': ['network', 'nickname'],
'location_fields': ['network', 'channel'],
'icon': 'mxc://example.org/aBcDeFgH',
@ -845,7 +845,7 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/thirdparty/protocols': (var req) => {
'/client/v3/thirdparty/protocols': (var req) => {
'irc': {
'user_fields': ['network', 'nickname'],
'location_fields': ['network', 'channel'],
@ -888,9 +888,9 @@ class FakeMatrixApi extends MockClient {
]
}
},
'/client/r0/account/whoami': (var req) =>
'/client/v3/account/whoami': (var req) =>
{'user_id': 'alice@example.com'},
'/client/r0/capabilities': (var req) => {
'/client/v3/capabilities': (var req) => {
'capabilities': {
'm.change_password': {'enabled': false},
'm.room_versions': {
@ -905,7 +905,7 @@ class FakeMatrixApi extends MockClient {
'com.example.custom.ratelimit': {'max_requests_per_hour': 600}
}
},
'/client/r0/rooms/1234/context/1234?limit=10&filter=%7B%7D': (var req) =>
'/client/v3/rooms/1234/context/1234?limit=10&filter=%7B%7D': (var req) =>
{
'end': 't29-57_2_0_2',
'events_after': [
@ -996,7 +996,7 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/admin/whois/%40alice%3Aexample.com': (var req) => {
'/client/v3/admin/whois/%40alice%3Aexample.com': (var req) => {
'user_id': '@peter:rabbit.rocks',
'devices': {
'teapot': {
@ -1020,15 +1020,15 @@ class FakeMatrixApi extends MockClient {
}
}
},
'/client/r0/user/%40alice%3Aexample.com/account_data/test.account.data':
'/client/v3/user/%40alice%3Aexample.com/account_data/test.account.data':
(var req) => {'foo': 'bar'},
'/client/r0/user/%40alice%3Aexample.com/rooms/1234/account_data/test.account.data':
'/client/v3/user/%40alice%3Aexample.com/rooms/1234/account_data/test.account.data':
(var req) => {'foo': 'bar'},
'/client/r0/directory/room/%23testalias%3Aexample.com': (var reqI) => {
'/client/v3/directory/room/%23testalias%3Aexample.com': (var reqI) => {
'room_id': '!abnjk1jdasj98:capuchins.com',
'servers': ['capuchins.com', 'matrix.org', 'another.com']
},
'/client/r0/account/3pid': (var req) => {
'/client/v3/account/3pid': (var req) => {
'threepids': [
{
'medium': 'email',
@ -1038,7 +1038,7 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/devices': (var req) => {
'/client/v3/devices': (var req) => {
'devices': [
{
'device_id': 'QBUAZIFURK',
@ -1048,7 +1048,7 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/notifications?from=1234&limit=10&only=1234': (var req) => {
'/client/v3/notifications?from=1234&limit=10&only=1234': (var req) => {
'next_token': 'abcdef',
'notifications': [
{
@ -1074,21 +1074,21 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/devices/QBUAZIFURK': (var req) => {
'/client/v3/devices/QBUAZIFURK': (var req) => {
'device_id': 'QBUAZIFURK',
'display_name': 'android',
'last_seen_ip': '1.2.3.4',
'last_seen_ts': 1474491775024
},
'/client/r0/profile/%40alice%3Aexample.com/displayname': (var reqI) =>
'/client/v3/profile/%40alice%3Aexample.com/displayname': (var reqI) =>
{'displayname': 'Alice M'},
'/client/r0/profile/%40alice%3Aexample.com/avatar_url': (var reqI) =>
'/client/v3/profile/%40alice%3Aexample.com/avatar_url': (var reqI) =>
{'avatar_url': 'mxc://test'},
'/client/r0/profile/%40alice%3Aexample.com': (var reqI) => {
'/client/v3/profile/%40alice%3Aexample.com': (var reqI) => {
'avatar_url': 'mxc://test',
'displayname': 'Alice M',
},
'/client/r0/voip/turnServer': (var req) => {
'/client/v3/voip/turnServer': (var req) => {
'username': '1443779631:@user:example.com',
'password': 'JlKfBy1QwLrO20385QyAtEyIv0=',
'uris': [
@ -1098,18 +1098,18 @@ class FakeMatrixApi extends MockClient {
],
'ttl': 86400
},
'/client/r0/presence/${Uri.encodeComponent('@alice:example.com')}/status':
'/client/v3/presence/${Uri.encodeComponent('@alice:example.com')}/status':
(var req) => {
'presence': 'unavailable',
'last_active_ago': 420845,
'status_msg': 'test',
'currently_active': false
},
'/client/r0/keys/changes?from=1234&to=1234': (var req) => {
'/client/v3/keys/changes?from=1234&to=1234': (var req) => {
'changed': ['@alice:example.com', '@bob:example.org'],
'left': ['@clara:example.com', '@doug:example.org']
},
'/client/r0/pushers': (var req) => {
'/client/v3/pushers': (var req) => {
'pushers': [
{
'pushkey': 'Xp/MzCt8/9DcSNE9cuiaoT5Ac55job3TdLSSmtmYl4A=',
@ -1126,11 +1126,10 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/publicRooms?limit=10&since=1234&server=example.com':
'/client/v3/publicRooms?limit=10&since=1234&server=example.com':
(var req) => {
'chunk': [
{
'aliases': ['#murrays:cheese.bar'],
'canonical_alias': '#murrays:cheese.bar',
'avatar_url': 'mxc://bleeker.street/CHEDDARandBRIE',
'guest_can_join': false,
@ -1145,30 +1144,30 @@ class FakeMatrixApi extends MockClient {
'prev_batch': 'p1902',
'total_room_count_estimate': 115
},
'/client/r0/rooms/!localpart%3Aexample.com/aliases': (var req) => {
'/client/v3/rooms/!localpart%3Aexample.com/aliases': (var req) => {
'aliases': [
'#somewhere:example.com',
'#another:example.com',
'#hat_trick:example.com'
]
},
'/client/r0/joined_rooms': (var req) => {
'/client/v3/joined_rooms': (var req) => {
'joined_rooms': ['!foo:example.com']
},
'/client/r0/directory/list/room/!localpart%3Aexample.com': (var req) =>
'/client/v3/directory/list/room/!localpart%3Aexample.com': (var req) =>
{'visibility': 'public'},
'/client/r0/rooms/1/state/m.room.member/@alice:example.com': (var req) =>
'/client/v3/rooms/1/state/m.room.member/@alice:example.com': (var req) =>
{'displayname': 'Alice'},
'/client/r0/profile/%40getme%3Aexample.com': (var req) => {
'/client/v3/profile/%40getme%3Aexample.com': (var req) => {
'avatar_url': 'mxc://test',
'displayname': 'You got me',
},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.member/@getme%3Aexample.com':
'/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.member/@getme%3Aexample.com':
(var req) => {
'avatar_url': 'mxc://test',
'displayname': 'You got me',
},
'/client/r0/rooms/!localpart%3Aserver.abc/state': (var req) => [
'/client/v3/rooms/!localpart%3Aserver.abc/state': (var req) => [
{
'content': {'join_rule': 'public'},
'type': 'm.room.join_rules',
@ -1233,12 +1232,12 @@ class FakeMatrixApi extends MockClient {
'state_key': ''
}
],
'/client/r0/rooms/!localpart:server.abc/state/m.room.member/@getme:example.com':
'/client/v3/rooms/!localpart:server.abc/state/m.room.member/@getme:example.com':
(var req) => {
'avatar_url': 'mxc://test',
'displayname': 'You got me',
},
'/client/r0/rooms/!localpart:server.abc/event/1234': (var req) => {
'/client/v3/rooms/!localpart:server.abc/event/1234': (var req) => {
'content': {
'body': 'This is an example text message',
'msgtype': 'm.text',
@ -1252,7 +1251,7 @@ class FakeMatrixApi extends MockClient {
'origin_server_ts': 1432735824653,
'unsigned': {'age': 1234}
},
'/client/r0/rooms/!localpart%3Aserver.abc/event/1234': (var req) => {
'/client/v3/rooms/!localpart%3Aserver.abc/event/1234': (var req) => {
'content': {
'body': 'This is an example text message',
'msgtype': 'm.text',
@ -1266,11 +1265,11 @@ class FakeMatrixApi extends MockClient {
'origin_server_ts': 1432735824653,
'unsigned': {'age': 1234}
},
'/client/r0/rooms/!localpart%3Aserver.abc/messages?from=1234&to=1234&dir=b&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
'/client/v3/rooms/!localpart%3Aserver.abc/messages?from=1234&to=1234&dir=b&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
(var req) => messagesResponse,
'/client/r0/rooms/!localpart%3Aserver.abc/messages?from=&dir=b&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
'/client/v3/rooms/!localpart%3Aserver.abc/messages?from=&dir=b&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
(var req) => messagesResponse,
'/client/r0/rooms/!1234%3Aexample.com/messages?from=1234&dir=b&limit=100&filter=%7B%22lazy_load_members%22%3Atrue%7D':
'/client/v3/rooms/!1234%3Aexample.com/messages?from=1234&dir=b&limit=100&filter=%7B%22lazy_load_members%22%3Atrue%7D':
(var req) => messagesResponse,
'/client/versions': (var req) => {
'versions': [
@ -1283,12 +1282,12 @@ class FakeMatrixApi extends MockClient {
],
'unstable_features': {'m.lazy_load_members': true},
},
'/client/r0/login': (var req) => {
'/client/v3/login': (var req) => {
'flows': [
{'type': 'm.login.password'}
]
},
'/client/r0/rooms/!localpart%3Aserver.abc/joined_members': (var req) => {
'/client/v3/rooms/!localpart%3Aserver.abc/joined_members': (var req) => {
'joined': {
'@bar:example.com': {
'display_name': 'Bar',
@ -1296,7 +1295,7 @@ class FakeMatrixApi extends MockClient {
}
}
},
'/client/r0/rooms/!localpart%3Aserver.abc/members?at=1234&membership=join&not_membership=leave':
'/client/v3/rooms/!localpart%3Aserver.abc/members?at=1234&membership=join&not_membership=leave':
(var req) => {
'chunk': [
{
@ -1315,7 +1314,7 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/rooms/!696r7674:example.com/members': (var req) => {
'/client/v3/rooms/!696r7674:example.com/members': (var req) => {
'chunk': [
{
'content': {
@ -1333,7 +1332,7 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/rooms/!726s6s6q:example.com/members': (var req) => {
'/client/v3/rooms/!726s6s6q:example.com/members': (var req) => {
'chunk': [
{
'content': {
@ -1351,7 +1350,7 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/rooms/!localpart%3Aserver.abc/members': (var req) => {
'/client/v3/rooms/!localpart%3Aserver.abc/members': (var req) => {
'chunk': [
{
'content': {
@ -1369,20 +1368,20 @@ class FakeMatrixApi extends MockClient {
}
]
},
'/client/r0/pushrules/global/content/nocake': (var req) => {
'/client/v3/pushrules/global/content/nocake': (var req) => {
'actions': ['dont_notify'],
'pattern': 'cake*lie',
'rule_id': 'nocake',
'enabled': true,
'default': false
},
'/client/r0/pushrules/global/content/nocake/enabled': (var req) => {
'/client/v3/pushrules/global/content/nocake/enabled': (var req) => {
'enabled': true,
},
'/client/r0/pushrules/global/content/nocake/actions': (var req) => {
'/client/v3/pushrules/global/content/nocake/actions': (var req) => {
'actions': ['notify']
},
'/client/r0/pushrules': (var req) => {
'/client/v3/pushrules': (var req) => {
'global': {
'content': [
{
@ -1527,15 +1526,15 @@ class FakeMatrixApi extends MockClient {
]
}
},
'/client/r0/sync?filter=%7B%22room%22%3A%7B%22include_leave%22%3Atrue%2C%22timeline%22%3A%7B%22limit%22%3A10%7D%7D%7D&timeout=0':
'/client/v3/sync?filter=%7B%22room%22%3A%7B%22include_leave%22%3Atrue%2C%22timeline%22%3A%7B%22limit%22%3A10%7D%7D%7D&timeout=0':
(var req) => archiveSyncResponse,
'/client/r0/sync?filter=%7B%22room%22%3A%7B%22state%22%3A%7B%22lazy_load_members%22%3Atrue%7D%7D%7D':
'/client/v3/sync?filter=%7B%22room%22%3A%7B%22state%22%3A%7B%22lazy_load_members%22%3Atrue%7D%7D%7D':
(var req) => syncResponse,
'/client/r0/sync?filter=%7B%7D&since=1234&full_state=false&set_presence=unavailable&timeout=15':
'/client/v3/sync?filter=%7B%7D&since=1234&full_state=false&set_presence=unavailable&timeout=15':
(var req) => syncResponse,
'/client/r0/register/available?username=testuser': (var req) =>
'/client/v3/register/available?username=testuser': (var req) =>
{'available': true},
'/client/r0/user/${Uri.encodeComponent('alice@example.com')}/filter/1234':
'/client/v3/user/${Uri.encodeComponent('alice@example.com')}/filter/1234':
(var req) => {
'room': {
'state': {
@ -1566,7 +1565,7 @@ class FakeMatrixApi extends MockClient {
'event_format': 'client',
'event_fields': ['type', 'content', 'sender']
},
'/client/unstable/room_keys/version': (var req) => {
'/client/v3/room_keys/version': (var req) => {
'algorithm': AlgorithmTypes.megolmBackupV1Curve25519AesSha2,
'auth_data': {
'public_key': 'GXYaxqhNhUK28zUdxOmEsFRguz+PzBsDlTLlF0O0RkM',
@ -1576,7 +1575,7 @@ class FakeMatrixApi extends MockClient {
'etag': '0',
'version': '5',
},
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
(var req) => {
'first_message_index': 0,
'forwarded_count': 0,
@ -1588,7 +1587,7 @@ class FakeMatrixApi extends MockClient {
'mac': 'QzKV/fgAs4U',
},
},
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
(var req) => {
'sessions': {
'ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU': {
@ -1605,7 +1604,7 @@ class FakeMatrixApi extends MockClient {
},
},
},
'/client/unstable/room_keys/keys?version=5': (var req) => {
'/client/v3/room_keys/keys?version=5': (var req) => {
'rooms': {
'!726s6s6q:example.com': {
'sessions': {
@ -1627,16 +1626,16 @@ class FakeMatrixApi extends MockClient {
},
},
'POST': {
'/client/r0/delete_devices': (var req) => {},
'/client/r0/account/3pid/add': (var req) => {},
'/client/r0/account/3pid/bind': (var req) => {},
'/client/r0/account/3pid/delete': (var req) =>
'/client/v3/delete_devices': (var req) => {},
'/client/v3/account/3pid/add': (var req) => {},
'/client/v3/account/3pid/bind': (var req) => {},
'/client/v3/account/3pid/delete': (var req) =>
{'id_server_unbind_result': 'success'},
'/client/r0/account/3pid/unbind': (var req) =>
'/client/v3/account/3pid/unbind': (var req) =>
{'id_server_unbind_result': 'success'},
'/client/r0/account/password': (var req) => {},
'/client/r0/rooms/1234/report/1234': (var req) => {},
'/client/r0/search': (var req) => {
'/client/v3/account/password': (var req) => {},
'/client/v3/rooms/1234/report/1234': (var req) => {},
'/client/v3/search': (var req) => {
'search_categories': {
'room_events': {
'groups': {
@ -1674,9 +1673,9 @@ class FakeMatrixApi extends MockClient {
}
}
},
'/client/r0/account/deactivate': (var req) =>
'/client/v3/account/deactivate': (var req) =>
{'id_server_unbind_result': 'success'},
'/client/r0/user_directory/search': (var req) => {
'/client/v3/user_directory/search': (var req) => {
'results': [
{
'user_id': '@foo:bar.com',
@ -1686,39 +1685,38 @@ class FakeMatrixApi extends MockClient {
],
'limited': false
},
'/client/r0/register/email/requestToken': (var req) => {
'/client/v3/register/email/requestToken': (var req) => {
'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken'
},
'/client/r0/register/msisdn/requestToken': (var req) => {
'/client/v3/register/msisdn/requestToken': (var req) => {
'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken'
},
'/client/r0/account/password/email/requestToken': (var req) => {
'/client/v3/account/password/email/requestToken': (var req) => {
'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken'
},
'/client/r0/account/password/msisdn/requestToken': (var req) => {
'/client/v3/account/password/msisdn/requestToken': (var req) => {
'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken'
},
'/client/r0/account/3pid/email/requestToken': (var req) => {
'/client/v3/account/3pid/email/requestToken': (var req) => {
'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken'
},
'/client/r0/account/3pid/msisdn/requestToken': (var req) => {
'/client/v3/account/3pid/msisdn/requestToken': (var req) => {
'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken'
},
'/client/r0/rooms/!localpart%3Aexample.com/receipt/m.read/%241234%3Aexample.com':
'/client/v3/rooms/!localpart%3Aexample.com/receipt/m.read/%241234%3Aexample.com':
(var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/read_markers': (var req) => {},
'/client/r0/user/${Uri.encodeComponent('alice@example.com')}/filter':
'/client/v3/rooms/!localpart%3Aexample.com/read_markers': (var req) => {},
'/client/v3/user/${Uri.encodeComponent('alice@example.com')}/filter':
(var req) => {'filter_id': '1234'},
'/client/r0/publicRooms?server=example.com': (var req) => {
'/client/v3/publicRooms?server=example.com': (var req) => {
'chunk': [
{
'aliases': ['#murrays:cheese.bar'],
'canonical_alias': '#murrays:cheese.bar',
'avatar_url': 'mxc://bleeker.street/CHEDDARandBRIE',
'guest_can_join': false,
@ -1733,7 +1731,7 @@ class FakeMatrixApi extends MockClient {
'prev_batch': 'p1902',
'total_room_count_estimate': 115
},
'/client/r0/keys/claim': (var req) => {
'/client/v3/keys/claim': (var req) => {
'failures': {},
'one_time_keys': {
if (decodeJson(req)['one_time_keys']['@alice:example.com'] !=
@ -1769,25 +1767,25 @@ class FakeMatrixApi extends MockClient {
},
}
},
'/client/r0/rooms/!localpart%3Aexample.com/invite': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/leave': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/forget': (var req) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/kick': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/kick': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/ban': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/unban': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/join': (var req) =>
'/client/v3/rooms/!localpart%3Aexample.com/invite': (var req) => {},
'/client/v3/rooms/!localpart%3Aexample.com/leave': (var req) => {},
'/client/v3/rooms/!localpart%3Aexample.com/forget': (var req) => {},
'/client/v3/rooms/!localpart%3Aserver.abc/kick': (var req) => {},
'/client/v3/rooms/!localpart%3Aexample.com/kick': (var req) => {},
'/client/v3/rooms/!localpart%3Aexample.com/ban': (var req) => {},
'/client/v3/rooms/!localpart%3Aexample.com/unban': (var req) => {},
'/client/v3/rooms/!localpart%3Aexample.com/join': (var req) =>
{'room_id': '!localpart:example.com'},
'/client/r0/join/!localpart%3Aexample.com?server_name=example.com&server_name=example.abc':
'/client/v3/join/!localpart%3Aexample.com?server_name=example.com&server_name=example.abc':
(var req) => {'room_id': '!localpart:example.com'},
'/client/r0/keys/upload': (var req) => {
'/client/v3/keys/upload': (var req) => {
'one_time_key_counts': {
'curve25519': 10,
'signed_curve25519':
decodeJson(req)['one_time_keys']?.keys?.length ?? 0,
}
},
'/client/r0/keys/query': (var req) => {
'/client/v3/keys/query': (var req) => {
'failures': {},
'device_keys': {
'@alice:example.com': {
@ -1970,32 +1968,32 @@ class FakeMatrixApi extends MockClient {
},
},
},
'/client/r0/register': (var req) => {
'/client/v3/register': (var req) => {
'user_id': '@testuser:example.com',
'access_token': '1234',
'device_id': 'ABCD',
},
'/client/r0/register?kind=user': (var req) =>
'/client/v3/register?kind=user': (var req) =>
{'user_id': '@testuser:example.com'},
'/client/r0/register?kind=guest': (var req) =>
'/client/v3/register?kind=guest': (var req) =>
{'user_id': '@testuser:example.com'},
'/client/r0/rooms/1234/upgrade': (var req) => {
'/client/v3/rooms/1234/upgrade': (var req) => {
'replacement_room': '!1234:fakeServer.notExisting',
},
'/client/r0/user/1234/openid/request_token': (var req) => {
'/client/v3/user/1234/openid/request_token': (var req) => {
'access_token': 'SomeT0kenHere',
'token_type': 'Bearer',
'matrix_server_name': 'example.com',
'expires_in': 3600
},
'/client/r0/user/@test:fakeServer.notExisting/openid/request_token':
'/client/v3/user/@test:fakeServer.notExisting/openid/request_token':
(var req) => {
'access_token': 'SomeT0kenHere',
'token_type': 'Bearer',
'matrix_server_name': 'example.com',
'expires_in': 3600
},
'/client/r0/login': (var req) => {
'/client/v3/login': (var req) => {
'user_id': '@test:fakeServer.notExisting',
'access_token': 'abc123',
'device_id': 'GHTYAJCE',
@ -2004,160 +2002,160 @@ class FakeMatrixApi extends MockClient {
'm.identity_server': {'base_url': 'https://id.example.org'}
}
},
'/media/r0/upload?filename=file.jpeg': (var req) =>
'/media/v3/upload?filename=file.jpeg': (var req) =>
{'content_uri': 'mxc://example.com/AQwafuaFswefuhsfAFAgsw'},
'/client/r0/logout': (var reqI) => {},
'/client/r0/pushers/set': (var reqI) => {},
'/client/r0/join/1234': (var reqI) => {'room_id': '1234'},
'/client/r0/logout/all': (var reqI) => {},
'/client/r0/createRoom': (var reqI) => {
'/client/v3/logout': (var reqI) => {},
'/client/v3/pushers/set': (var reqI) => {},
'/client/v3/join/1234': (var reqI) => {'room_id': '1234'},
'/client/v3/logout/all': (var reqI) => {},
'/client/v3/createRoom': (var reqI) => {
'room_id': '!1234:fakeServer.notExisting',
},
'/client/r0/rooms/!localpart%3Aserver.abc/read_markers': (var reqI) => {},
'/client/r0/rooms/!localpart:server.abc/kick': (var reqI) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/ban': (var reqI) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/unban': (var reqI) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/invite': (var reqI) => {},
'/client/unstable/keys/device_signing/upload': (var reqI) {
'/client/v3/rooms/!localpart%3Aserver.abc/read_markers': (var reqI) => {},
'/client/v3/rooms/!localpart:server.abc/kick': (var reqI) => {},
'/client/v3/rooms/!localpart%3Aserver.abc/ban': (var reqI) => {},
'/client/v3/rooms/!localpart%3Aserver.abc/unban': (var reqI) => {},
'/client/v3/rooms/!localpart%3Aserver.abc/invite': (var reqI) => {},
'/client/v3/keys/device_signing/upload': (var reqI) {
return {};
},
'/client/r0/keys/signatures/upload': (var reqI) => {'failures': {}},
'/client/unstable/room_keys/version': (var reqI) => {'version': '5'},
'/client/v3/keys/signatures/upload': (var reqI) => {'failures': {}},
'/client/v3/room_keys/version': (var reqI) => {'version': '5'},
},
'PUT': {
'/client/r0/user/%40test%3AfakeServer.notExisting/account_data/m.ignored_user_list':
'/client/v3/user/%40test%3AfakeServer.notExisting/account_data/m.ignored_user_list':
(var req) => {},
'/client/r0/presence/${Uri.encodeComponent('@alice:example.com')}/status':
'/client/v3/presence/${Uri.encodeComponent('@alice:example.com')}/status':
(var req) => {},
'/client/r0/pushrules/global/content/nocake/enabled': (var req) => {},
'/client/r0/pushrules/global/content/nocake/actions': (var req) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.history_visibility':
'/client/v3/pushrules/global/content/nocake/enabled': (var req) => {},
'/client/v3/pushrules/global/content/nocake/actions': (var req) => {},
'/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.history_visibility':
(var req) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.join_rules':
'/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.join_rules':
(var req) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.guest_access':
'/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.guest_access':
(var req) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.invite/1234':
'/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.invite/1234':
(var req) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.answer/1234':
'/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.answer/1234':
(var req) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.candidates/1234':
'/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.candidates/1234':
(var req) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.hangup/1234':
'/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.hangup/1234':
(var req) => {},
'/client/r0/rooms/!1234%3Aexample.com/redact/1143273582443PhrSn%3Aexample.org/1234':
'/client/v3/rooms/!1234%3Aexample.com/redact/1143273582443PhrSn%3Aexample.org/1234':
(var req) => {'event_id': '1234'},
'/client/r0/pushrules/global/room/!localpart%3Aserver.abc': (var req) =>
'/client/v3/pushrules/global/room/!localpart%3Aserver.abc': (var req) =>
{},
'/client/r0/pushrules/global/override/.m.rule.master/enabled':
'/client/v3/pushrules/global/override/.m.rule.master/enabled':
(var req) => {},
'/client/r0/pushrules/global/content/nocake?before=1&after=2':
'/client/v3/pushrules/global/content/nocake?before=1&after=2':
(var req) => {},
'/client/r0/devices/QBUAZIFURK': (var req) => {},
'/client/r0/directory/room/%23testalias%3Aexample.com': (var reqI) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.room.message/testtxid':
'/client/v3/devices/QBUAZIFURK': (var req) => {},
'/client/v3/directory/room/%23testalias%3Aexample.com': (var reqI) => {},
'/client/v3/rooms/!localpart%3Aserver.abc/send/m.room.message/testtxid':
(var reqI) => {
'event_id': '\$event${FakeMatrixApi.eventCounter++}',
},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.reaction/testtxid':
'/client/v3/rooms/!localpart%3Aserver.abc/send/m.reaction/testtxid':
(var reqI) => {
'event_id': '\$event${FakeMatrixApi.eventCounter++}',
},
'/client/r0/rooms/!localpart%3Aexample.com/typing/%40alice%3Aexample.com':
'/client/v3/rooms/!localpart%3Aexample.com/typing/%40alice%3Aexample.com':
(var req) => {},
'/client/r0/rooms/!1234%3Aexample.com/send/m.room.message/1234':
'/client/v3/rooms/!1234%3Aexample.com/send/m.room.message/1234':
(var reqI) => {
'event_id': '\$event${FakeMatrixApi.eventCounter++}',
},
'/client/r0/rooms/!1234%3Aexample.com/send/m.room.message/newresend':
'/client/v3/rooms/!1234%3Aexample.com/send/m.room.message/newresend':
(var reqI) => {
'event_id': '\$event${FakeMatrixApi.eventCounter++}',
},
'/client/r0/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/tags/m.favourite':
'/client/v3/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/tags/m.favourite':
(var req) => {},
'/client/r0/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags/testtag':
'/client/v3/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags/testtag':
(var req) => {},
'/client/r0/user/%40alice%3Aexample.com/account_data/test.account.data':
'/client/v3/user/%40alice%3Aexample.com/account_data/test.account.data':
(var req) => {},
'/client/r0/user/%40test%3AfakeServer.notExisting/account_data/best%20animal':
'/client/v3/user/%40test%3AfakeServer.notExisting/account_data/best%20animal':
(var req) => {},
'/client/r0/user/%40alice%3Aexample.com/rooms/1234/account_data/test.account.data':
'/client/v3/user/%40alice%3Aexample.com/rooms/1234/account_data/test.account.data':
(var req) => {},
'/client/r0/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/account_data/com.famedly.marked_unread':
'/client/v3/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/account_data/com.famedly.marked_unread':
(var req) => {},
'/client/r0/user/%40test%3AfakeServer.notExisting/account_data/m.direct':
'/client/v3/user/%40test%3AfakeServer.notExisting/account_data/m.direct':
(var req) => {},
'/client/r0/user/%40othertest%3AfakeServer.notExisting/account_data/m.direct':
'/client/v3/user/%40othertest%3AfakeServer.notExisting/account_data/m.direct':
(var req) => {},
'/client/r0/profile/%40alice%3Aexample.com/displayname': (var reqI) => {},
'/client/r0/profile/%40alice%3Aexample.com/avatar_url': (var reqI) => {},
'/client/r0/profile/%40test%3AfakeServer.notExisting/avatar_url':
'/client/v3/profile/%40alice%3Aexample.com/displayname': (var reqI) => {},
'/client/v3/profile/%40alice%3Aexample.com/avatar_url': (var reqI) => {},
'/client/v3/profile/%40test%3AfakeServer.notExisting/avatar_url':
(var reqI) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.encryption':
'/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.encryption':
(var reqI) => {'event_id': 'YUwRidLecu:example.com'},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.avatar':
'/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.avatar':
(var reqI) => {'event_id': 'YUwRidLecu:example.com'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.room.message/1234':
'/client/v3/rooms/!localpart%3Aserver.abc/send/m.room.message/1234':
(var reqI) => {'event_id': 'YUwRidLecu:example.com'},
'/client/r0/rooms/!localpart%3Aserver.abc/redact/1234/1234': (var reqI) =>
'/client/v3/rooms/!localpart%3Aserver.abc/redact/1234/1234': (var reqI) =>
{'event_id': 'YUwRidLecu:example.com'},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.name':
'/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.name':
(var reqI) => {
'event_id': '42',
},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.topic':
'/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.topic':
(var reqI) => {
'event_id': '42',
},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.pinned_events':
'/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.pinned_events':
(var reqI) => {
'event_id': '42',
},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.power_levels':
'/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.power_levels':
(var reqI) => {
'event_id': '42',
},
'/client/r0/directory/list/room/!localpart%3Aexample.com': (var req) =>
'/client/v3/directory/list/room/!localpart%3Aexample.com': (var req) =>
{},
'/client/unstable/room_keys/version/5': (var req) => {},
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
'/client/v3/room_keys/version/5': (var req) => {},
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
(var req) => {
'etag': 'asdf',
'count': 1,
},
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
(var req) => {
'etag': 'asdf',
'count': 1,
},
'/client/unstable/room_keys/keys?version=5': (var req) => {
'/client/v3/room_keys/keys?version=5': (var req) => {
'etag': 'asdf',
'count': 1,
},
},
'DELETE': {
'/unknown/token': (var req) => {'errcode': 'M_UNKNOWN_TOKEN'},
'/client/r0/devices/QBUAZIFURK': (var req) => {},
'/client/r0/directory/room/%23testalias%3Aexample.com': (var reqI) => {},
'/client/r0/pushrules/global/content/nocake': (var req) => {},
'/client/r0/pushrules/global/override/!localpart%3Aserver.abc':
'/client/v3/devices/QBUAZIFURK': (var req) => {},
'/client/v3/directory/room/%23testalias%3Aexample.com': (var reqI) => {},
'/client/v3/pushrules/global/content/nocake': (var req) => {},
'/client/v3/pushrules/global/override/!localpart%3Aserver.abc':
(var req) => {},
'/client/r0/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/tags/m.favourite':
'/client/v3/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/tags/m.favourite':
(var req) => {},
'/client/r0/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags/testtag':
'/client/v3/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags/testtag':
(var req) => {},
'/client/unstable/room_keys/version/5': (var req) => {},
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
'/client/v3/room_keys/version/5': (var req) => {},
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
(var req) => {
'etag': 'asdf',
'count': 1,
},
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
(var req) => {
'etag': 'asdf',
'count': 1,
},
'/client/unstable/room_keys/keys?version=5': (var req) => {
'/client/v3/room_keys/keys?version=5': (var req) => {
'etag': 'asdf',
'count': 1,
},

File diff suppressed because it is too large Load Diff

View File

@ -6,6 +6,8 @@ import '../model/sync_update.dart';
import '../model/matrix_event.dart';
import 'internal.dart';
import 'package:enhanced_enum/enhanced_enum.dart';
part 'model.g.dart';
class _NameSource {
final String source;
@ -82,8 +84,238 @@ class DiscoveryInformation {
Map<String, Map<String, dynamic>> additionalProperties;
}
@_NameSource('spec')
class PublicRoomsChunk {
PublicRoomsChunk({
this.avatarUrl,
this.canonicalAlias,
required this.guestCanJoin,
this.joinRule,
this.name,
required this.numJoinedMembers,
required this.roomId,
this.topic,
required this.worldReadable,
});
PublicRoomsChunk.fromJson(Map<String, dynamic> json)
: avatarUrl =
((v) => v != null ? Uri.parse(v) : null)(json['avatar_url']),
canonicalAlias =
((v) => v != null ? v as String : null)(json['canonical_alias']),
guestCanJoin = json['guest_can_join'] as bool,
joinRule = ((v) => v != null ? v as String : null)(json['join_rule']),
name = ((v) => v != null ? v as String : null)(json['name']),
numJoinedMembers = json['num_joined_members'] as int,
roomId = json['room_id'] as String,
topic = ((v) => v != null ? v as String : null)(json['topic']),
worldReadable = json['world_readable'] as bool;
Map<String, dynamic> toJson() {
final avatarUrl = this.avatarUrl;
final canonicalAlias = this.canonicalAlias;
final joinRule = this.joinRule;
final name = this.name;
final topic = this.topic;
return {
if (avatarUrl != null) 'avatar_url': avatarUrl.toString(),
if (canonicalAlias != null) 'canonical_alias': canonicalAlias,
'guest_can_join': guestCanJoin,
if (joinRule != null) 'join_rule': joinRule,
if (name != null) 'name': name,
'num_joined_members': numJoinedMembers,
'room_id': roomId,
if (topic != null) 'topic': topic,
'world_readable': worldReadable,
};
}
/// The URL for the room's avatar, if one is set.
Uri? avatarUrl;
/// The canonical alias of the room, if any.
String? canonicalAlias;
/// Whether guest users may join the room and participate in it.
/// If they can, they will be subject to ordinary power level
/// rules like any other user.
bool guestCanJoin;
/// The room's join rule. When not present, the room is assumed to
/// be `public`.
String? joinRule;
/// The name of the room, if any.
String? name;
/// The number of members joined to the room.
int numJoinedMembers;
/// The ID of the room.
String roomId;
/// The topic of the room, if any.
String? topic;
/// Whether the room may be viewed by guest users without joining.
bool worldReadable;
}
@_NameSource('rule override generated')
enum ThirdPartyIdentifierMedium { email, msisdn }
class SpaceRoomsChunkBase {
SpaceRoomsChunkBase({
required this.childrenState,
required this.roomType,
});
SpaceRoomsChunkBase.fromJson(Map<String, dynamic> json)
: childrenState = (json['children_state'] as List)
.map((v) => MatrixEvent.fromJson(v))
.toList(),
roomType = json['room_type'] as String;
Map<String, dynamic> toJson() => {
'children_state': childrenState.map((v) => v.toJson()).toList(),
'room_type': roomType,
};
/// The [`m.space.child`](#mspacechild) events of the space-room, represented
/// as [Stripped State Events](#stripped-state) with an added `origin_server_ts` key.
///
/// If the room is not a space-room, this should be empty.
List<MatrixEvent> childrenState;
/// The `type` of room (from [`m.room.create`](https://spec.matrix.org/unstable/client-server-api/#mroomcreate)), if any.
String roomType;
}
@_NameSource('rule override generated')
class SpaceRoomsChunk implements PublicRoomsChunk, SpaceRoomsChunkBase {
SpaceRoomsChunk({
this.avatarUrl,
this.canonicalAlias,
required this.guestCanJoin,
this.joinRule,
this.name,
required this.numJoinedMembers,
required this.roomId,
this.topic,
required this.worldReadable,
required this.childrenState,
required this.roomType,
});
SpaceRoomsChunk.fromJson(Map<String, dynamic> json)
: avatarUrl =
((v) => v != null ? Uri.parse(v) : null)(json['avatar_url']),
canonicalAlias =
((v) => v != null ? v as String : null)(json['canonical_alias']),
guestCanJoin = json['guest_can_join'] as bool,
joinRule = ((v) => v != null ? v as String : null)(json['join_rule']),
name = ((v) => v != null ? v as String : null)(json['name']),
numJoinedMembers = json['num_joined_members'] as int,
roomId = json['room_id'] as String,
topic = ((v) => v != null ? v as String : null)(json['topic']),
worldReadable = json['world_readable'] as bool,
childrenState = (json['children_state'] as List)
.map((v) => MatrixEvent.fromJson(v))
.toList(),
roomType = json['room_type'] as String;
Map<String, dynamic> toJson() {
final avatarUrl = this.avatarUrl;
final canonicalAlias = this.canonicalAlias;
final joinRule = this.joinRule;
final name = this.name;
final topic = this.topic;
return {
if (avatarUrl != null) 'avatar_url': avatarUrl.toString(),
if (canonicalAlias != null) 'canonical_alias': canonicalAlias,
'guest_can_join': guestCanJoin,
if (joinRule != null) 'join_rule': joinRule,
if (name != null) 'name': name,
'num_joined_members': numJoinedMembers,
'room_id': roomId,
if (topic != null) 'topic': topic,
'world_readable': worldReadable,
'children_state': childrenState.map((v) => v.toJson()).toList(),
'room_type': roomType,
};
}
/// The URL for the room's avatar, if one is set.
Uri? avatarUrl;
/// The canonical alias of the room, if any.
String? canonicalAlias;
/// Whether guest users may join the room and participate in it.
/// If they can, they will be subject to ordinary power level
/// rules like any other user.
bool guestCanJoin;
/// The room's join rule. When not present, the room is assumed to
/// be `public`.
String? joinRule;
/// The name of the room, if any.
String? name;
/// The number of members joined to the room.
int numJoinedMembers;
/// The ID of the room.
String roomId;
/// The topic of the room, if any.
String? topic;
/// Whether the room may be viewed by guest users without joining.
bool worldReadable;
/// The [`m.space.child`](#mspacechild) events of the space-room, represented
/// as [Stripped State Events](#stripped-state) with an added `origin_server_ts` key.
///
/// If the room is not a space-room, this should be empty.
List<MatrixEvent> childrenState;
/// The `type` of room (from [`m.room.create`](https://spec.matrix.org/unstable/client-server-api/#mroomcreate)), if any.
String roomType;
}
@_NameSource('generated')
class GetSpaceHierarchyResponse {
GetSpaceHierarchyResponse({
this.nextBatch,
required this.rooms,
});
GetSpaceHierarchyResponse.fromJson(Map<String, dynamic> json)
: nextBatch = ((v) => v != null ? v as String : null)(json['next_batch']),
rooms = (json['rooms'] as List)
.map((v) => SpaceRoomsChunk.fromJson(v))
.toList();
Map<String, dynamic> toJson() {
final nextBatch = this.nextBatch;
return {
if (nextBatch != null) 'next_batch': nextBatch,
'rooms': rooms.map((v) => v.toJson()).toList(),
};
}
/// A token to supply to `from` to keep paginating the responses. Not present when there are
/// no further results.
String? nextBatch;
/// The rooms for the current page, with the current filters.
List<SpaceRoomsChunk> rooms;
}
@_NameSource('rule override generated')
@EnhancedEnum()
enum ThirdPartyIdentifierMedium {
@EnhancedEnumValue(name: 'email')
email,
@EnhancedEnumValue(name: 'msisdn')
msisdn
}
@_NameSource('spec')
class ThirdPartyIdentifier {
@ -97,18 +329,12 @@ class ThirdPartyIdentifier {
ThirdPartyIdentifier.fromJson(Map<String, dynamic> json)
: addedAt = json['added_at'] as int,
address = json['address'] as String,
medium = {
'email': ThirdPartyIdentifierMedium.email,
'msisdn': ThirdPartyIdentifierMedium.msisdn
}[json['medium']]!,
medium = ThirdPartyIdentifierMedium.values.fromString(json['medium'])!,
validatedAt = json['validated_at'] as int;
Map<String, dynamic> toJson() => {
'added_at': addedAt,
'address': address,
'medium': {
ThirdPartyIdentifierMedium.email: 'email',
ThirdPartyIdentifierMedium.msisdn: 'msisdn'
}[medium]!,
'medium': medium.name,
'validated_at': validatedAt,
};
@ -163,7 +389,13 @@ class ThreePidCredentials {
}
@_NameSource('generated')
enum IdServerUnbindResult { noSupport, success }
@EnhancedEnum()
enum IdServerUnbindResult {
@EnhancedEnumValue(name: 'no-support')
noSupport,
@EnhancedEnumValue(name: 'success')
success
}
@_NameSource('spec')
class RequestTokenResponse {
@ -206,16 +438,20 @@ class RequestTokenResponse {
class TokenOwnerInfo {
TokenOwnerInfo({
this.deviceId,
this.isGuest,
required this.userId,
});
TokenOwnerInfo.fromJson(Map<String, dynamic> json)
: deviceId = ((v) => v != null ? v as String : null)(json['device_id']),
isGuest = ((v) => v != null ? v as bool : null)(json['is_guest']),
userId = json['user_id'] as String;
Map<String, dynamic> toJson() {
final deviceId = this.deviceId;
final isGuest = this.isGuest;
return {
if (deviceId != null) 'device_id': deviceId,
if (isGuest != null) 'is_guest': isGuest,
'user_id': userId,
};
}
@ -226,6 +462,11 @@ class TokenOwnerInfo {
/// Otherwise this is required.
String? deviceId;
/// When `true`, the user is a [Guest User](#guest-access). When
/// not present or `false`, the user is presumed to be a non-guest
/// user.
bool? isGuest;
/// The user ID that owns the access token.
String userId;
}
@ -355,7 +596,13 @@ class ChangePasswordCapability {
/// The stability of the room version.
@_NameSource('rule override generated')
enum RoomVersionAvailable { stable, unstable }
@EnhancedEnum()
enum RoomVersionAvailable {
@EnhancedEnumValue(name: 'stable')
stable,
@EnhancedEnumValue(name: 'unstable')
unstable
}
@_NameSource('spec')
class RoomVersionsCapability {
@ -365,21 +612,11 @@ class RoomVersionsCapability {
});
RoomVersionsCapability.fromJson(Map<String, dynamic> json)
: available = (json['available'] as Map<String, dynamic>).map((k, v) =>
MapEntry(
k,
{
'stable': RoomVersionAvailable.stable,
'unstable': RoomVersionAvailable.unstable
}[v]!)),
: available = (json['available'] as Map<String, dynamic>).map(
(k, v) => MapEntry(k, RoomVersionAvailable.values.fromString(v)!)),
default$ = json['default'] as String;
Map<String, dynamic> toJson() => {
'available': available.map((k, v) => MapEntry(
k,
{
RoomVersionAvailable.stable: 'stable',
RoomVersionAvailable.unstable: 'unstable'
}[v]!)),
'available': available.map((k, v) => MapEntry(k, v.name)),
'default': default$,
};
@ -497,10 +734,24 @@ class Invite3pid {
}
@_NameSource('rule override generated')
enum CreateRoomPreset { privateChat, publicChat, trustedPrivateChat }
@EnhancedEnum()
enum CreateRoomPreset {
@EnhancedEnumValue(name: 'private_chat')
privateChat,
@EnhancedEnumValue(name: 'public_chat')
publicChat,
@EnhancedEnumValue(name: 'trusted_private_chat')
trustedPrivateChat
}
@_NameSource('generated')
enum Visibility { private, public }
@EnhancedEnum()
enum Visibility {
@EnhancedEnumValue(name: 'private')
private,
@EnhancedEnumValue(name: 'public')
public
}
/// A client device
@_NameSource('spec')
@ -576,15 +827,52 @@ class GetRoomIdByAliasResponse {
List<String>? servers;
}
@_NameSource('rule override generated')
class EventsSyncUpdate {
EventsSyncUpdate({
@_NameSource('generated')
class GetEventsResponse {
GetEventsResponse({
this.chunk,
this.end,
this.start,
});
EventsSyncUpdate.fromJson(Map<String, dynamic> json)
GetEventsResponse.fromJson(Map<String, dynamic> json)
: chunk = ((v) => v != null
? (v as List).map((v) => MatrixEvent.fromJson(v)).toList()
: null)(json['chunk']),
end = ((v) => v != null ? v as String : null)(json['end']),
start = ((v) => v != null ? v as String : null)(json['start']);
Map<String, dynamic> toJson() {
final chunk = this.chunk;
final end = this.end;
final start = this.start;
return {
if (chunk != null) 'chunk': chunk.map((v) => v.toJson()).toList(),
if (end != null) 'end': end,
if (start != null) 'start': start,
};
}
/// An array of events.
List<MatrixEvent>? chunk;
/// A token which correlates to the end of `chunk`. This
/// token should be used in the next request to `/events`.
String? end;
/// A token which correlates to the start of `chunk`. This
/// is usually the same token supplied to `from=`.
String? start;
}
@_NameSource('generated')
class PeekEventsResponse {
PeekEventsResponse({
this.chunk,
this.end,
this.start,
});
PeekEventsResponse.fromJson(Map<String, dynamic> json)
: chunk = ((v) => v != null
? (v as List).map((v) => MatrixEvent.fromJson(v)).toList()
: null)(json['chunk']),
@ -727,6 +1015,9 @@ class ClaimKeysResponse {
///
/// See the [key algorithms](https://spec.matrix.org/unstable/client-server-api/#key-algorithms) section for information
/// on the Key Object format.
///
/// If necessary, the claimed key might be a fallback key. Fallback
/// keys are re-used by the server until replaced by the device.
Map<String, Map<String, dynamic>> oneTimeKeys;
}
@ -844,7 +1135,13 @@ class LoginFlow {
}
@_NameSource('rule override generated')
enum LoginType { mLoginPassword, mLoginToken }
@EnhancedEnum()
enum LoginType {
@EnhancedEnumValue(name: 'm.login.password')
mLoginPassword,
@EnhancedEnumValue(name: 'm.login.token')
mLoginToken
}
@_NameSource('generated')
class LoginResponse {
@ -990,7 +1287,15 @@ class GetNotificationsResponse {
}
@_NameSource('rule override generated')
enum PresenceType { offline, online, unavailable }
@EnhancedEnum()
enum PresenceType {
@EnhancedEnumValue(name: 'offline')
offline,
@EnhancedEnumValue(name: 'online')
online,
@EnhancedEnumValue(name: 'unavailable')
unavailable
}
@_NameSource('generated')
class GetPresenceResponse {
@ -1006,11 +1311,7 @@ class GetPresenceResponse {
((v) => v != null ? v as bool : null)(json['currently_active']),
lastActiveAgo =
((v) => v != null ? v as int : null)(json['last_active_ago']),
presence = {
'online': PresenceType.online,
'offline': PresenceType.offline,
'unavailable': PresenceType.unavailable
}[json['presence']]!,
presence = PresenceType.values.fromString(json['presence'])!,
statusMsg = ((v) => v != null ? v as String : null)(json['status_msg']);
Map<String, dynamic> toJson() {
final currentlyActive = this.currentlyActive;
@ -1019,11 +1320,7 @@ class GetPresenceResponse {
return {
if (currentlyActive != null) 'currently_active': currentlyActive,
if (lastActiveAgo != null) 'last_active_ago': lastActiveAgo,
'presence': {
PresenceType.online: 'online',
PresenceType.offline: 'offline',
PresenceType.unavailable: 'unavailable'
}[presence]!,
'presence': presence.name,
if (statusMsg != null) 'status_msg': statusMsg,
};
}
@ -1070,93 +1367,6 @@ class ProfileInformation {
String? displayname;
}
@_NameSource('spec')
class PublicRoomsChunk {
PublicRoomsChunk({
this.aliases,
this.avatarUrl,
this.canonicalAlias,
required this.guestCanJoin,
this.joinRule,
this.name,
required this.numJoinedMembers,
required this.roomId,
this.topic,
required this.worldReadable,
});
PublicRoomsChunk.fromJson(Map<String, dynamic> json)
: aliases = ((v) => v != null
? (v as List).map((v) => v as String).toList()
: null)(json['aliases']),
avatarUrl =
((v) => v != null ? Uri.parse(v) : null)(json['avatar_url']),
canonicalAlias =
((v) => v != null ? v as String : null)(json['canonical_alias']),
guestCanJoin = json['guest_can_join'] as bool,
joinRule = ((v) => v != null ? v as String : null)(json['join_rule']),
name = ((v) => v != null ? v as String : null)(json['name']),
numJoinedMembers = json['num_joined_members'] as int,
roomId = json['room_id'] as String,
topic = ((v) => v != null ? v as String : null)(json['topic']),
worldReadable = json['world_readable'] as bool;
Map<String, dynamic> toJson() {
final aliases = this.aliases;
final avatarUrl = this.avatarUrl;
final canonicalAlias = this.canonicalAlias;
final joinRule = this.joinRule;
final name = this.name;
final topic = this.topic;
return {
if (aliases != null) 'aliases': aliases.map((v) => v).toList(),
if (avatarUrl != null) 'avatar_url': avatarUrl.toString(),
if (canonicalAlias != null) 'canonical_alias': canonicalAlias,
'guest_can_join': guestCanJoin,
if (joinRule != null) 'join_rule': joinRule,
if (name != null) 'name': name,
'num_joined_members': numJoinedMembers,
'room_id': roomId,
if (topic != null) 'topic': topic,
'world_readable': worldReadable,
};
}
/// Aliases of the room. May be empty.
List<String>? aliases;
/// The URL for the room's avatar, if one is set.
Uri? avatarUrl;
/// The canonical alias of the room, if any.
String? canonicalAlias;
/// Whether guest users may join the room and participate in it.
/// If they can, they will be subject to ordinary power level
/// rules like any other user.
bool guestCanJoin;
/// The room's join rule. When not present, the room is assumed to
/// be `public`. Note that rooms with `invite` join rules are not
/// expected here, but rooms with `knock` rules are given their
/// near-public nature.
String? joinRule;
/// The name of the room, if any.
String? name;
/// The number of members joined to the room.
int numJoinedMembers;
/// The ID of the room.
String roomId;
/// The topic of the room, if any.
String? topic;
/// Whether the room may be viewed by guest users without joining.
bool worldReadable;
}
/// A list of the rooms on the server.
@_NameSource('generated')
class GetPublicRoomsResponse {
@ -1453,9 +1663,7 @@ class PushCondition {
String kind;
/// Required for `event_match` conditions. The glob-style pattern to
/// match against. Patterns with no special glob characters should be
/// treated as having asterisks prepended and appended when testing the
/// condition.
/// match against.
String? pattern;
}
@ -1570,10 +1778,28 @@ class PushRuleSet {
}
@_NameSource('rule override generated')
enum PushRuleKind { content, override, room, sender, underride }
@EnhancedEnum()
enum PushRuleKind {
@EnhancedEnumValue(name: 'content')
content,
@EnhancedEnumValue(name: 'override')
override,
@EnhancedEnumValue(name: 'room')
room,
@EnhancedEnumValue(name: 'sender')
sender,
@EnhancedEnumValue(name: 'underride')
underride
}
@_NameSource('rule override generated')
enum AccountKind { guest, user }
@EnhancedEnum()
enum AccountKind {
@EnhancedEnumValue(name: 'guest')
guest,
@EnhancedEnumValue(name: 'user')
user
}
@_NameSource('generated')
class RegisterResponse {
@ -1725,7 +1951,11 @@ class RoomKeys {
}
@_NameSource('rule override generated')
enum BackupAlgorithm { mMegolmBackupV1Curve25519AesSha2 }
@EnhancedEnum()
enum BackupAlgorithm {
@EnhancedEnumValue(name: 'm.megolm_backup.v1.curve25519-aes-sha2')
mMegolmBackupV1Curve25519AesSha2
}
@_NameSource('generated')
class GetRoomKeysVersionCurrentResponse {
@ -1738,19 +1968,13 @@ class GetRoomKeysVersionCurrentResponse {
});
GetRoomKeysVersionCurrentResponse.fromJson(Map<String, dynamic> json)
: algorithm = {
'm.megolm_backup.v1.curve25519-aes-sha2':
BackupAlgorithm.mMegolmBackupV1Curve25519AesSha2
}[json['algorithm']]!,
: algorithm = BackupAlgorithm.values.fromString(json['algorithm'])!,
authData = json['auth_data'] as Map<String, dynamic>,
count = json['count'] as int,
etag = json['etag'] as String,
version = json['version'] as String;
Map<String, dynamic> toJson() => {
'algorithm': {
BackupAlgorithm.mMegolmBackupV1Curve25519AesSha2:
'm.megolm_backup.v1.curve25519-aes-sha2'
}[algorithm]!,
'algorithm': algorithm.name,
'auth_data': authData,
'count': count,
'etag': etag,
@ -1789,19 +2013,13 @@ class GetRoomKeysVersionResponse {
});
GetRoomKeysVersionResponse.fromJson(Map<String, dynamic> json)
: algorithm = {
'm.megolm_backup.v1.curve25519-aes-sha2':
BackupAlgorithm.mMegolmBackupV1Curve25519AesSha2
}[json['algorithm']]!,
: algorithm = BackupAlgorithm.values.fromString(json['algorithm'])!,
authData = json['auth_data'] as Map<String, dynamic>,
count = json['count'] as int,
etag = json['etag'] as String,
version = json['version'] as String;
Map<String, dynamic> toJson() => {
'algorithm': {
BackupAlgorithm.mMegolmBackupV1Curve25519AesSha2:
'm.megolm_backup.v1.curve25519-aes-sha2'
}[algorithm]!,
'algorithm': algorithm.name,
'auth_data': authData,
'count': count,
'etag': etag,
@ -1924,56 +2142,81 @@ class RoomMember {
}
@_NameSource('(generated, rule override generated)')
enum Membership { ban, invite, join, knock, leave }
@EnhancedEnum()
enum Membership {
@EnhancedEnumValue(name: 'ban')
ban,
@EnhancedEnumValue(name: 'invite')
invite,
@EnhancedEnumValue(name: 'join')
join,
@EnhancedEnumValue(name: 'knock')
knock,
@EnhancedEnumValue(name: 'leave')
leave
}
@_NameSource('rule override generated')
enum Direction { b, f }
@EnhancedEnum()
enum Direction {
@EnhancedEnumValue(name: 'b')
b,
@EnhancedEnumValue(name: 'f')
f
}
/// A list of messages with a new token to request more.
@_NameSource('generated')
class GetRoomEventsResponse {
GetRoomEventsResponse({
this.chunk,
required this.chunk,
this.end,
this.start,
required this.start,
this.state,
});
GetRoomEventsResponse.fromJson(Map<String, dynamic> json)
: chunk = ((v) => v != null
? (v as List).map((v) => MatrixEvent.fromJson(v)).toList()
: null)(json['chunk']),
: chunk = (json['chunk'] as List)
.map((v) => MatrixEvent.fromJson(v))
.toList(),
end = ((v) => v != null ? v as String : null)(json['end']),
start = ((v) => v != null ? v as String : null)(json['start']),
start = json['start'] as String,
state = ((v) => v != null
? (v as List).map((v) => MatrixEvent.fromJson(v)).toList()
: null)(json['state']);
Map<String, dynamic> toJson() {
final chunk = this.chunk;
final end = this.end;
final start = this.start;
final state = this.state;
return {
if (chunk != null) 'chunk': chunk.map((v) => v.toJson()).toList(),
'chunk': chunk.map((v) => v.toJson()).toList(),
if (end != null) 'end': end,
if (start != null) 'start': start,
'start': start,
if (state != null) 'state': state.map((v) => v.toJson()).toList(),
};
}
/// A list of room events. The order depends on the `dir` parameter.
/// For `dir=b` events will be in reverse-chronological order,
/// for `dir=f` in chronological order, so that events start
/// at the `from` point.
List<MatrixEvent>? chunk;
/// for `dir=f` in chronological order. (The exact definition of `chronological`
/// is dependent on the server implementation.)
///
/// Note that an empty `chunk` does not *necessarily* imply that no more events
/// are available. Clients should continue to paginate until no `end` property
/// is returned.
List<MatrixEvent> chunk;
/// The token the pagination ends at. If `dir=b` this token should
/// be used again to request even earlier events.
/// A token corresponding to the end of `chunk`. This token can be passed
/// back to this endpoint to request further events.
///
/// If no further events are available (either because we have
/// reached the start of the timeline, or because the user does
/// not have permission to see any more events), this property
/// is omitted from the response.
String? end;
/// The token the pagination starts from. If `dir=b` this will be
/// the token supplied in `from`.
String? start;
/// A token corresponding to the start of `chunk`. This will be the same as
/// the value given in `from`.
String start;
/// A list of state events relevant to showing the `chunk`. For example, if
/// `lazy_load_members` is enabled in the filter then this may contain
@ -1987,7 +2230,11 @@ class GetRoomEventsResponse {
}
@_NameSource('generated')
enum ReceiptType { mRead }
@EnhancedEnum()
enum ReceiptType {
@EnhancedEnumValue(name: 'm.read')
mRead
}
@_NameSource('spec')
class IncludeEventContext {
@ -2250,7 +2497,13 @@ class SearchFilter implements EventFilter, RoomEventFilter {
}
@_NameSource('rule override generated')
enum GroupKey { roomId, sender }
@EnhancedEnum()
enum GroupKey {
@EnhancedEnumValue(name: 'room_id')
roomId,
@EnhancedEnumValue(name: 'sender')
sender
}
/// Configuration for group.
@_NameSource('spec')
@ -2260,14 +2513,12 @@ class Group {
});
Group.fromJson(Map<String, dynamic> json)
: key = ((v) => v != null
? {'room_id': GroupKey.roomId, 'sender': GroupKey.sender}[v]!
: null)(json['key']);
: key = ((v) =>
v != null ? GroupKey.values.fromString(v)! : null)(json['key']);
Map<String, dynamic> toJson() {
final key = this.key;
return {
if (key != null)
'key': {GroupKey.roomId: 'room_id', GroupKey.sender: 'sender'}[key]!,
if (key != null) 'key': key.name,
};
}
@ -2297,10 +2548,24 @@ class Groupings {
}
@_NameSource('rule override generated')
enum KeyKind { contentBody, contentName, contentTopic }
@EnhancedEnum()
enum KeyKind {
@EnhancedEnumValue(name: 'content.body')
contentBody,
@EnhancedEnumValue(name: 'content.name')
contentName,
@EnhancedEnumValue(name: 'content.topic')
contentTopic
}
@_NameSource('rule override generated')
enum SearchOrder { rank, recent }
@EnhancedEnum()
enum SearchOrder {
@EnhancedEnumValue(name: 'rank')
rank,
@EnhancedEnumValue(name: 'recent')
recent
}
@_NameSource('spec')
class RoomEventsCriteria {
@ -2325,17 +2590,10 @@ class RoomEventsCriteria {
includeState =
((v) => v != null ? v as bool : null)(json['include_state']),
keys = ((v) => v != null
? (v as List)
.map((v) => {
'content.body': KeyKind.contentBody,
'content.name': KeyKind.contentName,
'content.topic': KeyKind.contentTopic
}[v]!)
.toList()
? (v as List).map((v) => KeyKind.values.fromString(v)!).toList()
: null)(json['keys']),
orderBy = ((v) => v != null
? {'recent': SearchOrder.recent, 'rank': SearchOrder.rank}[v]!
: null)(json['order_by']),
orderBy = ((v) => v != null ? SearchOrder.values.fromString(v)! : null)(
json['order_by']),
searchTerm = json['search_term'] as String;
Map<String, dynamic> toJson() {
final eventContext = this.eventContext;
@ -2349,19 +2607,8 @@ class RoomEventsCriteria {
if (filter != null) 'filter': filter.toJson(),
if (groupings != null) 'groupings': groupings.toJson(),
if (includeState != null) 'include_state': includeState,
if (keys != null)
'keys': keys
.map((v) => {
KeyKind.contentBody: 'content.body',
KeyKind.contentName: 'content.name',
KeyKind.contentTopic: 'content.topic'
}[v]!)
.toList(),
if (orderBy != null)
'order_by': {
SearchOrder.recent: 'recent',
SearchOrder.rank: 'rank'
}[orderBy]!,
if (keys != null) 'keys': keys.map((v) => v.name).toList(),
if (orderBy != null) 'order_by': orderBy.name,
'search_term': searchTerm,
};
}
@ -2872,7 +3119,13 @@ class ThirdPartyUser {
}
@_NameSource('generated')
enum EventFormat { client, federation }
@EnhancedEnum()
enum EventFormat {
@EnhancedEnumValue(name: 'client')
client,
@EnhancedEnumValue(name: 'federation')
federation
}
@_NameSource('rule override generated')
class StateFilter implements EventFilter, RoomEventFilter {
@ -3065,10 +3318,7 @@ class Filter {
? (v as List).map((v) => v as String).toList()
: null)(json['event_fields']),
eventFormat = ((v) => v != null
? {
'client': EventFormat.client,
'federation': EventFormat.federation
}[v]!
? EventFormat.values.fromString(v)!
: null)(json['event_format']),
presence = ((v) =>
v != null ? EventFilter.fromJson(v) : null)(json['presence']),
@ -3083,11 +3333,7 @@ class Filter {
if (accountData != null) 'account_data': accountData.toJson(),
if (eventFields != null)
'event_fields': eventFields.map((v) => v).toList(),
if (eventFormat != null)
'event_format': {
EventFormat.client: 'client',
EventFormat.federation: 'federation'
}[eventFormat]!,
if (eventFormat != null) 'event_format': eventFormat.name,
if (presence != null) 'presence': presence.toJson(),
if (room != null) 'room': room.toJson(),
};
@ -3346,4 +3592,10 @@ class GetUrlPreviewResponse {
}
@_NameSource('generated')
enum Method { crop, scale }
@EnhancedEnum()
enum Method {
@EnhancedEnumValue(name: 'crop')
crop,
@EnhancedEnumValue(name: 'scale')
scale
}

View File

@ -0,0 +1,802 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'model.dart';
// **************************************************************************
// EnhancedEnumGenerator
// **************************************************************************
extension ThirdPartyIdentifierMediumFromStringExtension
on Iterable<ThirdPartyIdentifierMedium> {
ThirdPartyIdentifierMedium? fromString(String val) {
final override = {
'email': ThirdPartyIdentifierMedium.email,
'msisdn': ThirdPartyIdentifierMedium.msisdn,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension ThirdPartyIdentifierMediumEnhancedEnum on ThirdPartyIdentifierMedium {
@override
// ignore: override_on_non_overriding_member
String get name => {
ThirdPartyIdentifierMedium.email: 'email',
ThirdPartyIdentifierMedium.msisdn: 'msisdn',
}[this]!;
bool get isEmail => this == ThirdPartyIdentifierMedium.email;
bool get isMsisdn => this == ThirdPartyIdentifierMedium.msisdn;
T when<T>({
required T Function() email,
required T Function() msisdn,
}) =>
{
ThirdPartyIdentifierMedium.email: email,
ThirdPartyIdentifierMedium.msisdn: msisdn,
}[this]!();
T maybeWhen<T>({
T? Function()? email,
T? Function()? msisdn,
required T Function() orElse,
}) =>
{
ThirdPartyIdentifierMedium.email: email,
ThirdPartyIdentifierMedium.msisdn: msisdn,
}[this]
?.call() ??
orElse();
}
extension IdServerUnbindResultFromStringExtension
on Iterable<IdServerUnbindResult> {
IdServerUnbindResult? fromString(String val) {
final override = {
'no-support': IdServerUnbindResult.noSupport,
'success': IdServerUnbindResult.success,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension IdServerUnbindResultEnhancedEnum on IdServerUnbindResult {
@override
// ignore: override_on_non_overriding_member
String get name => {
IdServerUnbindResult.noSupport: 'no-support',
IdServerUnbindResult.success: 'success',
}[this]!;
bool get isNoSupport => this == IdServerUnbindResult.noSupport;
bool get isSuccess => this == IdServerUnbindResult.success;
T when<T>({
required T Function() noSupport,
required T Function() success,
}) =>
{
IdServerUnbindResult.noSupport: noSupport,
IdServerUnbindResult.success: success,
}[this]!();
T maybeWhen<T>({
T? Function()? noSupport,
T? Function()? success,
required T Function() orElse,
}) =>
{
IdServerUnbindResult.noSupport: noSupport,
IdServerUnbindResult.success: success,
}[this]
?.call() ??
orElse();
}
extension RoomVersionAvailableFromStringExtension
on Iterable<RoomVersionAvailable> {
RoomVersionAvailable? fromString(String val) {
final override = {
'stable': RoomVersionAvailable.stable,
'unstable': RoomVersionAvailable.unstable,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension RoomVersionAvailableEnhancedEnum on RoomVersionAvailable {
@override
// ignore: override_on_non_overriding_member
String get name => {
RoomVersionAvailable.stable: 'stable',
RoomVersionAvailable.unstable: 'unstable',
}[this]!;
bool get isStable => this == RoomVersionAvailable.stable;
bool get isUnstable => this == RoomVersionAvailable.unstable;
T when<T>({
required T Function() stable,
required T Function() unstable,
}) =>
{
RoomVersionAvailable.stable: stable,
RoomVersionAvailable.unstable: unstable,
}[this]!();
T maybeWhen<T>({
T? Function()? stable,
T? Function()? unstable,
required T Function() orElse,
}) =>
{
RoomVersionAvailable.stable: stable,
RoomVersionAvailable.unstable: unstable,
}[this]
?.call() ??
orElse();
}
extension CreateRoomPresetFromStringExtension on Iterable<CreateRoomPreset> {
CreateRoomPreset? fromString(String val) {
final override = {
'private_chat': CreateRoomPreset.privateChat,
'public_chat': CreateRoomPreset.publicChat,
'trusted_private_chat': CreateRoomPreset.trustedPrivateChat,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension CreateRoomPresetEnhancedEnum on CreateRoomPreset {
@override
// ignore: override_on_non_overriding_member
String get name => {
CreateRoomPreset.privateChat: 'private_chat',
CreateRoomPreset.publicChat: 'public_chat',
CreateRoomPreset.trustedPrivateChat: 'trusted_private_chat',
}[this]!;
bool get isPrivateChat => this == CreateRoomPreset.privateChat;
bool get isPublicChat => this == CreateRoomPreset.publicChat;
bool get isTrustedPrivateChat => this == CreateRoomPreset.trustedPrivateChat;
T when<T>({
required T Function() privateChat,
required T Function() publicChat,
required T Function() trustedPrivateChat,
}) =>
{
CreateRoomPreset.privateChat: privateChat,
CreateRoomPreset.publicChat: publicChat,
CreateRoomPreset.trustedPrivateChat: trustedPrivateChat,
}[this]!();
T maybeWhen<T>({
T? Function()? privateChat,
T? Function()? publicChat,
T? Function()? trustedPrivateChat,
required T Function() orElse,
}) =>
{
CreateRoomPreset.privateChat: privateChat,
CreateRoomPreset.publicChat: publicChat,
CreateRoomPreset.trustedPrivateChat: trustedPrivateChat,
}[this]
?.call() ??
orElse();
}
extension VisibilityFromStringExtension on Iterable<Visibility> {
Visibility? fromString(String val) {
final override = {
'private': Visibility.private,
'public': Visibility.public,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension VisibilityEnhancedEnum on Visibility {
@override
// ignore: override_on_non_overriding_member
String get name => {
Visibility.private: 'private',
Visibility.public: 'public',
}[this]!;
bool get isPrivate => this == Visibility.private;
bool get isPublic => this == Visibility.public;
T when<T>({
required T Function() private,
required T Function() public,
}) =>
{
Visibility.private: private,
Visibility.public: public,
}[this]!();
T maybeWhen<T>({
T? Function()? private,
T? Function()? public,
required T Function() orElse,
}) =>
{
Visibility.private: private,
Visibility.public: public,
}[this]
?.call() ??
orElse();
}
extension LoginTypeFromStringExtension on Iterable<LoginType> {
LoginType? fromString(String val) {
final override = {
'm.login.password': LoginType.mLoginPassword,
'm.login.token': LoginType.mLoginToken,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension LoginTypeEnhancedEnum on LoginType {
@override
// ignore: override_on_non_overriding_member
String get name => {
LoginType.mLoginPassword: 'm.login.password',
LoginType.mLoginToken: 'm.login.token',
}[this]!;
bool get isMLoginPassword => this == LoginType.mLoginPassword;
bool get isMLoginToken => this == LoginType.mLoginToken;
T when<T>({
required T Function() mLoginPassword,
required T Function() mLoginToken,
}) =>
{
LoginType.mLoginPassword: mLoginPassword,
LoginType.mLoginToken: mLoginToken,
}[this]!();
T maybeWhen<T>({
T? Function()? mLoginPassword,
T? Function()? mLoginToken,
required T Function() orElse,
}) =>
{
LoginType.mLoginPassword: mLoginPassword,
LoginType.mLoginToken: mLoginToken,
}[this]
?.call() ??
orElse();
}
extension PresenceTypeFromStringExtension on Iterable<PresenceType> {
PresenceType? fromString(String val) {
final override = {
'offline': PresenceType.offline,
'online': PresenceType.online,
'unavailable': PresenceType.unavailable,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension PresenceTypeEnhancedEnum on PresenceType {
@override
// ignore: override_on_non_overriding_member
String get name => {
PresenceType.offline: 'offline',
PresenceType.online: 'online',
PresenceType.unavailable: 'unavailable',
}[this]!;
bool get isOffline => this == PresenceType.offline;
bool get isOnline => this == PresenceType.online;
bool get isUnavailable => this == PresenceType.unavailable;
T when<T>({
required T Function() offline,
required T Function() online,
required T Function() unavailable,
}) =>
{
PresenceType.offline: offline,
PresenceType.online: online,
PresenceType.unavailable: unavailable,
}[this]!();
T maybeWhen<T>({
T? Function()? offline,
T? Function()? online,
T? Function()? unavailable,
required T Function() orElse,
}) =>
{
PresenceType.offline: offline,
PresenceType.online: online,
PresenceType.unavailable: unavailable,
}[this]
?.call() ??
orElse();
}
extension PushRuleKindFromStringExtension on Iterable<PushRuleKind> {
PushRuleKind? fromString(String val) {
final override = {
'content': PushRuleKind.content,
'override': PushRuleKind.override,
'room': PushRuleKind.room,
'sender': PushRuleKind.sender,
'underride': PushRuleKind.underride,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension PushRuleKindEnhancedEnum on PushRuleKind {
@override
// ignore: override_on_non_overriding_member
String get name => {
PushRuleKind.content: 'content',
PushRuleKind.override: 'override',
PushRuleKind.room: 'room',
PushRuleKind.sender: 'sender',
PushRuleKind.underride: 'underride',
}[this]!;
bool get isContent => this == PushRuleKind.content;
bool get isOverride => this == PushRuleKind.override;
bool get isRoom => this == PushRuleKind.room;
bool get isSender => this == PushRuleKind.sender;
bool get isUnderride => this == PushRuleKind.underride;
T when<T>({
required T Function() content,
required T Function() override,
required T Function() room,
required T Function() sender,
required T Function() underride,
}) =>
{
PushRuleKind.content: content,
PushRuleKind.override: override,
PushRuleKind.room: room,
PushRuleKind.sender: sender,
PushRuleKind.underride: underride,
}[this]!();
T maybeWhen<T>({
T? Function()? content,
T? Function()? override,
T? Function()? room,
T? Function()? sender,
T? Function()? underride,
required T Function() orElse,
}) =>
{
PushRuleKind.content: content,
PushRuleKind.override: override,
PushRuleKind.room: room,
PushRuleKind.sender: sender,
PushRuleKind.underride: underride,
}[this]
?.call() ??
orElse();
}
extension AccountKindFromStringExtension on Iterable<AccountKind> {
AccountKind? fromString(String val) {
final override = {
'guest': AccountKind.guest,
'user': AccountKind.user,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension AccountKindEnhancedEnum on AccountKind {
@override
// ignore: override_on_non_overriding_member
String get name => {
AccountKind.guest: 'guest',
AccountKind.user: 'user',
}[this]!;
bool get isGuest => this == AccountKind.guest;
bool get isUser => this == AccountKind.user;
T when<T>({
required T Function() guest,
required T Function() user,
}) =>
{
AccountKind.guest: guest,
AccountKind.user: user,
}[this]!();
T maybeWhen<T>({
T? Function()? guest,
T? Function()? user,
required T Function() orElse,
}) =>
{
AccountKind.guest: guest,
AccountKind.user: user,
}[this]
?.call() ??
orElse();
}
extension BackupAlgorithmFromStringExtension on Iterable<BackupAlgorithm> {
BackupAlgorithm? fromString(String val) {
final override = {
'm.megolm_backup.v1.curve25519-aes-sha2':
BackupAlgorithm.mMegolmBackupV1Curve25519AesSha2,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension BackupAlgorithmEnhancedEnum on BackupAlgorithm {
@override
// ignore: override_on_non_overriding_member
String get name => {
BackupAlgorithm.mMegolmBackupV1Curve25519AesSha2:
'm.megolm_backup.v1.curve25519-aes-sha2',
}[this]!;
bool get isMMegolmBackupV1Curve25519AesSha2 =>
this == BackupAlgorithm.mMegolmBackupV1Curve25519AesSha2;
T when<T>({
required T Function() mMegolmBackupV1Curve25519AesSha2,
}) =>
{
BackupAlgorithm.mMegolmBackupV1Curve25519AesSha2:
mMegolmBackupV1Curve25519AesSha2,
}[this]!();
T maybeWhen<T>({
T? Function()? mMegolmBackupV1Curve25519AesSha2,
required T Function() orElse,
}) =>
{
BackupAlgorithm.mMegolmBackupV1Curve25519AesSha2:
mMegolmBackupV1Curve25519AesSha2,
}[this]
?.call() ??
orElse();
}
extension MembershipFromStringExtension on Iterable<Membership> {
Membership? fromString(String val) {
final override = {
'ban': Membership.ban,
'invite': Membership.invite,
'join': Membership.join,
'knock': Membership.knock,
'leave': Membership.leave,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension MembershipEnhancedEnum on Membership {
@override
// ignore: override_on_non_overriding_member
String get name => {
Membership.ban: 'ban',
Membership.invite: 'invite',
Membership.join: 'join',
Membership.knock: 'knock',
Membership.leave: 'leave',
}[this]!;
bool get isBan => this == Membership.ban;
bool get isInvite => this == Membership.invite;
bool get isJoin => this == Membership.join;
bool get isKnock => this == Membership.knock;
bool get isLeave => this == Membership.leave;
T when<T>({
required T Function() ban,
required T Function() invite,
required T Function() join,
required T Function() knock,
required T Function() leave,
}) =>
{
Membership.ban: ban,
Membership.invite: invite,
Membership.join: join,
Membership.knock: knock,
Membership.leave: leave,
}[this]!();
T maybeWhen<T>({
T? Function()? ban,
T? Function()? invite,
T? Function()? join,
T? Function()? knock,
T? Function()? leave,
required T Function() orElse,
}) =>
{
Membership.ban: ban,
Membership.invite: invite,
Membership.join: join,
Membership.knock: knock,
Membership.leave: leave,
}[this]
?.call() ??
orElse();
}
extension DirectionFromStringExtension on Iterable<Direction> {
Direction? fromString(String val) {
final override = {
'b': Direction.b,
'f': Direction.f,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension DirectionEnhancedEnum on Direction {
@override
// ignore: override_on_non_overriding_member
String get name => {
Direction.b: 'b',
Direction.f: 'f',
}[this]!;
bool get isB => this == Direction.b;
bool get isF => this == Direction.f;
T when<T>({
required T Function() b,
required T Function() f,
}) =>
{
Direction.b: b,
Direction.f: f,
}[this]!();
T maybeWhen<T>({
T? Function()? b,
T? Function()? f,
required T Function() orElse,
}) =>
{
Direction.b: b,
Direction.f: f,
}[this]
?.call() ??
orElse();
}
extension ReceiptTypeFromStringExtension on Iterable<ReceiptType> {
ReceiptType? fromString(String val) {
final override = {
'm.read': ReceiptType.mRead,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension ReceiptTypeEnhancedEnum on ReceiptType {
@override
// ignore: override_on_non_overriding_member
String get name => {
ReceiptType.mRead: 'm.read',
}[this]!;
bool get isMRead => this == ReceiptType.mRead;
T when<T>({
required T Function() mRead,
}) =>
{
ReceiptType.mRead: mRead,
}[this]!();
T maybeWhen<T>({
T? Function()? mRead,
required T Function() orElse,
}) =>
{
ReceiptType.mRead: mRead,
}[this]
?.call() ??
orElse();
}
extension GroupKeyFromStringExtension on Iterable<GroupKey> {
GroupKey? fromString(String val) {
final override = {
'room_id': GroupKey.roomId,
'sender': GroupKey.sender,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension GroupKeyEnhancedEnum on GroupKey {
@override
// ignore: override_on_non_overriding_member
String get name => {
GroupKey.roomId: 'room_id',
GroupKey.sender: 'sender',
}[this]!;
bool get isRoomId => this == GroupKey.roomId;
bool get isSender => this == GroupKey.sender;
T when<T>({
required T Function() roomId,
required T Function() sender,
}) =>
{
GroupKey.roomId: roomId,
GroupKey.sender: sender,
}[this]!();
T maybeWhen<T>({
T? Function()? roomId,
T? Function()? sender,
required T Function() orElse,
}) =>
{
GroupKey.roomId: roomId,
GroupKey.sender: sender,
}[this]
?.call() ??
orElse();
}
extension KeyKindFromStringExtension on Iterable<KeyKind> {
KeyKind? fromString(String val) {
final override = {
'content.body': KeyKind.contentBody,
'content.name': KeyKind.contentName,
'content.topic': KeyKind.contentTopic,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension KeyKindEnhancedEnum on KeyKind {
@override
// ignore: override_on_non_overriding_member
String get name => {
KeyKind.contentBody: 'content.body',
KeyKind.contentName: 'content.name',
KeyKind.contentTopic: 'content.topic',
}[this]!;
bool get isContentBody => this == KeyKind.contentBody;
bool get isContentName => this == KeyKind.contentName;
bool get isContentTopic => this == KeyKind.contentTopic;
T when<T>({
required T Function() contentBody,
required T Function() contentName,
required T Function() contentTopic,
}) =>
{
KeyKind.contentBody: contentBody,
KeyKind.contentName: contentName,
KeyKind.contentTopic: contentTopic,
}[this]!();
T maybeWhen<T>({
T? Function()? contentBody,
T? Function()? contentName,
T? Function()? contentTopic,
required T Function() orElse,
}) =>
{
KeyKind.contentBody: contentBody,
KeyKind.contentName: contentName,
KeyKind.contentTopic: contentTopic,
}[this]
?.call() ??
orElse();
}
extension SearchOrderFromStringExtension on Iterable<SearchOrder> {
SearchOrder? fromString(String val) {
final override = {
'rank': SearchOrder.rank,
'recent': SearchOrder.recent,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension SearchOrderEnhancedEnum on SearchOrder {
@override
// ignore: override_on_non_overriding_member
String get name => {
SearchOrder.rank: 'rank',
SearchOrder.recent: 'recent',
}[this]!;
bool get isRank => this == SearchOrder.rank;
bool get isRecent => this == SearchOrder.recent;
T when<T>({
required T Function() rank,
required T Function() recent,
}) =>
{
SearchOrder.rank: rank,
SearchOrder.recent: recent,
}[this]!();
T maybeWhen<T>({
T? Function()? rank,
T? Function()? recent,
required T Function() orElse,
}) =>
{
SearchOrder.rank: rank,
SearchOrder.recent: recent,
}[this]
?.call() ??
orElse();
}
extension EventFormatFromStringExtension on Iterable<EventFormat> {
EventFormat? fromString(String val) {
final override = {
'client': EventFormat.client,
'federation': EventFormat.federation,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension EventFormatEnhancedEnum on EventFormat {
@override
// ignore: override_on_non_overriding_member
String get name => {
EventFormat.client: 'client',
EventFormat.federation: 'federation',
}[this]!;
bool get isClient => this == EventFormat.client;
bool get isFederation => this == EventFormat.federation;
T when<T>({
required T Function() client,
required T Function() federation,
}) =>
{
EventFormat.client: client,
EventFormat.federation: federation,
}[this]!();
T maybeWhen<T>({
T? Function()? client,
T? Function()? federation,
required T Function() orElse,
}) =>
{
EventFormat.client: client,
EventFormat.federation: federation,
}[this]
?.call() ??
orElse();
}
extension MethodFromStringExtension on Iterable<Method> {
Method? fromString(String val) {
final override = {
'crop': Method.crop,
'scale': Method.scale,
}[val];
// ignore: unnecessary_this
return this.contains(override) ? override : null;
}
}
extension MethodEnhancedEnum on Method {
@override
// ignore: override_on_non_overriding_member
String get name => {
Method.crop: 'crop',
Method.scale: 'scale',
}[this]!;
bool get isCrop => this == Method.crop;
bool get isScale => this == Method.scale;
T when<T>({
required T Function() crop,
required T Function() scale,
}) =>
{
Method.crop: crop,
Method.scale: scale,
}[this]!();
T maybeWhen<T>({
T? Function()? crop,
T? Function()? scale,
required T Function() orElse,
}) =>
{
Method.crop: crop,
Method.scale: scale,
}[this]
?.call() ??
orElse();
}

View File

@ -91,7 +91,7 @@ class MatrixApi extends Api {
}
dynamic json;
(!(data is String)) ? json = jsonEncode(data) : json = data;
if (data is List<int> || action.startsWith('/media/r0/upload')) json = data;
if (data is List<int> || action.startsWith('/media/v3/upload')) json = data;
final url = homeserver!
.resolveUri(Uri(path: '_matrix$action', queryParameters: query));
@ -154,7 +154,7 @@ class MatrixApi extends Api {
Map<String, dynamic>? fallbackKeys}) async {
final response = await request(
RequestType.POST,
'/client/r0/keys/upload',
'/client/v3/keys/upload',
data: {
if (deviceKeys != null) 'device_keys': deviceKeys.toJson(),
if (oneTimeKeys != null) 'one_time_keys': oneTimeKeys,
@ -181,7 +181,7 @@ class MatrixApi extends Api {
}
await request(
RequestType.POST,
'/client/r0/pushers/set',
'/client/v3/pushers/set',
data: data,
);
return;
@ -195,7 +195,7 @@ class MatrixApi extends Api {
data['kind'] = null;
await request(
RequestType.POST,
'/client/r0/pushers/set',
'/client/v3/pushers/set',
data: data,
);
return;
@ -205,7 +205,7 @@ class MatrixApi extends Api {
/// calls.
@override
Future<TurnServerCredentials> getTurnServer() async {
final json = await request(RequestType.GET, '/client/r0/voip/turnServer');
final json = await request(RequestType.GET, '/client/v3/voip/turnServer');
// fix invalid responses from synapse
// https://github.com/matrix-org/synapse/pull/10922
@ -213,4 +213,22 @@ class MatrixApi extends Api {
return TurnServerCredentials.fromJson(json);
}
@Deprecated('Use [deleteRoomKeyBySessionId] instead')
Future<RoomKeysUpdateResponse> deleteRoomKeysBySessionId(
String roomId, String sessionId, String version) async {
return deleteRoomKeyBySessionId(roomId, sessionId, version);
}
@Deprecated('Use [deleteRoomKeyBySessionId] instead')
Future<RoomKeysUpdateResponse> putRoomKeysBySessionId(String roomId,
String sessionId, String version, KeyBackupData data) async {
return putRoomKeyBySessionId(roomId, sessionId, version, data);
}
@Deprecated('Use [getRoomKeyBySessionId] instead')
Future<KeyBackupData> getRoomKeysBySessionId(
String roomId, String sessionId, String version) async {
return getRoomKeyBySessionId(roomId, sessionId, version);
}
}

View File

@ -9,9 +9,12 @@ environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
enhanced_enum: ^0.1.1
http: ^0.13.0
mime: ^1.0.0
dev_dependencies:
build_runner: ^2.1.8
enhanced_enum_generator: ^0.1.1
pedantic: ^1.11.0
test: ^1.14.4

View File

@ -146,7 +146,7 @@ void main() {
matrixApi.homeserver = Uri.parse('https://fakeserver.notexisting');
final loginTypes = await matrixApi.getLoginFlows();
expect(loginTypes?.first.type, 'm.login.password');
expect(FakeMatrixApi.api['GET']!['/client/r0/login']({}),
expect(FakeMatrixApi.api['GET']!['/client/v3/login']({}),
{'flows': loginTypes?.map((x) => x.toJson()).toList()});
matrixApi.homeserver = null;
});
@ -156,7 +156,7 @@ void main() {
LoginType.mLoginPassword,
identifier: AuthenticationUserIdentifier(user: 'username'),
);
expect(FakeMatrixApi.api['POST']!['/client/r0/login']({}),
expect(FakeMatrixApi.api['POST']!['/client/v3/login']({}),
loginResponse.toJson());
matrixApi.homeserver = null;
});
@ -176,7 +176,7 @@ void main() {
matrixApi.homeserver = Uri.parse('https://fakeserver.notexisting');
final registerResponse =
await matrixApi.register(kind: AccountKind.guest, username: 'test');
expect(FakeMatrixApi.api['POST']!['/client/r0/register?kind=guest']({}),
expect(FakeMatrixApi.api['POST']!['/client/v3/register?kind=guest']({}),
registerResponse.toJson());
matrixApi.homeserver = null;
});
@ -193,7 +193,7 @@ void main() {
);
expect(
FakeMatrixApi
.api['POST']!['/client/r0/register/email/requestToken']({}),
.api['POST']!['/client/v3/register/email/requestToken']({}),
response.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
});
@ -211,7 +211,7 @@ void main() {
);
expect(
FakeMatrixApi
.api['POST']!['/client/r0/register/email/requestToken']({}),
.api['POST']!['/client/v3/register/email/requestToken']({}),
response.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
});
@ -280,7 +280,7 @@ void main() {
matrixApi.homeserver = Uri.parse('https://fakeserver.notexisting');
matrixApi.accessToken = '1234';
final response = await matrixApi.getAccount3PIDs();
expect(FakeMatrixApi.api['GET']!['/client/r0/account/3pid']({}),
expect(FakeMatrixApi.api['GET']!['/client/v3/account/3pid']({}),
{'threepids': response?.map((t) => t.toJson()).toList()});
matrixApi.homeserver = matrixApi.accessToken = null;
});
@ -362,7 +362,7 @@ void main() {
matrixApi.homeserver = Uri.parse('https://fakeserver.notexisting');
matrixApi.accessToken = '1234';
final response = await matrixApi.getCapabilities();
expect(FakeMatrixApi.api['GET']!['/client/r0/capabilities']({}),
expect(FakeMatrixApi.api['GET']!['/client/v3/capabilities']({}),
{'capabilities': response.toJson()});
matrixApi.homeserver = matrixApi.accessToken = null;
});
@ -497,7 +497,7 @@ void main() {
);
expect(
FakeMatrixApi.api['GET']![
'/client/r0/sync?filter=%7B%7D&since=1234&full_state=false&set_presence=unavailable&timeout=15'](
'/client/v3/sync?filter=%7B%7D&since=1234&full_state=false&set_presence=unavailable&timeout=15'](
{}) as Map?,
response.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -575,7 +575,7 @@ void main() {
expect(
FakeMatrixApi.api['GET']![
'/client/r0/rooms/!localpart%3Aserver.abc/messages?from=1234&to=1234&dir=b&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D'](
'/client/v3/rooms/!localpart%3Aserver.abc/messages?from=1234&to=1234&dir=b&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D'](
{}) as Map?,
timelineHistoryResponse.toJson());
@ -666,7 +666,7 @@ void main() {
expect(
FakeMatrixApi.api['GET']![
'/client/r0/directory/room/%23testalias%3Aexample.com']({}),
'/client/v3/directory/room/%23testalias%3Aexample.com']({}),
roomAliasInformation.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -828,7 +828,7 @@ void main() {
expect(
FakeMatrixApi.api['GET']![
'/client/r0/publicRooms?limit=10&since=1234&server=example.com']({}),
'/client/v3/publicRooms?limit=10&since=1234&server=example.com']({}),
response.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -850,7 +850,7 @@ void main() {
expect(
FakeMatrixApi
.api['POST']!['/client/r0/publicRooms?server=example.com']({}),
.api['POST']!['/client/v3/publicRooms?server=example.com']({}),
response.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -864,7 +864,7 @@ void main() {
limit: 10,
);
expect(FakeMatrixApi.api['POST']!['/client/r0/user_directory/search']({}),
expect(FakeMatrixApi.api['POST']!['/client/v3/user_directory/search']({}),
response.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -912,7 +912,7 @@ void main() {
final response = await matrixApi.getUserProfile('@alice:example.com');
expect(
FakeMatrixApi
.api['GET']!['/client/r0/profile/%40alice%3Aexample.com']({}),
.api['GET']!['/client/v3/profile/%40alice%3Aexample.com']({}),
response.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -922,7 +922,7 @@ void main() {
matrixApi.accessToken = '1234';
final response = await matrixApi.getTurnServer();
expect(FakeMatrixApi.api['GET']!['/client/r0/voip/turnServer']({}),
expect(FakeMatrixApi.api['GET']!['/client/v3/voip/turnServer']({}),
response.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -986,7 +986,7 @@ void main() {
);
expect(
FakeMatrixApi.api['GET']![
'/client/r0/presence/${Uri.encodeComponent('@alice:example.com')}/status']({}),
'/client/v3/presence/${Uri.encodeComponent('@alice:example.com')}/status']({}),
response.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -1016,7 +1016,7 @@ void main() {
);
expect(
FakeMatrixApi.api['GET']![
'/media/r0/preview_url?url=https%3A%2F%2Fmatrix.org&ts=10']({}),
'/media/v3/preview_url?url=https%3A%2F%2Fmatrix.org&ts=10']({}),
openGraphData.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -1047,7 +1047,7 @@ void main() {
matrixApi.accessToken = '1234';
final devices = await matrixApi.getDevices();
expect(FakeMatrixApi.api['GET']!['/client/r0/devices']({})['devices'],
expect(FakeMatrixApi.api['GET']!['/client/v3/devices']({})['devices'],
devices?.map((i) => i.toJson()).toList());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -1118,7 +1118,7 @@ void main() {
'Alices mobile phone');
expect(
FakeMatrixApi
.api['POST']!['/client/r0/keys/query']({'device_keys': {}}),
.api['POST']!['/client/v3/keys/query']({'device_keys': {}}),
response.toJson());
matrixApi.homeserver = matrixApi.accessToken = null;
@ -1134,7 +1134,7 @@ void main() {
timeout: 10,
);
expect(
FakeMatrixApi.api['POST']!['/client/r0/keys/claim']({
FakeMatrixApi.api['POST']!['/client/v3/keys/claim']({
'one_time_keys': {
'@alice:example.com': {'JLAFKJWSCS': 'signed_curve25519'}
}
@ -1193,7 +1193,7 @@ void main() {
final response = await matrixApi.getPushers();
expect(
FakeMatrixApi.api['GET']!['/client/r0/pushers']({}),
FakeMatrixApi.api['GET']!['/client/v3/pushers']({}),
{'pushers': response?.map((i) => i.toJson()).toList()},
);
@ -1231,7 +1231,7 @@ void main() {
);
expect(
FakeMatrixApi.api['GET']![
'/client/r0/notifications?from=1234&limit=10&only=1234']({}),
'/client/v3/notifications?from=1234&limit=10&only=1234']({}),
response.toJson(),
);
@ -1243,7 +1243,7 @@ void main() {
final response = await matrixApi.getPushRules();
expect(
FakeMatrixApi.api['GET']!['/client/r0/pushrules']({}),
FakeMatrixApi.api['GET']!['/client/v3/pushrules']({}),
{'global': response.toJson()},
);
@ -1257,7 +1257,7 @@ void main() {
await matrixApi.getPushRule('global', PushRuleKind.content, 'nocake');
expect(
FakeMatrixApi
.api['GET']!['/client/r0/pushrules/global/content/nocake']({}),
.api['GET']!['/client/v3/pushrules/global/content/nocake']({}),
response.toJson(),
);
@ -1357,7 +1357,7 @@ void main() {
from: '1234', roomId: '!1234', timeout: 10);
expect(
FakeMatrixApi.api['GET']![
'/client/r0/events?from=1234&timeout=10&room_id=%211234']({}),
'/client/v3/events?from=1234&timeout=10&room_id=%211234']({}),
response.toJson(),
);
@ -1371,7 +1371,7 @@ void main() {
'@alice:example.com', '!localpart:example.com');
expect(
FakeMatrixApi.api['GET']![
'/client/r0/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags']({}),
'/client/v3/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags']({}),
{'tags': response?.map((k, v) => MapEntry(k, v.toJson()))},
);
@ -1457,7 +1457,7 @@ void main() {
final response = await matrixApi.getWhoIs('@alice:example.com');
expect(
FakeMatrixApi
.api['GET']!['/client/r0/admin/whois/%40alice%3Aexample.com']({}),
.api['GET']!['/client/v3/admin/whois/%40alice%3Aexample.com']({}),
response.toJson(),
);
@ -1471,7 +1471,7 @@ void main() {
limit: 10, filter: '{}');
expect(
FakeMatrixApi.api['GET']![
'/client/r0/rooms/1234/context/1234?limit=10&filter=%7B%7D']({}),
'/client/v3/rooms/1234/context/1234?limit=10&filter=%7B%7D']({}),
response.toJson(),
);
@ -1496,7 +1496,7 @@ void main() {
final response = await matrixApi.getProtocols();
expect(
FakeMatrixApi.api['GET']!['/client/r0/thirdparty/protocols']({}),
FakeMatrixApi.api['GET']!['/client/v3/thirdparty/protocols']({}),
response.map((k, v) => MapEntry(k, v.toJson())),
);
@ -1508,7 +1508,7 @@ void main() {
final response = await matrixApi.getProtocolMetadata('irc');
expect(
FakeMatrixApi.api['GET']!['/client/r0/thirdparty/protocol/irc']({}),
FakeMatrixApi.api['GET']!['/client/v3/thirdparty/protocol/irc']({}),
response.toJson(),
);
@ -1520,7 +1520,7 @@ void main() {
final response = await matrixApi.queryLocationByProtocol('irc');
expect(
FakeMatrixApi.api['GET']!['/client/r0/thirdparty/location/irc']({}),
FakeMatrixApi.api['GET']!['/client/v3/thirdparty/location/irc']({}),
response.map((i) => i.toJson()).toList(),
);
@ -1532,7 +1532,7 @@ void main() {
final response = await matrixApi.queryUserByProtocol('irc');
expect(
FakeMatrixApi.api['GET']!['/client/r0/thirdparty/user/irc']({}),
FakeMatrixApi.api['GET']!['/client/v3/thirdparty/user/irc']({}),
response.map((i) => i.toJson()).toList(),
);
@ -1545,7 +1545,7 @@ void main() {
final response = await matrixApi.queryLocationByAlias('1234');
expect(
FakeMatrixApi
.api['GET']!['/client/r0/thirdparty/location?alias=1234']({}),
.api['GET']!['/client/v3/thirdparty/location?alias=1234']({}),
response.map((i) => i.toJson()).toList(),
);
@ -1557,7 +1557,7 @@ void main() {
final response = await matrixApi.queryUserByID('1234');
expect(
FakeMatrixApi.api['GET']!['/client/r0/thirdparty/user?userid=1234']({}),
FakeMatrixApi.api['GET']!['/client/v3/thirdparty/user?userid=1234']({}),
response.map((i) => i.toJson()).toList(),
);
@ -1570,7 +1570,7 @@ void main() {
final response = await matrixApi.requestOpenIdToken('1234', {});
expect(
FakeMatrixApi
.api['POST']!['/client/r0/user/1234/openid/request_token']({}),
.api['POST']!['/client/v3/user/1234/openid/request_token']({}),
response.toJson(),
);
@ -1595,8 +1595,8 @@ void main() {
};
final ret = await matrixApi.postRoomKeysVersion(algorithm, authData);
expect(
FakeMatrixApi.api['POST']!['/client/unstable/room_keys/version'](
{})['version'],
FakeMatrixApi
.api['POST']!['/client/v3/room_keys/version']({})['version'],
ret);
});
test('getRoomKeysVersionCurrent', () async {
@ -1604,8 +1604,7 @@ void main() {
matrixApi.accessToken = '1234';
final ret = await matrixApi.getRoomKeysVersionCurrent();
expect(
FakeMatrixApi.api['GET']!['/client/unstable/room_keys/version']({}),
expect(FakeMatrixApi.api['GET']!['/client/v3/room_keys/version']({}),
ret.toJson());
});
test('putRoomKeysVersion', () async {
@ -1625,7 +1624,7 @@ void main() {
await matrixApi.deleteRoomKeys('5');
});
test('putRoomKeysBySessionId', () async {
test('putRoomKeyBySessionId', () async {
matrixApi.homeserver = Uri.parse('https://fakeserver.notexisting');
matrixApi.accessToken = '1234';
@ -1642,37 +1641,36 @@ void main() {
'mac': 'QzKV/fgAs4U',
},
});
final ret = await matrixApi.putRoomKeysBySessionId(
final ret = await matrixApi.putRoomKeyBySessionId(
roomId, sessionId, '5', session);
expect(
FakeMatrixApi.api['PUT']![
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5']({}),
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5']({}),
ret.toJson());
});
test('getRoomKeysBySessionId', () async {
test('getRoomKeyBySessionId', () async {
matrixApi.homeserver = Uri.parse('https://fakeserver.notexisting');
matrixApi.accessToken = '1234';
final roomId = '!726s6s6q:example.com';
final sessionId = 'ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU';
final ret =
await matrixApi.getRoomKeysBySessionId(roomId, sessionId, '5');
final ret = await matrixApi.getRoomKeyBySessionId(roomId, sessionId, '5');
expect(
FakeMatrixApi.api['GET']![
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5']({}),
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5']({}),
ret.toJson());
});
test('deleteRoomKeysBySessionId', () async {
test('deleteRoomKeyBySessionId', () async {
matrixApi.homeserver = Uri.parse('https://fakeserver.notexisting');
matrixApi.accessToken = '1234';
final roomId = '!726s6s6q:example.com';
final sessionId = 'ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU';
final ret =
await matrixApi.deleteRoomKeysBySessionId(roomId, sessionId, '5');
await matrixApi.deleteRoomKeyBySessionId(roomId, sessionId, '5');
expect(
FakeMatrixApi.api['DELETE']![
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5']({}),
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5']({}),
ret.toJson());
});
test('putRoomKeysByRoomId', () async {
@ -1699,7 +1697,7 @@ void main() {
final ret = await matrixApi.putRoomKeysByRoomId(roomId, '5', session);
expect(
FakeMatrixApi.api['PUT']![
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5']({}),
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5']({}),
ret.toJson());
});
test('getRoomKeysByRoomId', () async {
@ -1710,7 +1708,7 @@ void main() {
final ret = await matrixApi.getRoomKeysByRoomId(roomId, '5');
expect(
FakeMatrixApi.api['GET']![
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5']({}),
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5']({}),
ret.toJson());
});
test('deleteRoomKeysByRoomId', () async {
@ -1721,7 +1719,7 @@ void main() {
final ret = await matrixApi.deleteRoomKeysByRoomId(roomId, '5');
expect(
FakeMatrixApi.api['DELETE']![
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5']({}),
'/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5']({}),
ret.toJson());
});
test('putRoomKeys', () async {
@ -1751,8 +1749,7 @@ void main() {
});
final ret = await matrixApi.putRoomKeys('5', session);
expect(
FakeMatrixApi
.api['PUT']!['/client/unstable/room_keys/keys?version=5']({}),
FakeMatrixApi.api['PUT']!['/client/v3/room_keys/keys?version=5']({}),
ret.toJson());
});
test('getRoomKeys', () async {
@ -1761,8 +1758,7 @@ void main() {
final ret = await matrixApi.getRoomKeys('5');
expect(
FakeMatrixApi
.api['GET']!['/client/unstable/room_keys/keys?version=5']({}),
FakeMatrixApi.api['GET']!['/client/v3/room_keys/keys?version=5']({}),
ret.toJson());
});
test('deleteRoomKeys', () async {
@ -1772,7 +1768,7 @@ void main() {
final ret = await matrixApi.deleteRoomKeys('5');
expect(
FakeMatrixApi
.api['DELETE']!['/client/unstable/room_keys/keys?version=5']({}),
.api['DELETE']!['/client/v3/room_keys/keys?version=5']({}),
ret.toJson());
});
test('AuthenticationData', () {