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 1e68a898d5..8f3c14c303 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))
|