diff options
Diffstat (limited to 'synapse/federation')
-rw-r--r-- | synapse/federation/transport/client.py | 20 | ||||
-rw-r--r-- | synapse/federation/transport/server.py | 22 |
2 files changed, 31 insertions, 11 deletions
diff --git a/synapse/federation/transport/client.py b/synapse/federation/transport/client.py index 125d8f3598..d25ae1b282 100644 --- a/synapse/federation/transport/client.py +++ b/synapse/federation/transport/client.py @@ -486,6 +486,26 @@ class TransportLayerClient(object): ) @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 def get_group_summary(self, destination, group_id, requester_user_id): """Get a group summary """ diff --git a/synapse/federation/transport/server.py b/synapse/federation/transport/server.py index f0778c65c5..8e08321fe8 100644 --- a/synapse/federation/transport/server.py +++ b/synapse/federation/transport/server.py @@ -610,7 +610,7 @@ class FederationVersionServlet(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$" @@ -626,30 +626,30 @@ class FederationGroupsProfileServlet(BaseFederationServlet): defer.returnValue((200, new_content)) - -class FederationGroupsSummaryServlet(BaseFederationServlet): - PATH = "/groups/(?P<group_id>[^/]*)/summary$" - @defer.inlineCallbacks - def on_GET(self, origin, content, query, group_id): + 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.get_group_summary( - group_id, requester_user_id + new_content = yield self.handler.update_group_profile( + group_id, requester_user_id, content ) defer.returnValue((200, new_content)) + +class FederationGroupsSummaryServlet(BaseFederationServlet): + PATH = "/groups/(?P<group_id>[^/]*)/summary$" + @defer.inlineCallbacks - def on_POST(self, origin, content, query, group_id): + def on_GET(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 + new_content = yield self.handler.get_group_summary( + group_id, requester_user_id ) defer.returnValue((200, new_content)) |