mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-24 10:35:46 +03:00
Correctly wire in update group profile over federation
This commit is contained in:
parent
1de557975f
commit
ce6d4914f4
2 changed files with 33 additions and 13 deletions
|
@ -485,6 +485,26 @@ class TransportLayerClient(object):
|
||||||
ignore_backoff=True,
|
ignore_backoff=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@log_function
|
||||||
|
def update_group_profile(self, destination, group_id, requester_user_id, content):
|
||||||
|
"""Update a remote group profile
|
||||||
|
|
||||||
|
Args:
|
||||||
|
destination (str)
|
||||||
|
group_id (str)
|
||||||
|
requester_user_id (str)
|
||||||
|
content (dict): The new profile of the group
|
||||||
|
"""
|
||||||
|
path = PREFIX + "/groups/%s/profile" % (group_id,)
|
||||||
|
|
||||||
|
return self.client.post_json(
|
||||||
|
destination=destination,
|
||||||
|
path=path,
|
||||||
|
args={"requester_user_id": requester_user_id},
|
||||||
|
data=content,
|
||||||
|
ignore_backoff=True,
|
||||||
|
)
|
||||||
|
|
||||||
@log_function
|
@log_function
|
||||||
def get_group_summary(self, destination, group_id, requester_user_id):
|
def get_group_summary(self, destination, group_id, requester_user_id):
|
||||||
"""Get a group summary
|
"""Get a group summary
|
||||||
|
|
|
@ -610,7 +610,7 @@ class FederationVersionServlet(BaseFederationServlet):
|
||||||
|
|
||||||
|
|
||||||
class FederationGroupsProfileServlet(BaseFederationServlet):
|
class FederationGroupsProfileServlet(BaseFederationServlet):
|
||||||
"""Get the basic profile of a group on behalf of a user
|
"""Get/set the basic profile of a group on behalf of a user
|
||||||
"""
|
"""
|
||||||
PATH = "/groups/(?P<group_id>[^/]*)/profile$"
|
PATH = "/groups/(?P<group_id>[^/]*)/profile$"
|
||||||
|
|
||||||
|
@ -626,6 +626,18 @@ class FederationGroupsProfileServlet(BaseFederationServlet):
|
||||||
|
|
||||||
defer.returnValue((200, new_content))
|
defer.returnValue((200, new_content))
|
||||||
|
|
||||||
|
@defer.inlineCallbacks
|
||||||
|
def on_POST(self, origin, content, query, group_id):
|
||||||
|
requester_user_id = parse_string_from_args(query, "requester_user_id")
|
||||||
|
if get_domain_from_id(requester_user_id) != origin:
|
||||||
|
raise SynapseError(403, "requester_user_id doesn't match origin")
|
||||||
|
|
||||||
|
new_content = yield self.handler.update_group_profile(
|
||||||
|
group_id, requester_user_id, content
|
||||||
|
)
|
||||||
|
|
||||||
|
defer.returnValue((200, new_content))
|
||||||
|
|
||||||
|
|
||||||
class FederationGroupsSummaryServlet(BaseFederationServlet):
|
class FederationGroupsSummaryServlet(BaseFederationServlet):
|
||||||
PATH = "/groups/(?P<group_id>[^/]*)/summary$"
|
PATH = "/groups/(?P<group_id>[^/]*)/summary$"
|
||||||
|
@ -642,18 +654,6 @@ class FederationGroupsSummaryServlet(BaseFederationServlet):
|
||||||
|
|
||||||
defer.returnValue((200, new_content))
|
defer.returnValue((200, new_content))
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
|
||||||
def on_POST(self, origin, content, query, group_id):
|
|
||||||
requester_user_id = parse_string_from_args(query, "requester_user_id")
|
|
||||||
if get_domain_from_id(requester_user_id) != origin:
|
|
||||||
raise SynapseError(403, "requester_user_id doesn't match origin")
|
|
||||||
|
|
||||||
new_content = yield self.handler.update_group_profile(
|
|
||||||
group_id, requester_user_id, content
|
|
||||||
)
|
|
||||||
|
|
||||||
defer.returnValue((200, new_content))
|
|
||||||
|
|
||||||
|
|
||||||
class FederationGroupsRoomsServlet(BaseFederationServlet):
|
class FederationGroupsRoomsServlet(BaseFederationServlet):
|
||||||
"""Get the rooms in a group on behalf of a user
|
"""Get the rooms in a group on behalf of a user
|
||||||
|
|
Loading…
Reference in a new issue