summary refs log tree commit diff
path: root/synapse/rest/client/v1/profile.py
diff options
context:
space:
mode:
authorAndrew Morgan <1342360+anoadragon453@users.noreply.github.com>2020-05-28 15:12:35 +0100
committerGitHub <noreply@github.com>2020-05-28 15:12:35 +0100
commit0aa9449cd412a19550a74d8d6d4b1714746ebba1 (patch)
treee5915221b57a9dc9c53aa293a373cd8fc46412c6 /synapse/rest/client/v1/profile.py
parentFixes an attribute error when using the default display name during registrat... (diff)
parentMove sql schema delta files to their new location (diff)
downloadsynapse-0aa9449cd412a19550a74d8d6d4b1714746ebba1.tar.xz
Merge pull request #39 from matrix-org/dinsic-release-v1.12.x
Merge Synapse release v1.12.0 into 'dinsic'

Accompanying Sytest PR: https://github.com/matrix-org/sytest/issues/843
Diffstat (limited to 'synapse/rest/client/v1/profile.py')
-rw-r--r--synapse/rest/client/v1/profile.py97
1 files changed, 42 insertions, 55 deletions
diff --git a/synapse/rest/client/v1/profile.py b/synapse/rest/client/v1/profile.py

index 34361697df..165313b572 100644 --- a/synapse/rest/client/v1/profile.py +++ b/synapse/rest/client/v1/profile.py
@@ -14,16 +14,13 @@ # limitations under the License. """ This module contains REST servlets to do with profile: /profile/<paths> """ -import logging - from twisted.internet import defer +from synapse.api.errors import Codes, SynapseError from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.rest.client.v2_alpha._base import client_patterns from synapse.types import UserID -logger = logging.getLogger(__name__) - class ProfileDisplaynameRestServlet(RestServlet): PATTERNS = client_patterns("/profile/(?P<user_id>[^/]*)/displayname", v1=True) @@ -35,52 +32,47 @@ class ProfileDisplaynameRestServlet(RestServlet): self.http_client = hs.get_simple_http_client() self.auth = hs.get_auth() - @defer.inlineCallbacks - def on_GET(self, request, user_id): + async def on_GET(self, request, user_id): requester_user = None if self.hs.config.require_auth_for_profile_requests: - requester = yield self.auth.get_user_by_req(request) + requester = await self.auth.get_user_by_req(request) requester_user = requester.user user = UserID.from_string(user_id) - yield self.profile_handler.check_profile_query_allowed(user, requester_user) + await self.profile_handler.check_profile_query_allowed(user, requester_user) - displayname = yield self.profile_handler.get_displayname(user) + displayname = await self.profile_handler.get_displayname(user) ret = {} if displayname is not None: ret["displayname"] = displayname - defer.returnValue((200, ret)) + return 200, ret - @defer.inlineCallbacks - def on_PUT(self, request, user_id): - requester = yield self.auth.get_user_by_req(request, allow_guest=True) + async def on_PUT(self, request, user_id): + requester = await self.auth.get_user_by_req(request, allow_guest=True) user = UserID.from_string(user_id) - is_admin = yield self.auth.is_server_admin(requester.user) + is_admin = await self.auth.is_server_admin(requester.user) content = parse_json_object_from_request(request) try: new_name = content["displayname"] except Exception: - defer.returnValue((400, "Unable to parse name")) + return 400, "Unable to parse name" - yield self.profile_handler.set_displayname( - user, requester, new_name, is_admin) + await self.profile_handler.set_displayname(user, requester, new_name, is_admin) if self.hs.config.shadow_server: - shadow_user = UserID( - user.localpart, self.hs.config.shadow_server.get("hs") - ) + shadow_user = UserID(user.localpart, self.hs.config.shadow_server.get("hs")) self.shadow_displayname(shadow_user.to_string(), content) - defer.returnValue((200, {})) + return 200, {} def on_OPTIONS(self, request, user_id): - return (200, {}) + return 200, {} @defer.inlineCallbacks def shadow_displayname(self, user_id, body): @@ -89,10 +81,9 @@ class ProfileDisplaynameRestServlet(RestServlet): as_token = self.hs.config.shadow_server.get("as_token") yield self.http_client.put_json( - "%s/_matrix/client/r0/profile/%s/displayname?access_token=%s&user_id=%s" % ( - shadow_hs_url, user_id, as_token, user_id - ), - body + "%s/_matrix/client/r0/profile/%s/displayname?access_token=%s&user_id=%s" + % (shadow_hs_url, user_id, as_token, user_id), + body, ) @@ -106,52 +97,50 @@ class ProfileAvatarURLRestServlet(RestServlet): self.http_client = hs.get_simple_http_client() self.auth = hs.get_auth() - @defer.inlineCallbacks - def on_GET(self, request, user_id): + async def on_GET(self, request, user_id): requester_user = None if self.hs.config.require_auth_for_profile_requests: - requester = yield self.auth.get_user_by_req(request) + requester = await self.auth.get_user_by_req(request) requester_user = requester.user user = UserID.from_string(user_id) - yield self.profile_handler.check_profile_query_allowed(user, requester_user) + await self.profile_handler.check_profile_query_allowed(user, requester_user) - avatar_url = yield self.profile_handler.get_avatar_url(user) + avatar_url = await self.profile_handler.get_avatar_url(user) ret = {} if avatar_url is not None: ret["avatar_url"] = avatar_url - defer.returnValue((200, ret)) + return 200, ret - @defer.inlineCallbacks - def on_PUT(self, request, user_id): - requester = yield self.auth.get_user_by_req(request) + async def on_PUT(self, request, user_id): + requester = await self.auth.get_user_by_req(request) user = UserID.from_string(user_id) - is_admin = yield self.auth.is_server_admin(requester.user) + is_admin = await self.auth.is_server_admin(requester.user) content = parse_json_object_from_request(request) try: new_avatar_url = content["avatar_url"] - except Exception: - defer.returnValue((400, "Unable to parse name")) + except KeyError: + raise SynapseError( + 400, "Missing key 'avatar_url'", errcode=Codes.MISSING_PARAM + ) - yield self.profile_handler.set_avatar_url( + await self.profile_handler.set_avatar_url( user, requester, new_avatar_url, is_admin ) if self.hs.config.shadow_server: - shadow_user = UserID( - user.localpart, self.hs.config.shadow_server.get("hs") - ) + shadow_user = UserID(user.localpart, self.hs.config.shadow_server.get("hs")) self.shadow_avatar_url(shadow_user.to_string(), content) - defer.returnValue((200, {})) + return 200, {} def on_OPTIONS(self, request, user_id): - return (200, {}) + return 200, {} @defer.inlineCallbacks def shadow_avatar_url(self, user_id, body): @@ -160,10 +149,9 @@ class ProfileAvatarURLRestServlet(RestServlet): as_token = self.hs.config.shadow_server.get("as_token") yield self.http_client.put_json( - "%s/_matrix/client/r0/profile/%s/avatar_url?access_token=%s&user_id=%s" % ( - shadow_hs_url, user_id, as_token, user_id - ), - body + "%s/_matrix/client/r0/profile/%s/avatar_url?access_token=%s&user_id=%s" + % (shadow_hs_url, user_id, as_token, user_id), + body, ) @@ -176,20 +164,19 @@ class ProfileRestServlet(RestServlet): self.profile_handler = hs.get_profile_handler() self.auth = hs.get_auth() - @defer.inlineCallbacks - def on_GET(self, request, user_id): + async def on_GET(self, request, user_id): requester_user = None if self.hs.config.require_auth_for_profile_requests: - requester = yield self.auth.get_user_by_req(request) + requester = await self.auth.get_user_by_req(request) requester_user = requester.user user = UserID.from_string(user_id) - yield self.profile_handler.check_profile_query_allowed(user, requester_user) + await self.profile_handler.check_profile_query_allowed(user, requester_user) - displayname = yield self.profile_handler.get_displayname(user) - avatar_url = yield self.profile_handler.get_avatar_url(user) + displayname = await self.profile_handler.get_displayname(user) + avatar_url = await self.profile_handler.get_avatar_url(user) ret = {} if displayname is not None: @@ -197,7 +184,7 @@ class ProfileRestServlet(RestServlet): if avatar_url is not None: ret["avatar_url"] = avatar_url - defer.returnValue((200, ret)) + return 200, ret def register_servlets(hs, http_server):