Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Add /user/{user_id}/shared_rooms/ api #7785

Merged
merged 40 commits into from
Sep 2, 2020
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
26634cb
Add shared_rooms api
Half-Shot Jul 5, 2020
0f6800f
Add changelog
Half-Shot Jul 5, 2020
984c52b
Add .
Half-Shot Jul 5, 2020
f43bf0c
Wrap response in {"rooms": }
Half-Shot Jul 5, 2020
9c1e934
linting
Half-Shot Jul 5, 2020
208d3cf
Add unstable_features key
Half-Shot Jul 5, 2020
90a5975
Remove options from isort that aren't part of 5.x
Half-Shot Jul 5, 2020
3fa92f5
Update imports to make isort happy
Half-Shot Jul 5, 2020
6bd34c7
Add changelog
Half-Shot Jul 5, 2020
09e09a3
Update tox.ini file with correct invocation
Half-Shot Jul 5, 2020
c143e62
Merge branch 'hs/isort-5' into hs/shared-with-api
Half-Shot Jul 5, 2020
676edea
fix linting again for isort
Half-Shot Jul 5, 2020
c399292
Merge remote-tracking branch 'origin/develop' into hs/shared-with-api
Half-Shot Jul 5, 2020
dde46cf
Vendor prefix unstable API
Half-Shot Jul 10, 2020
256e017
Fix to match spec
Half-Shot Jul 31, 2020
9cd5116
import Codes
Half-Shot Jul 31, 2020
72e90a2
import Codes
Half-Shot Jul 31, 2020
ebfe6c4
Merge branch 'hs/shared-with-api' of github.com:matrix-org/synapse in…
Half-Shot Aug 2, 2020
a281322
Merge remote-tracking branch 'origin/develop' into hs/shared-with-api
Half-Shot Aug 2, 2020
ce49d19
Use FORBIDDEN
Half-Shot Aug 18, 2020
42a09b9
Update changelog.d/7785.feature
Half-Shot Aug 18, 2020
cc4fb16
Merge remote-tracking branch 'origin/develop' into hs/shared-with-api
Half-Shot Aug 18, 2020
7905978
Implement get_shared_rooms_for_users
Half-Shot Aug 18, 2020
130d2f3
a comma
Half-Shot Aug 18, 2020
c120fd3
trailing whitespace
Half-Shot Aug 19, 2020
e135cd5
Handle the easy feedback
Half-Shot Aug 28, 2020
e785cc6
Switch to using runInteraction
Half-Shot Aug 28, 2020
8a4c5ab
Add tests
Half-Shot Aug 28, 2020
49f14c0
Merge remote-tracking branch 'origin/develop' into hs/shared-with-api
Half-Shot Aug 28, 2020
e86f406
Feedback
Half-Shot Aug 29, 2020
7554836
Seperate unstable endpoint from v2
Half-Shot Aug 29, 2020
1fa8b84
Add upgrade node
Half-Shot Aug 29, 2020
783f8f5
a line
Half-Shot Aug 29, 2020
a444ab0
Fix style by adding a blank line at EOF.
clokep Aug 31, 2020
837cf31
Update synapse/storage/databases/main/user_directory.py
Half-Shot Aug 31, 2020
023e21f
Merge remote-tracking branch 'origin/develop' into hs/shared-with-api
Half-Shot Sep 1, 2020
679810a
Update synapse/storage/databases/main/user_directory.py
Half-Shot Sep 2, 2020
0578bb9
Update UPGRADE.rst
Half-Shot Sep 2, 2020
5acf573
Merge branch 'develop' into hs/shared-with-api
Half-Shot Sep 2, 2020
078b3e3
Fix UPGRADE/CHANGELOG unstable paths
Half-Shot Sep 2, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/7785.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add `/user/{user_id}/shared_rooms/{other_user_id}` endpoint.
Half-Shot marked this conversation as resolved.
Show resolved Hide resolved
2 changes: 2 additions & 0 deletions synapse/rest/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
room_keys,
room_upgrade_rest_servlet,
sendtodevice,
shared_rooms,
sync,
tags,
thirdparty,
Expand Down Expand Up @@ -113,6 +114,7 @@ def register_servlets(client_resource, hs):
devices.register_servlets(hs, client_resource)
thirdparty.register_servlets(hs, client_resource)
sendtodevice.register_servlets(hs, client_resource)
shared_rooms.register_servlets(hs, client_resource)
anoadragon453 marked this conversation as resolved.
Show resolved Hide resolved
user_directory.register_servlets(hs, client_resource)
groups.register_servlets(hs, client_resource)
room_upgrade_rest_servlet.register_servlets(hs, client_resource)
Expand Down
51 changes: 51 additions & 0 deletions synapse/rest/client/v2_alpha/shared_rooms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# -*- coding: utf-8 -*-
# Copyright 2020 Half-Shot
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import logging

from synapse.api.errors import AuthError
from synapse.http.servlet import RestServlet

from ._base import client_patterns

logger = logging.getLogger(__name__)


class UserSharedRoomsServlet(RestServlet):
"""
GET /user/{user_id}/shared_rooms/{other_user_id} HTTP/1.1
"""

PATTERNS = client_patterns(
"/user/(?P<user_id>[^/]*)/shared_rooms/(?P<other_user_id>[^/]*)",
anoadragon453 marked this conversation as resolved.
Show resolved Hide resolved
releases=(), # This is an unstable feature
)

def __init__(self, hs):
super(UserSharedRoomsServlet, self).__init__()
self.auth = hs.get_auth()
self.store = hs.get_datastore()

async def on_GET(self, request, user_id, other_user_id):
requester = await self.auth.get_user_by_req(request)
if user_id != requester.user.to_string():
raise AuthError(403, "Cannot get shared rooms for other users.")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is wordly slightly unclearly. How about

Suggested change
raise AuthError(403, "Cannot get shared rooms for other users.")
raise AuthError(403, "Cannot get shared rooms between other users.")

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dunno, I think that sounds more confusing tbh. Probably need to #wordsmith it.


rooms = await self.store.get_rooms_in_common_for_users(user_id, other_user_id)

return 200, {"rooms": rooms}


def register_servlets(hs, http_server):
UserSharedRoomsServlet(hs).register(http_server)
2 changes: 2 additions & 0 deletions synapse/rest/client/versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ def on_GET(self, request):
"org.matrix.e2e_cross_signing": True,
# Implements additional endpoints as described in MSC2432
"org.matrix.msc2432": True,
# Implements additional endpoints as described in MSC2666
"uk.half-shot.msc2666": True,
},
},
)
Expand Down